Реалізація інструкції GRANT в системі Oracle підтримує величезну кількість варіантів і змін. Синтаксис її наступний.
[Роль] [...]> [ON
[JAVA [] [імя_схеми.] [Об'єкт]> ТО
[WITH OPTION] [IDENTIFIED BY пароль] [WIТН ADMIN OPTION];
Ви можете привласнювати кілька привілеїв в одній інструкції, але ці привілеї повинні ставитися до одного типу (об'єктні, системні або рольові).
Наприклад, ви можете надати користувачеві три об'єктні привілеї в одній таблиці за допомогою однієї інструкції GRANT, потім за допомогою окремої інструкції призначити дві системні привілеї який-небудь ролі, а в третій інструкції привласнити користувачеві кілька ролей, але не можна зробити все це в одній інструкції GRANT .
Нижче наводяться параметри інструкції GRANT платформи Oracle.
Привілеї для доступу до зазначеного об'єкту схеми (наприклад, таблиці або поданням) присвоюються зазначеному одержувачу (імя_получателя) або ролі. Ви можете об'єднувати в одній інструкції кілька об'єктних привілеїв, об'єктів схеми або одержувачів. Однак ви не можете об'єднувати в одній інструкції привласнення системних привілеїв чи ролей з присвоєнням об'єктних привілеїв. Існують наступні об'єктні привілеї.
Присвоюються всі доступні привілеї доступу до об'єкта схеми. Можна застосовувати до таблиць.
Надається право змінювати існуючу таблицю за допомогою інструкції ALTER TABLE. Можна застосовувати до таблиць і послідовностей.
Надається право звертатися до таблиці за допомогою відладчика. Цей доступ можна застосувати до будь триггерам таблиці і будь-якої інформації про код SQL, які безпосередньо використовують таблиці. Можна застосовувати до таблиць, уявленням, процедурам, функцій, пакетам, об'єктам Java і типами.
Надається право запускати збережену процедуру, призначену для користувача функцію або пакет. Можна застосовувати до процедур, функцій, пакетам, об'єктам Java, бібліотекам, типам, індексним типам і призначеним для користувача операторам.
Надається право створювати індекси по таблиці.
(ON COMMIT REFRESH QUERY REWRITE>
Надається привілей створювати матеріалізовані уявлення, які оновлюються після транзакції (refresh-on-commit), або створювати матеріалізоване уявлення для переписування запитів до зазначеної таблиці. Застосовується тільки до матеріалізованим уявленням.
Надається право визначати обмеження, що забезпечують кількість посилань цілісність. Можна використовувати в таблицях.
(SELECT | INSERT | UPDATE DELETE>
Надається право виконувати відповідні команди SQL стосовно до зазначеного об'єкту схеми. Можна використовувати в таблицях, представлених, послідовності (тільки SELECT) і матеріалізованих уявленнях (тільки SELECT). Відзначте, що ви повинні надати привілей SELECT тому користувачеві або ролі, якому потрібно привілей DELETE. Ви можете призначати привілеї на рівні стовпців, включивши в інструкцію, після імені об'єкта, укладений в дужки список стовпців. Це можливо тільки при наданні об'єктних привілеїв INSERT, REFERENCES або UPDATE в таблиці або поданні.
Надається право створювати уявлення-нащадки зазначеного подання. Використовується тільки з уявленнями і типами.
Зазначена системна привілей Oracle призначається одному або декільком користувачам або ролям. Наприклад, ви можете надавати такі привілеї, як CREATE TRIGGER або ALTER USER. В обох випадках надання системної привілеї наділяє користувача або роль правом виконувати команду з відповідним ім'ям. Повний список системних привілеїв наводиться в 3.2 нижче в цьому розділі.
Роль призначається користувачу або іншій ролі. Крім користувальницьких ролей існує кілька готових системних ролей, що поставляються з Oracle.
CONNECT, RESOURCE і DBA
Пропонуються для забезпечення сумісності з попередніми версіями Oracle.
Не використовуйте ці ролі в поточній і новіших версіях Oracle, оскільки в майбутньому їх підтримка може бути припинена.
DELETEJOA TALOGJROLE, EXECUTEJJA TALOGJROLE і SELECT_СА TALOGJ.OLE
Користувачі, яким присвоєно ця роль, можуть видаляти, виконувати і відбирати дані з словникових уявлень і пакетів.
EXP_FULL_DATABASE і IMP_FULL_DATABASE
Користувачі, яким присвоєно ця роль, можуть запускати утиліти імпорту та експорту.
AQJJSERJROLE і AQ_ADMINISTRATORJROLE
Користувачі, яким присвоєно ця роль, можуть використовувати або адмініструвати таку функціональність Oracle, як Advanced Queuing.
Присвоюється тільки Oracle Enterprise Manager і Intelligent Agent.
RECOVERY_CATA LOGO WNER
Надається привілей створювати користувачів, які володіють власним каталогом відновлення.
Надається привілей звертатися до областям словників даних, які використовуються для підтримки гетерогенних служб Oracle.
Користувачеві або ролі надається привілей доступу до об'єкта схеми. До об'єктів бази даних відносяться: таблиці, уявлення, послідовності, збережені процедури, призначені для користувача функції, пакети, матеріалізовані уявлення, призначені для користувача типи, бібліотеки, індексні типи, призначені для користувача оператори або синоніми всіх цих об'єктів. Якщо ім'я схеми не буде вказано, буде матися на увазі схема поточного користувача. Платформа Oracle також підтримує два ключових слова для особливих випадків.
Надаються права доступу до об'єкта-директорії, який являє собою об'єкт Oracle, відповідний директорії в файловій системі.
Надаються привілеї доступу до Java-об'єктів схеми SOURCE і RESOURCE.
Вказується користувач або роль, яка отримує цю привілей. Ключове слово PUBLIC також можна використовувати при скасуванні привілеї, призначеної для ролі PUBLIC. Можна через кому перерахувати декількох одержувачів привілеї.
Дозволяє одержувачеві привілеї призначати ці привілеї іншим користувачам або ролі PUBLIC, але ніяким іншим ролям.
WITH HIERARCHY OPTION
Дозволяє одержувачеві привілеї в об'єкті-батьку отримати ці привілеї у всіх об'єктах-нащадках. Це стосується і всіх нащадків, які будуть створені в майбутньому. Ви можете використовувати цю опцію тільки при призначенні об'єктної привілеї SELECT.
IDENTIFIED BY пароль [WITH ADMIN OPTION]
Встановлюється або змінюється пароль, який одержувач привілеї повинен використовувати, щоб йому була надана роль.
Призначення привілеїв користувачам вступає в силу негайно. Призначення ролей вступає в силу негайно, якщо роль задіяна. В іншому випадку призначення набуває чинності після включення ролі. Зверніть увагу, що ролі можна призначати користувачам та іншим ролям (в тому числі PUBLIC). приклад:
GRANT sales_reader ТО salesjnanager;
Щоб надавати привілеї доступу до подання, ви повинні мати в базових таблицях уявлення дані привілеї, із зазначенням пропозиції WITH GRANT OPTION.
Якщо ви захочете надати привілеї всім користувачам, просто призначте ці привілеї ролі PUBLIC.
GRANT SELECT ON work_schedule TO public;
Проте існують певні обмеження в наданні системних привілеїв і ролей.
- Привілей або роль не повинна зустрічатися в інструкції GRANT більше одного разу.
- Роль не можна призначити самій собі.
- Ролі не можуть призначатися рекурсивно, тобто не можна призначити роль sales_reader ролі sales_manager, а потім привласнити роль sales_manager ролі sales_reader.
Ви можете привласнювати кілька однотипних привілеїв в одній інструкції GRANT. Однак ці привілеї повинні ставитися до об'єктів одного типу.
GRANT UPDATE (emp_id, job_id), REFERENCES (emp_id)
Як відступ, надання будь-яких об'єктних привілеїв доступу до таблиці дозволяє користувачеві (або ролі) блокувати таблицю будь-яким режимом блокування, використовуючи інструкцію Oracle LOCK TABLE.
Майже всі підтримувані Oracle функціональності і команди можуть призначатися у вигляді привілеїв в інструкції GRANT (як це показує 3.2). Привілеї можна призначати не тільки стосовно до об'єктів бази даних (таким, як таблиці та подання) і системним командам (таким, як CREATE ANY TABLE), але також і до об'єктів схем (таким, як DIRECTORY, JAVA SOURCE і RESOURCE).
Параметр ANY, показаний в 3.2, надає права виконання даної інструкції стосовно об'єктів зазначеного типу, що належить будь-якому користувачеві в схемі. Без опції ANY користувач зможе застосовувати інструкції тільки до об'єктів у своїй власній схемі. Більш повний список системних привілеїв Oracle наведено в 3.2.
Всі привілеї, показані в 3.2 і містять ключове слово ANY, мають особливе значення. Зокрема, ключове слово ANY дає користувачам право виконувати зазначену операцію в будь-якій схемі. Якщо ви хочете включити сюди всі призначені для користувача схеми, але виключити схему SYS, встановіть ініціалізації параметр 07 DICTIONARY ACCESSIBILITY ь заданий для нього за умовчанням значення FALSE.
Додаткова інформація по темі
Деякі поради і методи використання інструкції INSERT в базах даних на платформі Oracle