Oracle дать пользователю права на чтение таблицы. Системные привилегии. Поддержка национальных языков

Системные привилегии

Наименование Назначение
ANALYZE ANY Позволяет анализировать любые таблицы, кластеры или индексы в любой схеме
AUDIT ANY Позволяет протоколировать любой объект в любой схеме
TRUNCATE ANY Позволяет удалить все строки любой таблицы или кластера в любой схеме
CREATE CLUSTER Позволяет создать кластер в собственной схеме
ALTER ANY CLUSTER Позволяет изменить любой кластер в любой схеме
CREATE ANY CLUSTER Позволяет создать кластер в любой схеме
DROP ANY CLUSTER Позволяет удалить любой кластер в любой схеме
ALTER DATABASE Позволяет изменить базу данных
CREATE DATABASE LINK Позволяет создать личный канал доступа в собственной схеме
CREATE PUBLIC DATABASE LINK Позволяет создать общий канал доступа
DROP PUBLIC DATABASE LINK Позволяет удалить общий канал доступа
CREATE INDEX Позволяет создать индекс в собственной схеме для любой таблицы этой схемы
ALTER ANY INDEX Позволяет изменить индекс в любой схеме
CREATE ANY INDEX Позволяет создать индекс в любой схеме для любой таблицы любой схемы
DROP ANY INDEX Позволяет удалить любой индекс в любой схеме
CREATE PROCEDURE Позволяет создать хранимые процедуры, функции и пакеты в собственной схеме
ALTER ANY PROCEDURE Позволяет изменить любую хранимую процедуру, функцию и пакет в любой схеме
CREATE ANY PROCEDURE Позволяет создать хранимые процедуры, функции и пакеты в любой схеме
DROP ANY PROCEDURE Позволяет удалить хранимые процедуры, функции и пакеты в любой схеме
EXECUTE ANY PROCEDURE Позволяет выполнить любую хранимую процедуру, функцию и пакет или ссылку на общую переменную пакета в любой схеме
CRANT ANY PRIVILEGE Позволяет выдать системные привилегии, даже если вы ими не обладаете
ALTER PROFILE Позволяет изменить любой профиль в базе данных
CREATE PROFILE Позволяет создать профиль
DROP PROFILE Позволяет удалить любой профиль в базе данных
ALTER RESOURCE COST Позволяет задать стоимости ресурсов сеанса
CREATE ROLE Позволяет создать роли
ALTER ANY ROLE Позволяет изменить любую роль в базе данных
DROP ANY ROLE Позволяет удалить любую роль в базе данных
GRANT ANY ROLE Позволяет предоставить любую роль в базе данных
ALTER ROLLBACK SEGMENT Позволяет изменить сегмент отката
CREATE ROLLBACK SEGMENT Позволяет создать сегмент отката
ROP ROLLBACK SEGMENT Позволяет удалить сегмент отката
ALTER SESSION Позволяет изменить параметры текущего сеанса работы: средства трассировки SQL, национальный язык или канал связи базы данных
CREATE SESSION Позволяет соединиться с базой данных
RESTRICTED SESSION Позволяет войти после запуска базы данных с параметром STARTUP RESTRICT
CREATE SEQUENCE Позволяет создать последовательность в собственной схеме
ALTER ANY SEQUENCE Позволяет изменить любую последовательность в любой схеме
CREATE ANY SEQUENCE Позволяет создать последовательность в любой схеме
DROP ANY SEQUENCE Позволяет удалить любую последовательность в любой схеме
SELECT ANY SEQUNCE Позволяет обратиться к любой последовательности в любой схеме
CREATE SNAPSHOT Позволяет создать моментальную копию в собственной схеме. Требует привилегии CREATE TABLE
ALTER ANY SNAPSHOT Позволяет изменить любую моментальную копию в любой схеме
CREATE ANY SNAPSHOT Позволяет создать моментальную копию в любой схеме. Требует привилегии CREATE ANY TABLE
DROP ANY SNAPSHOT Позволяет удалить любую моментальную копию в любой схеме
CREATE SYNONYM Позволяет создавать синоним в собственной схеме
CREATE ANY SYNONYM Позволяет создать синоним в любой схеме
DROP ANY SYNONIM Позволяет удалить любой синоним в любой схеме, кроме общих синонимов
CREATE PUBLIC SYNONYM Позволяет создать общий синоним
DROP PUBLIC SYNONYM Позволяет удалить общий синоним
AUDIT SYSTEM Позволяет протоколировать системные события
ALTER SYSTEM Позволяет изменить параметры системы: ограничения ресурсов, процессы разделяемого сервера или процессы диспетчера, группы журнальных файлов, контрольные точки, распределенное восстановление, проверку доступа к файлам
CREATE TABLE Позволят создавать таблицу в собственной схеме. Требует привилегии UNLIMITED TABLESPACE или квоту в табличном пространстве
ALTER ANY TABLE Позволяет изменить любую таблицу в любой схеме
BACKUP ANY TABLE Позволяет использовать утилиту Export для экспорта любой таблицы в любой схеме
COMMENT ANY TABLE Позволяет комментировать любую таблицу или столбец в любой схеме
CREATE ANY TABLE Позволяет создать любую таблицу в любой схеме
DELETE ANY TABLE Позволяет удалить строки любой таблицы, представления или моментальной копии в любой схеме
DROP ANY TABLE Позволяет удалить любую таблицу в любой схеме
INSERT ANY TABLE Позволяет добавить строки в любую таблицу, представление или моментальную копию в любой схеме
LOCK ANY TABLE Позволяет блокировать любую таблицу в любой схеме
SELECT ANY TABLE Позволяет сделать запрос из любой таблицы представления или моментальной копии в любой схеме
UPDATE ANY TABLE Позволяет изменить строки любой таблицы, представления или моментальной копии в любой схеме
ALTER TABLESPACE Позволяет изменить табличное пространство
CREATE TABLESPACE Позволяет создать табличное пространство
DROP TABLESPACE Позволяет удалить табличное пространство
MANAGE TABLESPACE Позволяет переводить табличное пространство в автономный и оперативный режимы, а также начинать и завершать спасение табличного пространства
UNLIMITED TABLESPACE Позволяет использовать неограниченное количество любого табличного пространства
CREATE TRIGGER Позволяет создать триггер в собственной схеме
ALTER ANY TRIGGER Позволяет разрешить, запретить или откомпилировать любой триггер в любой схеме
CERATE ANY TRIGGER Позволяет создать триггер в любой схеме, связанный с любой таблицей любой схемы
DROP ANY TRIGGER Позволяет удалить любой триггер в любой схеме
ALTER USER Позволяет изменить у других пользователей пароль, табличные пространства и квоты, присвоить профили и роли, назначенные по умолчанию
BECOME USER Позволяет стать другим пользователем. Используется программой Import при загрузке данных в схему другого пользователя
CREATE USER Позволяет создать пользователей, установить квоты в любом табличном пространстве, установить табличное пространство по умолчанию и временное табличное пространство, присвоить профили
DROP USER Позволяет удалить другого пользователя
CREATE VIEW Позволяет создать представление в собственной схеме
CREATE ANY VIEW Позволяет создать представление в любой схеме
DROP ANY VIEW Позволяет удалить любое представление в любой схеме

