log_archive_config必须在主库、中间备库、级联备库三端完全一致,如'dg_config=(ora11gr2,ora11gr22,ora11gr21)',缺一即导致ora-16057或日志卡在中间备库;中间备库须配log_archive_dest_2并建大小匹配的standby redo log,级联备库禁配log_archive_dest_2。

log_archive_config 必须在主库、中间备库、级联备库三端完全一致,否则日志根本传不到第三层。
log_archive_config 配置必须三端对齐
级联备库不是“把中间备库当主库用”,而是整个链路中被主库和中间备库共同识别的独立节点。最常踩的坑是只在主库配了 dg_config=(ORA11GR2,ORA11GR22),漏掉级联库的 ORA11GR21,结果 v$archive_dest 里 dest_id=2 一直显示 ERROR 或 INACTIVE,日志卡在中间备库不往下走。
三端都得设成一模一样的值:
- 主库:
log_archive_config='DG_CONFIG=(ORA11GR2,ORA11GR22,ORA11GR21)' - 中间备库(ORA11GR22):
log_archive_config='DG_CONFIG=(ORA11GR2,ORA11GR22,ORA11GR21)' - 级联备库(ORA11GR21):
log_archive_config='DG_CONFIG=(ORA11GR2,ORA11GR22,ORA11GR21)'
少一个 DB_UNIQUE_NAME,ALTER SYSTEM SET log_archive_dest_2='SERVICE=ORA11GR21...' ENABLE 就会报 ORA-16057: DGID not in log_archive_config。
中间备库必须开 standby redo log 且大小匹配
中间备库既是接收者又是转发者:RFS 进程先写入 standby redo log,LNS 才能从中读取并重传。如果没建、建少了或大小不一致,日志会在中间备库堆积,v$archived_log 里 APPLIED='NO',STANDBY_DEST 卡住不动。
操作要点:
- 查主库 online redo log 大小:
select bytes from v$log;(比如 52428800 = 50MB) - 中间备库至少加一组比 online 组多的 standby log:
alter database add standby logfile group 11 '/u01/oradata/ORA11GR22/redo11.log' size 50M; - 验证:
select group#, type, bytes/1024/1024 mb from v$logfile join v$standby_log using(group#);—— 确保有STANDBY类型且大小正确
中间备库要配 log_archive_dest_2,级联备库不能配
中间备库负责转发,所以必须显式启用归档传输服务;级联备库只收不转,若误配 log_archive_dest_2,它会试图往不存在的第四方发日志,直接触发 ORA-16057 或归档挂起。
配置差异:
- 中间备库(ORA11GR22)需启用:
log_archive_dest_2='SERVICE=ORA11GR21 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORA11GR21',且状态必须为ENABLE - 级联备库(ORA11GR21)的
log_archive_dest_2必须为空或注释掉,只保留log_archive_dest_1本地归档 - 检查是否生效:
select dest_id, destination, status, error from v$archive_dest where dest_id = 2;—— 中间备库该行应为VALID,级联备库该行应为DISABLED或不存在
跨平台级联时 db_file_name_convert 和 log_file_name_convert 易错
Windows 主库 → Linux 级联备库这类场景,路径映射稍有偏差就会导致控制文件加载失败或 ORA-27047: unable to read the first block of file。
关键细节:
-
db_file_name_convert和log_file_name_convert必须成对出现,值一一对应,不能只配一个 - Windows 路径在 Linux 参数文件中要用双反斜杠:
'C:\oradata\ORCL\','/u01/oradata/ORCL/' - 注意盘符映射:Oracle 不自动转换
C:,必须显式声明目标目录,且确保目标路径真实存在、权限正确 - 验证方式:在级联备库
startup nomount后执行show parameter convert,确认参数已加载;再startup mount看是否报路径相关错误
真正难调试的点往往不在主流程,而在三端 log_archive_config 的拼写一致性、中间备库 standby log 的数量与大小、以及跨平台时路径字符串里那几个反斜杠——少一个就全链路中断。











