在Oracle 11g之后,大量的RMAN duplicate 命令用于创建Standby database或者制作测试环境,
但这种方法在主备机的TNSNAME不一致的情况下存在一定的风险。
备机上运行rman duplicate命令,尝试创建Standby Database。
rman target sys/*** @ORA auxiliary sys/***@ORA1 @/home/oracle/duplicate0523.rcv
ORA对应主库:
ORA=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ****) ) )
ORA1 对应备库:
ORA1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 备库IP>)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ****)
)
)
脚本duplicate0523.rcv的内容为:
run {
allocate channel p1 type disk;
allocate channel p2 type disk;
allocate channel p3 type disk;
allocate channel p4 type disk;
allocate auxiliary channel s1 type disk;
allocate auxiliary channel s2 type disk;
allocate auxiliary channel s3 type disk;
allocate auxiliary channel s4 type disk;
duplicate target database for standby from active database dorecover nofilenamecheck;
}
由于RMAN的内部机制,在初始连接时,auxiliary通道会以运行rman命令的主机的TNS进行连
接,然后检查auxiliary库的状态。但在进行duplicate时命令时,会在主库开启通道,且使用的是主库
上配置的TNS信息,而非rman执行的主机的TNS。
duplicate使用的时候建议:
• 使用duplicate时,必须保证auxiliary对应的TNS在主库备库都指向备库实例,可能的话,使用同
一份tnsnames.ora(强烈建议)
• 指向备库的tnsnames应该和主库有明显的区分,如****_standby, 或者 ****_DG
• 主库和备库应尽可能使用不同的控制文件名称和数据文件名称,避免误操作覆盖。