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
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;
ローカル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 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からプラガブル・データベースを作成できません)
alter pluggable database pdb11 close;
alter pluggable database pdb11 open read only;
※作成した直後で一度もオープンしていないPDBをソースとしてクローニングしようとすると以下のエラーとなる
ORA-65036: プラガブル・データベースPDB11は必要なモードでオープンされていません
ローカルPDBのホットクローニング (orcl:pdb11 → orcl:pdb13)
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
vim listener.ora
LISTENER_PROD1 =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=mmm111)(PORT=1521)))
SID_LIST_LISTENER_PROD1=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=PROD1.example.com)
(SID_NAME=PROD1)
(ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1)))
lsnrctl start LISTENER_PROD1
lsnrctl status LISTENER_PROD1
vim tnsnames.ora
PROD1=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=mmm111)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=PROD1.example.com)))
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)
vim listener.ora
LISTENER_PROD2 =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=mmm111)(PORT=1522)))
SID_LIST_LISTENER_PROD2=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=PROD2.example.com)
(SID_NAME=PROD2)
(ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1)))
lsnrctl start LISTENER_PROD2
lsnrctl status LISTENER_PROD2
vim tnsnames.ora
PROD2=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=mmm111)(PORT=1522))
(CONNECT_DATA=
(SERVICE_NAME=PROD2.example.com)))
-- PROD2で実行
alter system set local_listener = '(ADDRESS = (PROTOCOL=TCP)(HOST=mmm111)(PORT=1522))';
show parameter listen
grant create pluggable database to system;
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
切断したPDBをxmlベースで接続 (PROD1:pdb21 → orcl:pdb16)
select * from v$pdbs;
alter pluggable database pdb21 close immediate;
ALTER PLUGGABLE DATABASE pdb21 UNPLUG INTO '/oradata/PROD1/pdb21.xml';
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 ;
切断したPDBをPDBアーカイブベースで接続 (PROD1:pdb22 → orcl:pdb17)
select * from v$pdbs;
alter pluggable database pdb22 close immediate;
ALTER PLUGGABLE DATABASE pdb22 UNPLUG INTO '/oradata/PROD1/pdb22.pdb';
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 ;
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';
mkdir -p /oradata/orcl/pdb18
alter session set DB_CREATE_FILE_DEST='/oradata/orcl/pdb18';
CREATE PLUGGABLE DATABASE pdb18 FROM pdb23@PROD1 RELOCATE;