Объектные привилегии

Наименовнаие Назначение
ALL Выдаются все привилегии для данного объекта
ALL PRIVILEGES То же что и ALL
ALTER Позволяет изменить определение
DELETE Позволяет удалить строки
EXECUTE Позволяет выполнить объект, а также осуществлять доступ к его переменным
INDEX Позволяет создавать индекс
INSERT Позволяет добавлять строки
REFERENCES Позволяет создавать ограничение, которое ссылается на таблицу. Эту привилегию нельзя предоставлять роли
SELECT Позволяет осуществлять запрос
UPDATE Позволяет изменять строки

Соответствие между объектами быза данных и привелегиями.

Наименование привилегии Таблицы Представления Последова-
тельности
Процедуры Функции Пакеты Моментальные копии
ALTER Х Х
DELETE Х Х
EXECUTE Х
INDEX Х
INSERT Х Х
REFERENCES Х
SELECT Х Х Х Х
UPDATE Х Х Х

Пользователи и роли.

Роль - тип объекта, который используется, для упрощения управления привилегиями системного и объектного уровня. Вместо того, чтобы назначать привилегии непосредственно учетным разделам пользователей, можно назначать привилегии ролям, которые затем назначаются пользователям.

Роли , по существу, - группы привилегий системного и объектного уровня. Они делают управление привилегиями намного проще, так как можно один раз сконфигурировать привилегии для отдельных типов пользователей и затем назначать эти привилегии ролям. Когда пользователь нуждается в какой-то группе привилегий, можно использовать единственную команду назначения роли, чтобы удовлетворить этого пользователя. Без ролей пришлось бы вводить по несколько команд для каждой из требуемых привилегий.

