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

         

Создание редакций для объектов и управление ими


Управление редакциями регулируется привилегиями CREATE/ALTER/DROP ANY EDITION. Слово ANY в названиях напоминает о внесхемном характере редакций, распространяющемся на уровень всей БД целиком (формально они все приписаны пользователю SYS).

Если правом создавать редакции объектов и управлять ими требуется доверить пользователю YARD, администратору БД следует продолжить: GRANT CREATE ANY EDITION, DROP ANY EDITION TO yard;

Узнать действующую в данный момент редакцию можно из контекста сеанса USERENV (встроенного в СУБД): SQL> CONNECT yard/pass Connected. SQL> SELECT SYS_CONTEXT ( 'USERENV', 'CURRENT_EDITION_NAME' ) FROM dual;

SYS_CONTEXT('USERENV','CURRENT_EDITION_NAME') -------------------------------------------------------------------- ORA$BASE

ORA$BASE – это встроенная в БД умолчательно действующая редакция, на основе которой администратор может создавать последовательность редакций (а в будущих версиях Oracle возможно дерево) на свое усмотрение. Имя умолчательной для БД редакции можно выяснить запросом: SELECT property_value FROM database_properties WHERE property_name = 'DEFAULT_EDITION' ;

Примеры создания редакций: CREATE EDITION app_release_1; CREATE EDITION app_release_2 AS CHILD OF app_release_1;

В первом случае редакция APP_RELEASE_1 была создана на основе умолчательно действующей редакции ORA$BASE, во втором – как следует из текста команды.

Откомментировать редакцию в словаре-справочнике БД можно командой COMMENT: COMMENT ON EDITION app_release_1 IS 'The first release of application' ;

Снять комментарий можно, указав пустую строку ''. Наблюдаются комментарии через таблицу ALL_EDITION_COMMENTS.

Узнать существующие редакции в их взаимосвязи можно запросом к особой таблице: SQL> SELECT * FROM all_editions;

EDITION_NAME PARENT_EDITION_NAME USA ------------------------------ ------------------------------ --- ORA$BASE YES APP_RELEASE_1 ORA$BASE YES APP_RELEASE_2 APP_RELEASE_1 YES

Удалить можно только лист из дерева (пока – ветки), свободный от подчиненных редакций: DROP EDITION app_release_2;

Для того, чтобы пользователь Oracle мог не просто обращаться с редакциями объектов, но и формировать их, ему следует сообщить особое качество: CONNECT / AS SYSDBA ALTER USER yard ENABLE EDITIONS;

Качество ENABLE EDITIONS не изначальное и неотъемлемое; буде оно раз выдано, отменить его нельзя. В результате все пользователи Oracle оказываются разделены на две категории: тех, кому разрешено формировать редакции, и тех, кому не разрешено. При том возможен перевод пользователя из второй категории в первую, но никак не обратно. Удостовериться в наличие свойства ENABLE EDITIONS у пользователя можно по значению поля EDITIONS_ENABLED (нового в версии 11.2) в таблице DBA_USERS (владелец ее SYS, и обычным пользователям сама по себе она не видна).

После выдачи последней команды каждый объект пользователя YARD, для которого разрешено редактирование, так или иначе будет привязан к какой-нибудь редакции.



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