ora-16401不是故障,而是rfs发现重复归档时的信息性提示;只要v$archive_gap无缺口、applied持续更新,就无需干预,其本质是多归档源写入同一路径导致的重复尝试。

ORA-16401 不是真正需要“修复”的错误,它只是 RFS 进程发现重复归档文件时打的一条诊断日志,不影响日志应用(Media Recovery)和 Data Guard 正常运行。
为什么 ORA-16401 会频繁出现?
根本原因是多个归档源同时往同一个物理路径写入相同序列号的归档日志。常见组合包括:
- 主库通过
log_archive_dest_2主动传输归档到备库的standby_archive_dest - 备库自身也配置了
log_archive_dest_1或log_archive_dest_2指向本地同一目录(比如/u01/arch) - 结果:主库传来的
1_34801_692846987.dbf和备库自己归档的同名文件冲突,RFS 拒绝二次写入
如何确认是否属于重复归档冲突?
查备库 alert 日志里 ORA-16401 出现前后几行,重点关注:
- 是否有连续两条
Media Recovery Log /path/to/1_xxx_yyy.dbf记录?说明日志已被成功应用 - 是否有
RFS[2]: Successfully opened standby log?说明 RFS 正常工作 - 检查
show parameter log_archive_dest和show parameter standby_archive_dest,看是否存在路径重叠
要不要改参数?怎么改才安全?
如果确认是路径重叠导致,建议调整而非禁用归档目标。关键点:
- 备库的
log_archive_dest_1必须设为LOCATION=USE_DB_RECOVERY_FILE_DEST或指向独立目录(如/u02/arch_local),不能和standby_archive_dest相同 -
standby_archive_dest应保持默认值(?/dbs/arch)或明确指向主库传输归档的接收目录(如/u01/arch_remote) - 修改后执行
alter system set log_archive_dest_1='...' scope=both;,无需重启实例 - 切勿把
log_archive_dest_2在备库上启用(除非你真要级联 DG),否则它会主动归档并再次撞上主库传来的文件
真正要警惕的是:当 ORA-16401 伴随 Media Recovery Waiting for thread X sequence Y 长时间不推进,才说明有真实 GAP 或网络问题——这时该查 FAL、网络连通性、磁盘空间,而不是盯着 ORA-16401 本身。











