RFS状态IDLE但日志未传入,说明传输层中断而非进程异常:需优先检查log_archive_dest_2配置有效性(STATUS=VALID、非DEFER/DISABLE)、SERVICE名解析与tnsping连通性、密码文件一致性及备库MOUNT状态。

RFS进程状态为IDLE但日志没传过来
这说明RFS进程在运行,但没收到主库发来的归档日志。不是进程挂了,而是传输层断了。先别急着重启,重点查log_archive_dest_2配置和网络连通性。
-
log_archive_dest_state_2必须是ENABLE,不是DEFER或DISABLE;查命令:SELECT DEST_NAME, STATUS, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID = 2; - 主库
log_archive_dest_2里指定的SERVICE名,要能被备库tnsnames.ora解析;用tnsping <service_name>验证 - 主库监听是否真在监听该service?查
lsnrctl status输出里有没有对应服务名和状态READY - RFS日志路径(
background_dump_dest)下可能有RFS进程trace文件,比如xxx_rfs_*.trc,里面常含ORA-12514、ORA-12170等连接失败线索
RFS进程完全不出现(v$managed_standby里没有RFS行)
这是更严重的缺失——备库根本没启动RFS。常见原因是密码文件不一致或归档目标被禁用。
- 确认主库密码文件已拷贝到备库相同路径(如
$ORACLE_HOME/dbs/orapw<sid>),且权限为640、属主oracle:oinstall - 检查备库是否处于
MOUNT状态:RFS只在MOUNT或OPEN READ ONLY时启动,NOMOUNT下不会出现 - 主库执行
ALTER SYSTEM SWITCH LOGFILE;后,立刻查备库v$managed_standby——如果仍无RFS,再查主库v$archive_dest中DEST_ID=2的STATUS是否为VALID - Oracle 10g/11g常见坑:
log_archive_dest_state_2在备库spfile里被设为DEFER,导致主库认为目标不可用,干脆不推日志
RFS频繁异常退出或报ORA-16037
错误信息ORA-16037: user requested cancel of managed recovery operation通常不是RFS自己崩了,而是MRP进程被人工中断过,残留状态干扰了RFS初始化。
- 查备库alert日志,找
MRP0最近一次退出时间点,看是否有人执行过ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; - 如果MRP刚被cancel,RFS可能卡在“等待新日志”状态而无法重建连接;此时应先确保MRP已重新启动:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; - RFS依赖主库LGWR或ARCH进程推送日志;若主库
log_archive_dest_2配置的是SYNC但没配LGWR,RFS可能因超时反复重连失败 - Linux系统上检查
ulimit -n是否过低(open files限制),RFS多连接场景下容易触发资源不足
RFS存在但SEQUENCE#长期不更新
RFS显示IDLE且SEQUENCE#卡在某个值不动,大概率是主库根本没生成新归档,或者归档没触发传输。
- 主库查
V$ARCHIVED_LOG最新SEQUENCE#和COMPLETION_TIME,确认归档是否真在产生;若COMPLETION_TIME几小时没变,问题在主库归档机制 - 主库
ARCHIVE_LAG_TARGET设得过大(如3600秒),会导致归档延迟生成;临时调小可验证是否影响RFS接收节奏 - 备库
v$managed_standby里RFS的CLIENT_PROCESS列如果是UNKNOWN或空,说明主库没用LGWR传输,而是ARCH模式——这时RFS只收归档,不收在线日志,自然不更新SEQUENCE#直到主库切日志 - 主库
LOG_ARCHIVE_MAX_PROCESSES设得太小(如默认2),高并发DML下归档积压,RFS等不到新归档文件


















