Не может быть сделано.В Oracle привилегии предоставляются для определенных объектов, если только вы не обладаете мощными привилегиями ANY, которые предоставляют доступ к любому объекту в любой схеме.
Это одна из тех вещей, которая кажется довольно раздражающей, но на самом деле вполне обоснованной.Нет веских коммерческих оснований для предоставления привилегий всем объектам в массивной схеме.Либо
- второй схеме действительно требуется только подмножество привилегий для подмножества объектов;или
- вторая схема совершенно не нужна.
Теперь может оказаться, что подмножество в первом экземпляре является очень большим подмножеством.Но лень - не оправдание плохой практики безопасности.
Что мы можем сделать, это сгенерировать операторы предоставления из словаря данных:
select 'grant select on '||table_name||' to B'
from user_tables
/
(для сценария, запускаемого пользователем A).
Это все ещелучше, чем предоставление привилегий для схемы, потому что это означает, что, по крайней мере, любой новый объект, добавленный пользователем A, не будет автоматически распространяться на B без дополнительного действия и, следовательно, без каких-либо дополнительных размышлений относительно того, является ли это целесообразным.