RMAN DUPLICATE卡死主因是辅助实例未真正就绪:必须手动STARTUP NOMOUNT、监听可路由、control_files路径存在且有权限、禁用OMF、避免NFS hard挂载及网络异常。

RMAN DUPLICATE卡死,90%不是命令问题,而是辅助实例没真正“活”起来
Oracle 12c中RMAN DUPLICATE卡在某个阶段(比如刚连上辅助库、刚进RESTORE CONTROLFILE、或卡在datafile copy中间),根本原因往往不是语法错或参数漏,而是RMAN进程在等一个它永远等不到的响应——辅助实例的Oracle后台进程没就绪。
辅助实例NOMOUNT没起来,RMAN就只能干等
RMAN不会帮你启动辅助实例。它只尝试用你指定的服务名(如auxdb)去连接,一旦连接超时或被拒绝,就会卡住几秒到几十秒,最后报RMAN-06429、RMAN-04005或静默无响应。
- 必须手动以
NOMOUNT启动:不能用STARTUP(默认是MOUNT),得明确写STARTUP NOMOUNT PFILE=/path/to/initaux.ora - 检查是否真在运行:
ps -ef | grep pmon | grep aux,要看到ora_pmon_aux进程 - 监听器必须能路由到它:在辅助主机上执行
lsnrctl services,输出里必须有你RMAN连接串中用的SERVICE_NAME,且状态为READY - tnsnames.ora里服务定义不能偷懒:必须显式指向辅助实例的
SID和端口,不能复用target的条目
控制文件路径不存在或没权限,卡在RESTORE CONTROLFILE阶段
RMAN在还原控制文件前,不会校验路径是否存在。它直接调用CREATE CONTROLFILE,如果CONTROL_FILES参数指向的目录不存在、或oracle用户没写权限,就会卡住并最终报ORA-27040或RMAN-03009 + ORA-17502。
- 辅助实例的pfile中
control_files必须写绝对路径,例如control_files='/u01/oradata/auxdb/control01.ctl' - 提前建好目录:
mkdir -p /u01/oradata/auxdb,再chown oracle:oinstall /u01/oradata/auxdb - 如果target用ASM,辅助端不能留着
+DATA路径——RMAN不会自动转成文件系统路径 - 禁用OMF:
db_create_file_dest='',否则RMAN可能试图往不存在的diskgroup写文件
网络传输层出问题,卡在datafile copy中间不动
从12c开始,FROM ACTIVE DATABASE走的是Oracle专有协议直传,不经过OS缓存。一旦底层网络异常(比如NFS hard挂载、网卡TCP offload开启、防火墙中断长连接),RMAN会卡在copy某一个数据文件上,progress停住,top里rman进程状态可能是D(uninterruptible sleep)。
- 检查网卡是否启用了TCPOFFLOAD:
ethtool -k eth0 | grep offload,若tcp-segmentation-offload为on,建议关掉:ethtool -K eth0 tso off gso off - 避免NFS hard挂载做备份目标:hard挂载下IO失败会无限重试,
kill -9都杀不掉RMAN进程 - 用
netstat -an | grep :1521确认辅助端监听端口有ESTABLISHED连接,且持续存在 - 如果卡在某个固定文件(如
sysaux01.dbf),优先查该文件所在磁盘空间:df -h,ORA-17627常是磁盘满的伪装报错
最易被忽略的一点:卡死未必发生在RMAN日志有输出的地方。有时它卡在辅助实例的alert.log里——比如MRP进程还没启,但RMAN已把控制文件写完,正在等“备库就绪”信号。这时候翻$ORACLE_BASE/diag/rdbms/auxdb/auxdb/trace/alert_auxdb.log,常能看到比RMAN日志更早的ORA-错误。


















