С выходом новой версии 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;