Базы данных Oracle - статьи

         

Рассмотрим пример. Создадим пользователя ADAM


Рассмотрим пример. Создадим пользователя ADAM и снабдим его единственным полномочием подключения к СУБД.  Создадим роль, защищенную паролем, и припишем ее новому пользователю:
CONNECT / AS SYSDBA
CREATE USER adam IDENTIFIED BY eva;
GRANT CREATE SESSION TO adam;
CREATE ROLE tablecreator IDENTIFIED BY say123;
GRANT tablecreator TO adam;
Проверка: SQL> CONNECT adam/eva
Connected.SQL> SELECT * FROM session_roles;
ROLE ------------------------------ TABLECREATOR
Переведем роль (только ее) в изначально отключенное состояние:
CONNECT / AS SYSDBA ALTER USER adam DEFAULT ROLE ALL EXCEPT tablecreator;
Конструкция DEFAULT ROLE допускает указание также просто ALL, NONE или же явного перечисления ролей, которые мы хотим сделать изначально активными для всех сеансов пользователя.  В конкретном примере с равным успехом можно было указать DEFAULT ROLE NONE, просто приведенный вариант более типичен на практике.
Снова проверка:
SQL> CONNECT adam/eva
Connected. SQL> SELECT * FROM session_roles;
no rows selected
SQL> SET ROLE tablecreator IDENTIFIED BY say123; Role set. SQL> SELECT * FROM session_roles;
ROLE ------------------------------ TABLECREATOR
Теперь для возможности реально создавать таблицы пользователь ADAM обязан не только указать собственный пароль при подключении к СУБД, но и указать еще один пароль для активации роли.
Фирма Oracle рекомендует создавать для отдельных видов приложений отдельные роли (хотя бы и составные, то есть включающие в свой состав какие-нибудь другие роли) и распоряжаться ими способом, указанным выше.  Если приложение будет активизировать роль самостоятельно, то человек, запускающий приложение, может пароля роли и не знать, а знания одного только пароля пользователя Oracle окажется недостаточным для работы с базой данных вне приложения, например, из SQL*Plus.  С другой стороны мы вовсе не обязаны извещать, приложение, употребляющее пароль роли для ее активации, о пароле пользователя:  теперь он может быть указан отдельно человеком, устанавливающим соединение с СУБД. Технику такого подхода можно проработать и развить далее.

Содержание раздела