https://docs.oracle.com/cd/F19136_01/multi/creating-a-pdb-from-scratch.html#GUID-BCC15DB0-FC09-4D1A-90ED-B6DB7A2A78AE
https://docs.oracle.com/cd/F19136_01/multi/cloning-a-pdb.html#GUID-1251F297-D839-4F46-9038-9E89AFBE5CA5
https://docs.oracle.com/cd/F19136_01/multi/plugging-in-a-pdb.html#GUID-5CFC53B9-C457-460A-92A5-DAFDC472F458
https://docs.oracle.com/cd/F19136_01/multi/relocating-a-pdb.html#GUID-6A85B92C-0AE6-4737-BDBD-EA8256C09E55
https://docs.oracle.com/cd/F19136_01/multi/plugging-in-a-pdb.html#GUID-EE58804F-A999-4F7C-93DE-D641B3C1047B
show con_name
show pdbs
select * from V$PDBS;
select * from cdb_pdbs;
シードPDBから作成 (orcl:pdb11)
CREATE PLUGGABLE DATABASE pdb11 ADMIN USER pdbadm IDENTIFIED BY oracle
FILE_NAME_CONVERT= ('/oradata/orcl/pdbseed/', '/oradata/orcl/pdb11/');
シードPDBから作成 (PROD1:pdb21,pdb22,pdb23)
CREATE PLUGGABLE DATABASE pdb21 ADMIN USER pdbadm IDENTIFIED BY oracle;
CREATE PLUGGABLE DATABASE pdb22 ADMIN USER pdbadm IDENTIFIED BY oracle;
CREATE PLUGGABLE DATABASE pdb23 ADMIN USER pdbadm IDENTIFIED BY oracle;
alter pluggable database all open;
alter pluggable database all save state;
ローカルPDBのコールドクローニング (orcl:pdb11 → orcl:pdb12)
CDBはローカルUNDOモードでない場合、ソースPDBは読取り専用オープン・モードである必要があります。
CDBがARCHIVELOGモードでない場合、ソースPDBは読取り専用オープン・モードである必要があります。
archive log list
SELECT PROPERTY_NAME, PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'LOCAL_UNDO_ENABLED';
alter pluggable database pdb11 close;
alter pluggable database pdb11 open read only;
show pdbs;
alter session set PDB_FILE_NAME_CONVERT='/oradata/orcl/pdb11/', '/oradata/orcl/pdb12/';
CREATE PLUGGABLE DATABASE pdb12 FROM pdb11;
※CDBが共有UNDOモード、非ARCHIVELOGモード、ソースPDBがread writeの場合はエラー発生(ORA-65035: PDB11からプラガブル・データベースを作成できません)
※CDBが共有UNDOモード、ARCHIVELOGモード、ソースPDBがread writeの場合はエラー発生(ORA-65035: PDB11からプラガブル・データベースを作成できません)
※作成した直後で一度もオープンしていないPDBをソースとしてクローニングしようとすると以下のエラーとなる
ORA-65036: プラガブル・データベースPDB11は必要なモードでオープンされていません
ローカルPDBのホットクローニング (orcl:pdb11 → orcl:pdb13)
alter pluggable database pdb11 close;
alter pluggable database pdb11 open read write;
show pdbs;
alter session set PDB_FILE_NAME_CONVERT='/oradata/orcl/pdb11/', '/oradata/orcl/pdb13/';
CREATE PLUGGABLE DATABASE pdb13 FROM pdb11;
リモートPDBのクローニング (PROD1:pdb21 → orcl:pdb14)
cdh
cd network/admin
create database link PROD1 connect to system identified by oracle using 'PROD1';
mkdir -p /oradata/orcl/pdb14
alter session set DB_CREATE_FILE_DEST='/oradata/orcl/pdb14';
CREATE PLUGGABLE DATABASE pdb14 FROM pdb21@PROD1;
※下記エラー発生
行1でエラーが発生しました。:
ORA-17628: Oracleエラー1031がリモートOracleサーバーから返されました ORA-01031:
権限が不足しています
→ ソースPDBで下記実行してエラー解消
grant create pluggable database to system container=all;
リモート非CDBのクローニング (PROD2 → orcl:pdb15)
-- PROD2で実行
grant create pluggable database to system;
-- orclで実行
create database link PROD2 connect to system identified by oracle using 'PROD2';
select * from v$instance@PROD2;
CREATE PLUGGABLE DATABASE pdb15 FROM PROD2@PROD2
FILE_NAME_CONVERT = ('/oradata/PROD2/', '/oradata/orcl/pdb15/');
alter session set container=pdb15;
@?/rdbms/admin/noncdb_to_pdb.sql
conn / as sysdba
show pdbs;
切断したPDBをxmlベースで接続 (PROD1:pdb21 → orcl:pdb16)
-- PROD1で実行
show pdbs
alter pluggable database pdb21 close immediate;
ALTER PLUGGABLE DATABASE pdb21 UNPLUG INTO '/oradata/PROD1/pdb21.xml';
-- orclで実行
mkdir -p /oradata/orcl/pdb16
alter session set DB_CREATE_FILE_DEST='/oradata/orcl/pdb16';
CREATE PLUGGABLE DATABASE pdb16 USING '/oradata/PROD1/pdb21.xml'
COPY ;
show pdbs
切断したPDBをPDBアーカイブベースで接続 (PROD1:pdb22 → orcl:pdb17)
-- PROD1で実行
show pdbs
alter pluggable database pdb22 close immediate;
ALTER PLUGGABLE DATABASE pdb22 UNPLUG INTO '/oradata/PROD1/pdb22.pdb';
-- orclで実行
mkdir -p /oradata/orcl/pdb17
alter session set DB_CREATE_FILE_DEST='/oradata/orcl/pdb17';
CREATE PLUGGABLE DATABASE pdb17 USING '/oradata/PROD1/pdb22.pdb'
COPY ;
show pdbs
PDBの再配置 (PROD1:pdb23 → orcl:pdb18)
-- PROD1で実行
grant create pluggable database to system container=all;
grant sysoper to system container=all;
archive log list
SELECT PROPERTY_NAME, PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'LOCAL_UNDO_ENABLED';
-- orclで実行
mkdir -p /oradata/orcl/pdb18
alter session set DB_CREATE_FILE_DEST='/oradata/orcl/pdb18';
CREATE PLUGGABLE DATABASE pdb18 FROM pdb23@PROD1 RELOCATE;
show pdbs
alter pluggable database all open;
alter pluggable database all save state;
show pdbs;
非CDBをPDBとして接続 (PROD2 → orcl:pdb91)
PROD2
sql
shutdown immediate;
startup open read only;
BEGIN
DBMS_PDB.DESCRIBE(
pdb_descr_file => '/home/oracle/PROD2.xml');
END;
/
orcl
SET SERVEROUTPUT ON
DECLARE
compatible CONSTANT VARCHAR2(3) :=
CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file => '/home/oracle/PROD2.xml',
pdb_name => 'PROD2')
WHEN TRUE THEN 'YES'
ELSE 'NO'
END;
BEGIN
DBMS_OUTPUT.PUT_LINE(compatible);
END;
/
PROD2
shutdown immediate;
orcl
CREATE PLUGGABLE DATABASE pdb91 USING '/home/oracle/PROD2.xml'
COPY
FILE_NAME_CONVERT = ('/oradata/PROD2/', '/oradata/orcl/PROD2/')
;
alter session set container=pdb91;
@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
alter pluggable database pdb91 open;