Как видим, команды GRANT и REVOKE являются универсальными, а сама система присвоения и отмены привилегий – очень гибкой. Новой роли можно присвоить как конкретные привилегии, так и другие роли. Например, команда:
GRANT connect, resource TO student
присвоит роли student две стандартные роли, которые имеются во всех версиях Oracle – роль connect позволяет подключаться к базе данных, а роль resource позволяет создавать некоторые объекты в своей схеме (таблицы, индексы, представления, хранимый код). Если в целях успешного обучения пользователя с ролью student ему необходимо предоставить все права администратора, это можно сделать при помощи команды:
GRANT dba TO student
Такую роль уже не стыдно присвоить успешному студенту, допустим, ранее созданному при помощи команды CREATE USER user1 ..
GRANT student TO user1
Однако, в реально функционирующих информационных системах использование стандартных ролей Oracle часто нежелательно, поскольку некоторые пользователи могут получить избыточные привилегии, при этом не получить какие-то нужные им специфические права. Поэтому проанализируем множество существующих привилегий, чтобы понять логику их присвоения пользователям и ролям.
Как известно, основными составными частями языка SQL являются DDL и DML. В соответствии с этим выделяют две больших группы привилегий – системные и объектные.