Как клонировать подключаемую базу данных в 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 - это имя компакт-диска):

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

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


person wolφi    schedule 08.05.2020    source источник
comment
попробуйте alter pluggable database ora193p2 open   -  person    schedule 08.05.2020
comment
@ Кумар: Да, это работает. Спасибо!. Вы хотите добавить это в качестве ответа, чтобы я мог его принять?   -  person wolφi    schedule 08.05.2020


Ответы (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.
person Community    schedule 08.05.2020
comment
Во время поиска в Google я обнаружил, что следующий оператор, по-видимому, откроет pdb при следующем запуске: ALTER PLUGGABLE DATABASE ora193p2 SAVE STATE; - person wolφi; 08.05.2020

Начиная с 12.1.0.2, вы можете сохранить состояние запуска PDB с помощью перезапуска CDB. В набор исправлений 12.1.0.2 добавлены параметры SAVE 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

person Lalit Kumar B    schedule 08.05.2020
comment
Спасибо! Потребовалось время, но я нашел представление словаря данных DBA_PDB_SAVED_STATES, где можно проверить это сохраненное состояние. - person wolφi; 08.05.2020