步骤 2. 为源站点和目标站点配置 tnsnames.ora。
在源站点和目标站点上,编辑 tnsnames.ora 并添加如下条目:
source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = test001.tst.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORC181U01.us.oracle.com) ) ) dest = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = test002.tst.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORC181U02.us.oracle.com) ) )
注意:让源站点和目标站点具有相同的“源”和“目标”条目非常重要。
步骤 1. 确保源数据库处于归档日志模式。
在源站点,执行:
SQL> Archive log list
结果应该是这样的:
SQL> Archive log list Database log mode Archive Mode
步骤 7. 确认复制是否成功。
在目标站点上:
SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- -------- 2 PDB$SEED READ ONLY NO 3 PDB99 MOUNTED 4 DEV READ WRITE NO
SQL> select con_id,name from v$datafile where con_id=4; CON_ID NAME --------- ------------------------------------------------------------------------------ 4 /refresh/64bit/app/oracle/oradata/ORC181U/dev/system01.dbf 4 /refresh/64bit/app/oracle/oradata/ORC181U/dev/sysaux01.dbf 4 /refresh/64bit/app/oracle/oradata/ORC181U/dev/undotbs01.dbf
现在我们已经成功地将一个 PDB 从源站点复制到目标站点。
测试环境
下面是如何将 PDB 从一个 CDB 复制到另一个 CDB 的示例。
假设我们在源站点和目标站点上都有以下 CDB:
源数据库
hostname: test001.tst.com CDB: ORC181U01 PDB: pdb01
目标数据库
hostname: test002.tst.com CDB: ORC181U02 PDB: pdb99
有一个名为 pdb01 的 PDB,我们想将它从主机 test001 复制到主机 test002,复制到 test002 上的 cdb。
创建名为 dev 的 pdb。
以下是转换中涉及的步骤概括如下:
- 确保源数据库处于归档日志模式。
- 为源和目标配置 tnsnames.ora。
- 检查网络连接是否可用。
- 确保源和目标具有相同的 sys 密码。
- 在目标端,创建用于复制的目录。
- 通过 RMAN 执行重复操作。
- 确认复制是否成功。
on it road.com
步骤 4. 确保源和目标具有相同的 sys 密码。
确保源数据库和目标数据库上的 sys 密码相同。
使用以下命令设置相同的密码。
SQL>Alter user sys identified by ;
步骤 5. 在目标端,创建用于复制的目录。
复制时创建用于存储存档日志的目录:
$ mkdir -p /refresh/home/mydata
使用上述目录设置 remote_recovery_file_dest 参数:
SQL> alter system set remote_recovery_file_dest='/refresh/home/mydata';
创建用于存储新 PDB 数据文件的目录:
$ mkdir -p /refresh/64bit/app/oracle/oradata/ORC181U/dev
步骤 6. 通过 RMAN 执行重复操作。
在源站点上,打开我们要复制的 PDB:
SQL> alter pluggable database pdb01 open read write;
在目标站点上,通过 RMAN 复制 PDB:
$ rman RMAN> connect target sys/oracle@source RMAN> connect auxiliary sys/oracle@dest RMAN> DUPLICATE PLUGGABLE DATABASE pdb01 as dev TO orc181u02 DB_FILE_NAME_CONVERT('pdb01','dev') FROM ACTIVE DATABASE SECTION SIZE 400M;
在 18c 之前的数据库版本中,无法复制 PDB。
用户只能复制 CDB。
但是从 Oracle 数据库 18c 开始,用户现在可以将一个 PDB 复制到另一个 CDB 中。
步骤 3. 检查网络连接是否可用。
在源站点上:
确保以下所有命令都成功且无错误:
$ lsnrctl start $ tnsping source tnsping dest $ sqlplus sys/oracle@source as sysdba $ sqlplus sys/oracle@dest as sysdba
在目标站点上:
确保以下所有命令都成功且无错误:
$lsnrctl start $tnsping source tnsping source $sqlplus sys/oracle@source as sysdba $sqlplus sys/oracle@dest as sysdba
日期:2020-09-17 00:11:33 来源:oir作者:oir