主库归档正常但备库收不到Redo,根本原因是主库未向备库推送Redo,非归档链路问题;关键在LOG_ARCHIVE_DEST_2配置失效、RFS进程未启动或监听/TNS配置错误,需检查dest_id=2的状态、log_archive_dest_state_2、log_archive_config及网络连通性。

主库归档正常但备库收不到Redo,根本原因不是归档问题
这不是归档链路断了,而是主库根本没把新生成的redo发给备库。归档日志(ARCH进程写入的文件)和传输到备库的redo流(RFS进程接收的实时流)走的是两条路径:前者只写本地磁盘,后者依赖LOG_ARCHIVE_DEST_2配置主动推送。所以ARCHIVE LOG LIST显示“Automatic archival enabled”完全不说明DEST_2在工作。
常见误判点:
- 只查
v$archived_log确认归档存在,却没查v$archive_dest里DEST_ID = 2的状态 - 看到主库
log_archive_dest_2参数值非空,就认为配置生效——其实可能被log_archive_dest_state_2设为DEFER或RESET - 主库是RAC,但
log_archive_dest_2没加THREAD限定,导致某thread的日志压根不发
必须立刻检查的三个参数状态
在主库执行:
SELECT dest_id, status, error, destination, log_sequence, applied_scn FROM v$archive_dest WHERE dest_id = 2;
关键看三列:
-
status必须是VALID,若为INACTIVE或ERROR,说明传输已停摆 -
error字段如果有内容(如ORA-16057: DGID not set、ORA-12541: TNS:no listener),就是直接病因 -
log_sequence若长期不增长,证明没有新日志被推送到该dest
同时确认依赖参数:
-
log_archive_dest_state_2必须是ENABLE(不是DEFER) -
log_archive_config必须包含主备DB_UNIQUE_NAME,格式如:'DG_CONFIG=(primary_db,standby_db)' - RAC环境下,
log_archive_dest_2建议显式加THREAD=1(按实际thread号)
RFS进程没启动?先看备库监听和网络连通性
备库RFS(Remote File Server)进程由主库LGWR或ARCH触发启动,但它本身不常驻——只有主库开始推送时它才拉起。所以“备库没收到Redo”时,RFS很可能根本没起来。
排查顺序:
- 在备库用
lsnrctl status确认监听器运行,且服务名匹配主库log_archive_dest_2中指定的TNS别名 - 从主库用
tnsping standby_tns_alias测试能否解析并连通,注意防火墙是否放行监听端口(默认1521) - 检查备库
$ORACLE_HOME/network/admin/listener.ora中,SID_LIST_LISTENER是否包含备库实例,且GLOBAL_DBNAME与主库配置的DB_UNIQUE_NAME一致 - 如果主库
log_archive_dest_2用了ASYNC模式,但备库监听器负载高或响应慢,RFS可能超时退出而不报错——此时告警日志里只有零星RFS[1]: Started,无后续
备库v$managed_standby里看不到RFS进程怎么办
这是最典型的“静默失败”信号。当v$managed_standby中PROCESS列查不到RFS,或者STATUS是NOT APPLYING且CLIENT_PROCESS为空,基本可锁定为传输层阻断。
不要直接重启MRP,先做两件事:
- 在主库强制切一次日志:
ALTER SYSTEM SWITCH LOGFILE;,再立刻查v$archive_dest的log_sequence是否+1 —— 如果没变,问题100%在主库出站配置 - 在备库手动启动RFS验证:用
sqlplus / as sysdba连接后执行ALTER SYSTEM ARCHIVE LOG CURRENT;,观察告警日志是否出现RFS[2]: Archived Log: 'xxx'—— 若仍无,说明监听或TNS配置有硬伤
真正棘手的点往往藏在细节里:比如主库log_archive_dest_2写了VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE),但备库角色是PHYSICAL STANDBY,RFS根本不认这个dest;又比如备库listener.ora里GLOBAL_DBNAME拼错了DB_UNIQUE_NAME一个字母,网络通、tnsping通,但RFS就是不肯注册。











