Как клонировать подключаемую базу данных в Oracle

Я новичок в подключаемых базах данных Oracle (мы все еще используем Oracle 11.2 на работе). Для проверки разделов и подразделов мне нужно создать пару десятков табличных пространств. Я подумал, что быстро клонирую свою текущую базу данных, проведу тесты, а потом отброшу базу данных.

Я смог клонировать базу данных:

CREATE PLUGGABLE DATABASE ora193p2 FROM ora193p1
 FILE_NAME_CONVERT = (
   '/opt/oracle/oradata/ORA193C/ORA193P1/', 
   '/opt/oracle/oradata/ORA193C/ORA193P2/');

Pluggable database ORA193P2 created.

но получил ошибку ORA-01109: database not open при попытке подключиться к нему.

Я попытался открыть его, но тоже получил сообщение об ошибке (ora193c - это имя cdb):

ALTER DATABASE ora193p2 OPEN;
ORA-01509: specified name 'ORA193P2' does not match actual 'ORA193C'

Я использовал базу данных из vagrant-box.

2 ответа

Решение

Для подключаемых баз данных вам необходимо добавить подключаемую базу данных по ключевым словам, за которой следует имя pdb

SQL> create pluggable database pdbclone from orclpdb;

Pluggable database created.


SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
         4 PDBCLONE                       MOUNTED

SQL> alter pluggable database pdbclone open;

Pluggable database altered.


SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
         4 PDBCLONE                       READ WRITE NO
SQL> alter pluggable database pdbclone save state;

Pluggable database altered.

Из 12.1.0.2и далее вы можете сохранить состояние запуска PDB посредством перезапуска CDB. Представлен набор исправлений 12.1.0.2SAVE STATE а также DISCARD STATE параметры:

ALTER PLUGGABLE DATABASE pdb_name OPEN;
ALTER PLUGGABLE DATABASE pdb_name SAVE STATE;

Чтобы отменить сохраненное состояние:

ALTER PLUGGABLE DATABASE pdb_name DISCARD STATE;

За 12.1.0.1 и раньше вы могли создать триггер после запуска:

CREATE OR REPLACE TRIGGER open_pdbs 
  AFTER STARTUP ON DATABASE 
BEGIN 
   EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; 
END open_pdbs;
/

Он создает триггер на уровне системы после запуска в CDB.

См. Обязательные шаги после установки Oracle 12c

Другие вопросы по тегам