https://docs.oracle.com/cd/F19136_01/bradv/rman-duplicating-databases.html
非CDB(PROD2 → PROD12)
CDB(PROD1 → PROD11)
新しいCDBとともにPDBを複製(PROD1:PDB11 → PROD13:PDB11)
既存の別CDBに指定したPDBを複製(orcl:PDB11 → PROD1:PDB24)
vim ~/.bashrc
alias PROD11='export ORACLE_SID=PROD11'
alias PROD12='export ORACLE_SID=PROD12'
alias PROD13='export ORACLE_SID=PROD13'
. ~/.bashrc
非CDB(PROD2 → PROD12)
----------------------------------------------------
※手順
1.listener.ora設定
2.tnsnames.ora設定(省略可能)
3.パスワードファイル作成
4.pfile作成
5.OSディレクトリ作成
6.nomountで起動
7.rmanでDUPLICATE文発行
----------------------------------------------------
cdh
cd network/admin
vim listener.ora
LISTENER_PROD12 =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=mmm111)(PORT=1622)))
SID_LIST_LISTENER_PROD12=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=PROD12.example.com)
(SID_NAME=PROD12)
(ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1)))
lsnrctl start LISTENER_PROD12
lsnrctl status LISTENER_PROD12
PROD2
create pfile from spfile;
cdh
cd dbs
mv initPROD2.ora initPROD12.ora
vim initPROD12.ora
*.CONTROL_FILES='/oradata/PROD12/control01.ctl','/oradata/PROD12/control02.ctl'
*.DB_DOMAIN='example.com'
*.DB_NAME='PROD12'
*.DB_FILE_NAME_CONVERT='/oradata/PROD2','/oradata/PROD12'
*.LOG_FILE_NAME_CONVERT='/oradata/PROD2','/oradata/PROD12'
mkdir -p /oradata/PROD12
※PROD2はアーカイブログモード必要
※PROD2はパスワードファイル必要。Netサービス名での接続必要。
※PROD12はパスワードファイル必要。Netサービス名での接続必要。
cdh
cd dbs
orapwd file=orapwPROD2 password=oracle format=12
orapwd file=orapwPROD12 password=oracle format=12
sqlplus sys/oracle@localhost:1622/PROD12.example.com as sysdba
STARTUP NOMOUNT;
rman
CONNECT TARGET "sys/oracle@localhost:1522/PROD2.example.com as sysdba"
CONNECT AUXILIARY "sys/oracle@localhost:1622/PROD12.example.com as sysdba"
RUN
{
SET NEWNAME FOR DATABASE TO '/oradata/PROD12/%U';
DUPLICATE DATABASE TO PROD12
FROM ACTIVE DATABASE
PASSWORD FILE
NOFILENAMECHECK;
}
PROD12
CDB(PROD1 → PROD11)
cdh
cd network/admin
vim listener.ora
LISTENER_PROD11 =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=mmm111)(PORT=1621)))
SID_LIST_LISTENER_PROD11=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=PROD11.example.com)
(SID_NAME=PROD11)
(ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1)))
lsnrctl start LISTENER_PROD11
lsnrctl status LISTENER_PROD11
PROD1
create pfile from spfile;
cdh
cd dbs
mv initPROD1.ora initPROD11.ora
vim initPROD11.ora
*.CONTROL_FILES='/oradata/PROD11/control01.ctl','/oradata/PROD11/control02.ctl'
*.DB_CREATE_FILE_DEST='/oradata/PROD11'
*.DB_DOMAIN='example.com'
*.DB_NAME='PROD11'
*.ENABLE_PLUGGABLE_DATABASE=true
*.MEMORY_TARGET=1G
mkdir -p /oradata/PROD11
※PROD1はアーカイブログモード必要
※PROD1はパスワードファイル必要。Netサービス名での接続必要。
※PROD11はパスワードファイル必要。Netサービス名での接続必要。
cdh
cd dbs
orapwd file=orapwPROD1 password=oracle format=12
orapwd file=orapwPROD11 password=oracle format=12
sqlplus sys/oracle@localhost:1621/PROD11.example.com as sysdba
STARTUP NOMOUNT;
rman
CONNECT TARGET "sys/oracle@localhost:1521/PROD1.example.com as sysdba"
CONNECT AUXILIARY "sys/oracle@localhost:1621/PROD11.example.com as sysdba"
RUN
{
SET NEWNAME FOR DATABASE TO '/oradata/PROD11/%U';
DUPLICATE DATABASE TO PROD11
FROM ACTIVE DATABASE
PASSWORD FILE
NOFILENAMECHECK;
}
PROD11
新しいCDBとともにPDBを複製(PROD1:PDB21 → PROD13:PDB21)
cdh
cd network/admin
vim listener.ora
LISTENER_PROD13 =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=mmm111)(PORT=1623)))
SID_LIST_LISTENER_PROD13=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=PROD13.example.com)
(SID_NAME=PROD13)
(ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1)))
lsnrctl start LISTENER_PROD13
lsnrctl status LISTENER_PROD13
PROD1
create pfile from spfile;
cdh
cd dbs
mv initPROD1.ora initPROD13.ora
vim initPROD13.ora
*.CONTROL_FILES='/oradata/PROD13/control01.ctl','/oradata/PROD13/control02.ctl'
*.DB_CREATE_FILE_DEST='/oradata/PROD13'
*.DB_DOMAIN='example.com'
*.DB_NAME='PROD13'
*.ENABLE_PLUGGABLE_DATABASE=true
*.MEMORY_TARGET=1G
mkdir -p /oradata/PROD13
※orclはアーカイブログモード必要
※orclはパスワードファイル必要。Netサービス名での接続必要。
※PROD13はパスワードファイル必要。Netサービス名での接続必要。
cdh
cd dbs
orapwd file=orapwPROD1 password=oracle format=12
orapwd file=orapwPROD13 password=oracle format=12
sqlplus sys/oracle@localhost:1623/PROD13.example.com as sysdba
STARTUP NOMOUNT;
rman
CONNECT TARGET "sys/oracle@localhost:1521/PROD1.example.com as sysdba"
CONNECT AUXILIARY "sys/oracle@localhost:1623/PROD13.example.com as sysdba"
RUN
{
DUPLICATE DATABASE TO PROD13
PLUGGABLE DATABASE pdb21
FROM ACTIVE DATABASE
PASSWORD FILE
NOFILENAMECHECK;
}
PROD13
既存の別CDBに指定したPDBを複製(orcl:PDB12 → PROD1:PDB24)
mkdir -p /oradata/PROD1/pdb24
※orclはアーカイブログモード必要
※orclはパスワードファイル必要。Netサービス名での接続必要。
※PROD1はパスワードファイル必要。Netサービス名での接続必要。
cdh
cd dbs
orapwd file=orapworcl password=oracle format=12
orapwd file=orapwPROD1 password=oracle format=12
sqlplus sys/oracle@localhost:1521/PROD1.example.com as sysdba
alter system set REMOTE_RECOVERY_FILE_DEST='/tmp' scope=both sid='*';
rman
CONNECT TARGET "sys/oracle@localhost:1523/orcl.example.com as sysdba"
CONNECT AUXILIARY "sys/oracle@localhost:1521/PROD1.example.com as sysdba"
RUN
{
DUPLICATE PLUGGABLE DATABASE PDB12 AS PDB24 TO PROD1
FROM ACTIVE DATABASE
NOFILENAMECHECK;
}
PROD1