必须启用archivelog和force logging,否则duplicate失败或备库无法同步;主库需archivelog模式且force_logging为yes,辅助实例须nomount启动、密码文件严格一致,duplicate命令必须含spfile、nofilenamecheck等关键参数,并显式配置db_file_name_convert等路径转换项。

必须启用 FORCE LOGGING 和 ARCHIVELOG,否则 DUPLICATE 会失败或备库后续无法同步。
主库必须同时满足 ARCHIVELOG + FORCE LOGGING
ORA-01113 或 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE 卡住,90% 是因为 FORCE LOGGING 没开。仅开归档不够。
- 检查状态:
SELECT log_mode, force_logging FROM v$database;— 输出必须是ARCHIVELOG和YES - 若未启用:先
SHUTDOWN IMMEDIATE→STARTUP MOUNT→ALTER DATABASE ARCHIVELOG→ALTER DATABASE FORCE LOGGING→ALTER DATABASE OPEN -
FORCE LOGGING会略微增加 REDO 量,但对 OLTP 影响可忽略;跳过它等于放弃 Data Guard 一致性保障
辅助实例要 NOMOUNT 启动且密码文件严格一致
RMAN 连接 auxiliary 实例时,RMAN-06403: could not obtain a fully authorized session 几乎全是密码文件问题。
- 辅助实例(auxiliary)必须用
STARTUP NOMOUNT启动,不能挂载任何控制文件 - SYS 密码必须与 target 库完全相同 — 不是“相似”,是字节级一致;建议直接
scp orapw<code>target_sidorapwaux_sid复制 - 密码文件需
orapwd file=orapw<code>aux_sidpassword=same_sys_passwordentries=2 重建(entries≥2,RMAN 内部并发连接需要) - Windows 下若已有同名密码文件且被占用,
DUPLICATE ... PASSWORD FILE会失败;提前删掉再运行
路径转换和 SPFILE 参数不可省略
即使主备路径结构一模一样,DB_FILE_NAME_CONVERT 和 LOG_FILE_NAME_CONVERT 也必须显式指定,否则报 ORA-01511 或控制文件创建失败。
- 在 auxiliary 的 pfile 中写死:
DB_FILE_NAME_CONVERT='/u01/oradata/prod','/u01/oradata/stby'、LOG_FILE_NAME_CONVERT='/u01/oradata/prod','/u01/oradata/stby' -
compatible必须 ≥11.1.0,默认11.0.0会导致RMAN-03002控制文件创建失败 -
DUPLICATE命令中必须带SPFILE子句,否则 RMAN 不会自动传输并适配参数文件 - 异机复制时若路径完全一致,仍建议显式配置 — Oracle 11g 对路径逻辑校验严格,隐式推导不可靠
执行 DUPLICATE 命令的关键约束
命令本身简单,但漏掉任一前提都会中断在中间阶段,且错误信息不直观。
- 必须用 RMAN 同时连接 target 和 auxiliary:
rman TARGET sys/<code>pwd@prod AUXILIARY sys/pwd@stby - 命令模板:
DUPLICATE TARGET DATABASE TO stby FROM ACTIVE DATABASE NOFILENAMECHECK SPFILE; -
NOFILENAMECHECK仅用于同机测试;生产环境建议去掉,让 RMAN 校验文件冲突 - 网络必须双向连通:target 能 telnet auxiliary 的监听端口,auxiliary 也能反向解析 target 的 TNS 别名
- 大库(TB 级)注意带宽和源库负载 — Active Duplicate 会持续拉取数据文件+归档日志,期间源库 I/O 和网络出口压力明显上升
最容易被忽略的是 compatible 参数和 PASSWORD FILE 的 Windows 文件锁问题;前者导致控制文件生成失败,后者让整个流程卡在连接阶段,但错误日志里只显示权限拒绝,不提文件占用。











