27.02.2016 0 min to read

Oracle 12c. Запуск контейнерной (container) и подключаемой (pluggable) БД

Category : Статьи

С выходом новой версии Oracle 12c пользователи этой БД приобрели принципиально новую возможность – облачные экземпляры базы данных. С ними можно выполнять массу различных действий – клонирование, перенос, извлечение и пр. Но для начала необходимо научиться самомму простому дейсвию – запуск и остановка БД.

В данном случае мы имеем дело с двумя принципиально разными видами БД: контейнерная (CDB) – она является основной “платформой”, на которой размещаются БД второго вида – подключаемые (PDB). Каждый экземпляр обоих видов БД необходимо запускать отдельно. В последующих обновлениях была добавлена возможность автоматического старта всех PDB во время запуска CDB. В первой же версии такая возможность отсутствует, поэтому придется запускать все вручную или добавить специальный триггер ON STARTUP, где во время запуска CDB будут запущены и необходимые PDB.

Запуск CDB ничем не отличается от БД предыдущих версий:

[oracle@oracle-server ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Вт Дек 23 14:10:05 2014

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Соединен с простаивающим экземпляром.

SQL> startup
Экземпляр ORACLE запущен.

Total System Global Area 1603411968 bytes
Fixed Size 2226912 bytes
Variable Size 1023411488 bytes
Database Buffers 570425344 bytes
Redo Buffers 7348224 bytes
База данных смонтирована.
База данных открыта.

 

После этой операции все подключаемые базы данных (PDB) оказываются смонтированными, но неоткрытыми. Проверить состояние всех БД можно простым запросом.

SQL> select name, open_mode from v$pdbs;

NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
MYPDB MOUNTED

 

Из БД, являющейся контейнером, можно открыть любую подключаемую БД или все сразу:

SQL> alter pluggable database MYPDB open;

Подключаемая база данных изменена.

SQL> alter pluggable database all open;

Подключаемая база данных изменена.

SQL> select name, open_mode from v$pdbs;

NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
MYPDB READ WRITE

 

Все операции с выбранной PDB можно делать находясь непосредственно в контексте подключаемой БД. Сначала проверим где мы находимся сейчас, затем перейдем в MYPDB, остановим ее и запустим заново:

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

SQL> alter session set container=MYPDB;

Сеанс изменен.

SQL> show con_name

CON_NAME
------------------------------
MYPDB

SQL> shutdown;
Подключаемая база данных закрыта.
SQL> startup;
Подключаемая база данных открыта.

 

Вышеописанные команды запуска подключаемых БД можно добавить в триггер. Тогда желаемые PDB будут открываться автоматически.

create or replace trigger SYS.AUTOPEN_PDBS after startup on database
begin
execute immediate 'alter pluggable database all open';
end;