Кроме того, можно создавать различные роли с привилегиями, даже если еще нет учетных разделов пользователей Oracle, которые нуждаются в этих ролях. Можно назначать роль другой роли, формируя их иерархию. Также можно защитить роль паролем, который пользователь должен ввести для активизации роли.

Как уже говорилось, физическая база данных может содержать много учетных разделов пользователей Oracle, которые защищены паролями. Вы должны ввести имя пользователя и пароль независимо от того, какой инструмент вы используете, для получения доступа к базе данных. Роли - это не то же самое, что пользователи Oracle; вы не можете соединяться с базой данных, вводя имя роли и пароль.

Протоколирование (аудит).

Механизм протоколирования Oracle обеспечивает три типа протоколов.

  1. Протокол привилегий прослеживает, какие системные привилегии используются.
  2. Протокол операторов отслеживает, какие операторы SQL используются для всех объектов.
  3. Протокол объектного уровня контролирует доступ к объектам.

Вы можете запустить эти протоколы, чтобы проследить, когда операторы отрабатываются успешно и когда они терпят неудачу. Вы можете использовать протоколирование, чтобы отследить любую попытку вторжения в систему.

Кроме того, можно устанавливать, что записывается в протокол. Может записываться один элемент на операцию независимо от того, сколько попыток выполнить операции было сделано в течение сеанса соединения. Или, альтернативно, записывается один элемент протокола для каждой попытки (успешной или нет) операции в течение сеанса.

Информация протокола хранится в таблице словаря данных, которая содержит протоколируемую операцию, идентификатор пользователя, выполняющего операцию, дату и время операции. Oracle обеспечивает набор представлений словаря данных, чтобы сделать информацию в таблице протокола более читабельной. Вставленные в протокол строки продолжают храниться, даже если пользователь отменяет транзакцию.

Администратор базы данных может периодически очищать или архивировать протокол.

2.3.5. Поддержка национальных языков

Средство поддержки национальных языков Oracle (National Language Support - NLS) позволяет пользователям использовать базу данных на их собственных языках. Это средство обеспечивает следующие функции:

  1. Поддержка различных схем кодирования, т.е. данные, созданные в схеме кодирования на одной машине, могут быть обработаны и представлены на другой.
  2. Управление языком вывода ошибок сервера и информационных сообщений, чисел, дат, форматов валюты и начального дня недели.
  3. Поддержка лингвистической сортировки гарантирует, что символы появляются в корректном порядке.

Можно добавлять поддержку для новых языков, используя программный продукт NLS*WorkBench, который, по существу, поддерживает таблицы перевода для интерпретации ввода от пользователя и для вывода на экран результатов.

