以下の内容はhttps://htn20190109.hatenablog.com/entry/2025/02/09/170700より取得しました。


{11 RMANの新機能}アクティブなデータベースの複製

 


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

 




以上の内容はhttps://htn20190109.hatenablog.com/entry/2025/02/09/170700より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14