#oracle10g
#oracle10g
Вопрос:
В чем разница между предоставлением таких ролей, как CREATE TABLE, CREATE TRIGGER, CREATE PROCEDURE
пользователю напрямую и через ресурс роли. Хорошо ли предоставлять эти роли через ресурс или непосредственно в пользовательской схеме?
Ответ №1:
RESOURCE
Роль почти наверняка содержит больше привилегий, чем вы на самом деле хотите предоставить пользователю, и она, вероятно, не включает в себя ряд привилегий, которые вы хотите предоставить. Таким образом, вы обычно никогда не предоставляете пользователям RESOURCE
роль в производственной системе. Вместо этого вы должны создать роли, соответствующие вашей среде (т.Е. DEVELOPER_ROLE
, an ANALYST_ROLE
и т.д.), Предоставить соответствующие привилегии этим ролям, а затем предоставить эти роли соответствующим пользователям.
Единственный случай, когда имеет значение, была ли привилегия предоставлена непосредственно пользователю или через роль, — это если пользователь пытается воспользоваться привилегией с помощью хранимой процедуры. Если мне была предоставлена CREATE TABLE
привилегия через роль, я могу создавать все таблицы, которые я хочу, в интерактивном режиме. Но если я попытаюсь написать хранимую процедуру, которая создает таблицу с использованием динамического SQL, я получу сообщение об ошибке. Однако, поскольку вы никогда не хотите, чтобы разработчики создавали объекты во время выполнения, обычно это не проблема. Однако, если вы действительно хотите разрешить это, вам пришлось бы предоставить владельцу процедуры CREATE TABLE
привилегию напрямую.