Когда в поставку прикладной системы входят приложения на различных языках, наиболее важной частью пользовательского интерфейса являются различные подсказки, библиотека стандартных текстов и сообщения приложения. В настоящее время непосредственно разработчики приложения определяют, как библиотека стандартных текстов, подсказки и сообщения прикладной системы изменяются от одного языка к другому. Oracle работает над программным продуктом автоматического перевода с целью упрощения решения этой задачи.

Аутентификация пользователей

Аутентификация (authentication) означает проверку идентичности кого-то или чего-то (пользователя, устройства и других объектов), кто хочет использовать данные, ресурсы или приложения. Она производится для установления доверительного отношения (trust relationship) перед дальнейшим взаимодействием. Кроме того, аутентификация предоставляет возможность идентификации, позволяя связывать доступ и действия со определенными личностями (identities). После аутентификации процесс авторизации (authorization) может предоставить или ограничить уровни доступа и действия, разрешенные данному объекту.

При создании пользователя необходимо решить, какой метод аутентификации будет использоваться. Этот метод позднее может быть изменен.

Password (метод аутентификации с использованием пароля)

Этот метод также принято называть аутентификацией, выполняемой базой данных Oracle, в которой каждый пользователь создается вместе с паролем. Этот пароль должен указываться пользователем при попытке установления соединения. Когда администратор назначает пароль, он должен сразу же установить для него истечение срока годности (expire). Это заставит пользователя изменить пароль при первом соединении. Однако при этом необходимо позаботиться о том, чтобы пользователь имел возможность изменить пароль. Некоторые приложения не позволяют это сделать.

Пароль всегда автоматически и прозрачно шифруется при установлении сетевого соединения (в архитектуре клиент/сервер и сервер/сервер). Для шифрования пароля перед передачей его по сети применяется модифицированный алгоритм DES (Data Encryption Standard).

External (метод внешней аутентификации)

Этот метод также принято называть аутентификацией, выполняемой на уровне операционной системы. При использовании этого метода пользователи могут соединяться с Oracle более просто, без указания имени и пароля. База данных полагается на операционную систему или на службу сетевой аутентификации, когда ограничивает доступ к учетным записям пользователей БД. Пароль базы данных не используется при этом виде установления соединения. Этот метод аутентификации может использоваться, если это позволяет сделать операционная система или сетевая служба. Когда такое возможно, установите в параметре инициализации OS_AUTHENT_PREFIX значение префикса, используемого в именах пользователей Oracle. Этот префикс Oracle подставляет к началу наименования учетной записи каждого пользователя операционной системы. По умолчанию значение параметра - OPS$, что обеспечивает совместимость с предыдущими версиями сервера Oracle. Когда пользователь ОС пытается подсоединиться, Oracle соединяет префикс с именем пользователя в ОС, а затем сопоставляет полученную строку с именами пользователей в базе данных.

Например, предположим, что значение параметра следующее:
OS_AUTHENT_PREFIX=OPS$

Когда пользователь операционной системы с именем tsmith подсоединяется к базе данных Oracle и аутентифицируется на уровне ОС, Oracle проверяет, что в базе данных есть соответствующий пользователь OPS$tsmith и, если это так, разрешает соединение пользователя. При всех ссылках на пользователя, аутентифицируемого на уровне операционной системы, необходимо указывать префикс (OPS$tsmith).

Примечание: текстовое значение параметра OS_AUTHENT_PREFIX в некоторых ОС зависит от регистра символов. Дополнительную информацию об этом параметре см. в документации Oracle, относящейся к конкретной ОС.

Global (метод глобальной аутентификации)

Это строгая аутентификация, проводимая с помощью опции Oracle Advanced Security. Глобальная аутентификация позволяет идентифицировать пользователей биометрически, на основе сертификатов х509, маркерных устройств (token devices) и с помощью Oracle Internet Directory. Дополнительная информация об этих усовершенствованных методах аутентификации рассматривается в курсе Oracle Enterprise Identity Management.

С помощью команд управления данными можно управлять доступом пользователей к базе данных.

Команда GRANT используется для назначения привилегий пользователям.

Синтаксискоманды GRANT :

