步骤 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;
Oracle Database 18c 中的 PDB 级复制示例

在 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