Роль RESOURCE
почти наверняка содержит больше привилегий, чем вы на самом деле хотите предоставить пользователю, и она, вероятно, не включает ряд привилегий, которые вы действительно хотите предоставить. Таким образом, вы обычно никогда не предоставляете пользователям роль RESOURCE
в производственной системе. Вместо этого вы должны создать роли, соответствующие вашей среде (например, DEVELOPER_ROLE
, ANALYST_ROLE
и т. Д.), Предоставить соответствующие привилегии этим ролям, а затем предоставить эти роли соответствующим пользователям.
Единственный момент, когда имеет значение, была ли привилегия предоставлена непосредственно пользователю или через роль, - это если пользователь пытается использовать привилегию с помощью хранимой процедуры. Если мне предоставлена привилегия CREATE TABLE
через роль, я могу интерактивно создавать все нужные мне таблицы. Но если я попытаюсь написать хранимую процедуру, которая создает таблицу с использованием динамического SQL, я получу ошибку. Поскольку вы никогда не хотите, чтобы разработчики создавали объекты во время выполнения, это, как правило, не является проблемой. Однако если вы действительно хотели бы разрешить это, вам бы пришлось предоставить владельцу процедуры привилегию CREATE TABLE
напрямую.