Синтаксис команды GRANT

  • system_priv - системная привилегия
  • role - роль: набор соответствующих полномочий, которые администратор может коллективно предоставлять пользователям и другим ролям.
  • user - пользователь
  • PUBLIC - привилегия передается всем пользователям
  • WITH ADMIN OPTION -если предоставлены системные полномочия или роли, то параметр позволяет пользователю передать полномочие или роль другим пользователям или ролям

Пример 1

Предположим, пользователь Р1 является владельцем таблицы Student и нужно передать пользователю Р2 право на формулирование запросов к этой таблице:

GRANT SELECT ON Student TO P2;

Пример 2

Для передачи прав на другие привилегии синтаксис тот же самый. Пользователь Р1, являющийся владельцем таблицы Student, может разрешить пользователю Р2 вводить строки в нее:

GRANT INSERT ON Student TO P2;

Пример 3

Передача привилегий не ограничивается передачей единственной привилегии единственному пользователю с помощью одной команды GRANT . Допустимы списки привилегий и/или пользователей с элементами, разделенными запятыми:

GRANT SELECT, INSERT ON Student TO P2;

GRANT SELECT, INSERT ON Student TO P2, Р3;

Пример 4

Можно разрешить пользователю изменять значения любого или всех столбцов таблицы:

GRANT UPDATE ON Student TO P2;

GRANT UPDATE (Fam,Ball) ON Student TO P2;

Пример 5

Если необходимо предоставить кому-то все полномочия на конкретный объект, используется ключевое слово ALL:

GRANT ALL ON Student ТО Р2;

Пример 6

Когда передаются привилегии с атрибутом PUBLIC , который относится к пользователям, а не к привилегиям, то все пользователи получают их автоматически. Чаще всего это применяется для привилегии SELECT для определенных таблиц или представлений, которые нужно предоставить каждому пользователю для рассмотрения. Разрешить каждому пользователю просматривать таблицу Student можно следующей командой:

GRANT SELECT ON Student TO PUBLIC ;

Пример 7.

Иногда создатель таблицы хочет, чтобы другие пользователи имели право передавать привилегии на эту таблицу. Это можно сделать с помощью предложения WITH GRANT OPTION . Если пользователь Р1 желает, чтобы пользователь Р2 имел право передавать полномочия на работу с таблицей Student другим пользователям, то он должен передать пользователю Р2 привилегию на выполнение соответствующих команд:

GRANT SELECT, INSERT ON Student ТО Р2 WITH GRANT OPTION ;

В предыдущем посте в п. 2 я писал как исправить проблемы с некорректно установленным Oracle"ом. Как оказалось, то что я написал не полностью решает проблему, по-этому я его снес и установил заново уже под локальной учетной записью. Теперь все работает как надо и можно продолжить изучение.

При установке Oracle по умолчанию создаются два пользователя/схемы - SYS и SYSTEM . Я написал "пользователя/схемы" потому, что при создании нового пользователя для него создается одноименная схема. Не сразу понятно чем понятие "пользователь" отличается от понятия "схема". Чтобы понять представьте пользователя Windows (Unix). Пользователь имеет имя ИмяПользователя и принадлежащую ему папку - C:\Users\ИмяПользователя (/home/ИмяПользователя ). Так вот пользователь Oracle аналогичен пользователю Windows, а схема - аналогична папке пользователя. Точно так же как у пользователя Windows, у пользователя Oracle есть набор прав. Так же как папка пользователя Windows содержит различные файлы, также и схема Oracle содержит различные объекты - таблицы, последовательности, триггеры и др. Если продолжать аналогию, то пользователей SYS и SYSTEM можно считать Администратором Windows или root-пользователем Unix. Они имеют неограниченные права. И работать под ними не рекомендуется. По-этому сначала нужно создать еще одного пользователя.

1. Создание пользователя и предоставление ему прав

Создадим пользователя, например fiftin :
CREATE USER fiftin IDENTIFIED BY 123456; Мы создали пользователя fiftin с паролем 123456 . Он не имеет абсолютно никаких прав. Вы даже не сможете под ним зайти:
SQL> connect fiftin Enter password: ERROR: ORA-01045: user FIFTIN lacks CREATE SESSION privilege; logon denied Для наделения пользователя правами существует команда GRANT . Например дадим права пользователю fiftin на вход:
GRANT CREATE SESSION TO fiftin; Если теперь вы попробуете подключиться как пользователь fiftin у вас это получится. Но это все что разрешено пользователю fiftin. Наделим пользователя правами администратора:
GRANT dba TO fiftin WITH ADMIN OPTION; Теперь вы можете подцепиться к БД под fiftin"ом как админ:
connect fiftin/fiftin Создадим таблицу:
CREATE TABLE table1(id INT, column1 INT); Вставим данные:
INSERT INTO table1(id, column1) VALUES (0, 1)

2. Права на создание таблиц

Создадим еще одного пользователя - test:
CREATE USER test IDENTIFIED BY 123; Дадим ему права:
GRANT create session, create table TO test; Теперь пользователь test может подключаться и создавать таблицы. Попробуем создать таблицу (не забудьте зайти под test"ом):
CREATE TABLE tbl_test(id int, column1 INT); Получаем ошибку:
ORA-01950: no privileges on tablespace "SYSTEM" Почему так? Оказывается для того чтобы обычный пользователь (не админ) мог что-либо создать в БД, ему нужно выделить для этого место. Зайдем снова под fiftin"ом и выполним команду:
ALTER USER test QUOTA 50m ON system; Этой командой мы выделяем пользователю test 50Мб под его нужды. Попробуйте теперь зайти под пользователем test и создать таблицу и у вас получится.

3. Права на доступ к таблицам из другой схемы

Теперь предположим что пользователь test должен брать данные из таблицы table1t. По-идее для этого нужно вызвать команду:
SELECT * FROM table1; Но это не работает. Все потому, что таблица table1 находится в схеме fiftin и пользователь test её не видит (test видит таблицы только в своей схеме). Чтобы test увидел таблицу table1 нужно явно указать что она находится в схеме test - fiftin.table1. Но если вы сейчас попробуете обратиться к таблице fiftin.table1 вы её все равно не увидите. Потому что у пользователя test нет прав на доступ к данным из другой схемы (так же как пользователь Windows не может увидеть файлы другого пользователя, если у него нет на это прав).
Чтобы дать пользователю test права на чтение данных из таблицы fiftin.table1 нужно вызвать команду:
GRANT SELECT ON fiftin.table1 TO test Теперь повторим попытку чтения из fiftin.table1 под пользователем test. Ура, получилось!

4. Синонимы

Чтобы не писать каждый раз "fiftin.table1" Oracle предоставляет возможность создавать синонимы . Мы можем создать синоним таблицы table1 в схеме test и обращаться к ней по короткому имени.
Для начала дадим права пользователю test на создание синонимов:
GRANT CREATE SYNONYM TO test А теперь создадим сам синоним:
CREATE SYNONYM table1 FOR fiftin.table1; Все.

Реализация инструкции GRANT в системе Oracle поддерживает огромное количество вариантов и изменений. Синтаксис ее следующий.

GRANT {[объектная_привилегия] [, …] |

[системная_привилегия] [, …] |

[роль] [, …]} [объект] [, …] |

[имя_схемы.] [объект]} ТО {{имя_получателя [, …]

| имя_роли [, …] | PUBLIC}

Вы можете присваивать несколько привилегий в одной инструкции, но эти привилегии должны относиться к одному типу (объектные, системные или ролевые).

Например, вы можете предоставить пользователю три объектные привилегии в одной таблице при помощи одной инструкции GRANT, затем при помощи отдельной инструкции назначить две системные привилегии какой-нибудь роли, а в третьей инструкции присвоить пользователю несколько ролей, но нельзя сделать все это в одной инструкции GRANT.

Ниже приводятся параметры инструкции GRANT платформы Oracle.

объект_имя_привилегия

Привилегии для доступа к указанному объекту схемы (например, таблице или представлению) присваиваются указанному получателю (имя_получателя) или роли. Вы можете объединять в одной инструкции несколько объектных привилегий, объектов схемы или получателей. Однако вы не можете объединять в одной инструкции присвоение системных привилегий или ролей с присвоением объектных привилегий. Существуют следующие объектные привилегии.

ALL

Присваиваются все доступные привилегии доступа к объекту схемы. Можно применять к таблицам.

Предоставляется право изменять существующую таблицу при помощи инструкции ALTER TABLE. Можно применять к таблицам и последовательностям.

Предоставляется право обращаться к таблице при помощи отладчика. Этот доступ применим к любым триггерам таблицы и любой информации о коде SQL, напрямую обращавшемся к таблице. Можно применять к таблицам, представлениям, процедурам, функциям, пакетам, объектам Java и типам.

Предоставляется право запускать хранимую процедуру, пользовательскую функцию или пакет. Можно применять к процедурам, функциям, пакетам, объектам Java, библиотекам, типам, индексным типам и пользовательским операторам.

Предоставляется право создавать индексы по таблице.

(ON COMMIT REFRESH QUERY REWRITE}

Предоставляется привилегия создавать материализованные представления, обновляющиеся после транзакции (refresh-on-commit), или создавать материализованное представление для переписывания запросов к указанной таблице. Применяется только к материализованным представлениям.

{READ | WRITE}

Предоставляется привилегия читать и записывать файлы в директорию, указанную с помощью полного пути к директории операционной системы. Поскольку система Oracle имеет возможность сохранять файлы за пределами базы данных, серверный процесс Oracle должен быть запущен пользователем, имеющим привилегии доступа к указанным директориям. Вы можете включить в Oracle при помощи этого механизма систему обеспечения безопасности на уровне отдельных пользователей. Обратите внимание, что предложение WRITE можно использовать только с внешней таблицей, например файлом журнала или файлом ошибок.

REFERENCES

Предоставляется право определять ограничения, обеспечивающие ссылочную целостность. Можно использовать в таблицах.

(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.

SNMPAGENT

Присваивается только Oracle Enterprise Manager и Intelligent Agent.

RECOVERY_CATA LOGO WNER

Предоставляется привилегия создавать пользователей, владеющих собственным каталогом восстановления.

HS_ADMIN_ROLE

Предоставляется привилегия обращаться к областям словарей данных, которые используются для поддержки гетерогенных служб Oracle.

ON имя_схемы

Пользователю или роли предоставляется привилегия доступа к объекту схемы. К объектам базы данных относятся: таблицы, представления, последовательности, хранимые процедуры, пользовательские функции, пакеты, материализованные представления, пользовательские типы, библиотеки, индексные типы, пользовательские операторы или синонимы всех этих объектов. Если имя схемы не будет указано, будет подразумеваться схема текущего пользователя. Платформа Oracle также поддерживает два ключевых слова для особых случаев.

DIRECTORY

Предоставляются права доступа к объекту-директории, который представляет собой объект Oracle, соответствующий директории в файловой системе.

Предоставляются привилегии доступа к Java-объектам схемы SOURCE и RESOURCE.

ТО {{имя_получателя […] имя_объекта [, …] PUBLIC} HIERARCY} OPTION]

Указывается пользователь или роль, получающая данную привилегию. Ключевое слово PUBLIC также можно использовать при отмене привилегии, назначенной для роли PUBLIC. Можно через запятую перечислить нескольких получателей привилегии.

WITH GRANT OPTION

Позволяет получателю привилегии назначать эти привилегии другим пользователям или роли 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)

TO sales_manager;

В качестве отступления, предоставление любых объектных привилегий доступа к таблице позволяет пользователю (или роли) блокировать таблицу любым режимом блокировки, используя инструкцию 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.