Oracle Data Guard如何配置级联备库

作者:袖梨 2026-08-17

级联备库必须在主库、中间备库、级联备库三端均配置完整的log_archive_config,中间备库需启用log_archive_dest_2并创建大小匹配的standby redo log,跨平台时须正确设置db_file_name_convert和log_file_name_convert。

级联备库必须启用log_archive_config且包含全部DB_UNIQUE_NAME

级联备库不是简单地把备库当主库用,它必须被主库和中间备库同时识别。最常踩的坑是只在主库配了 dg_config=(ORA11GR2,ORA11GR22),漏掉级联库 ORA11GR21,导致日志无法转发到第三层。

  1. log_archive_config 在三端都要设全:主库、中间备库、级联备库都得是 'dg_config=(ORA11GR2,ORA11GR22,ORA11GR21)'
  2. 中间备库(ORA11GR22)要额外开启归档传输服务,即配置 log_archive_dest_2 指向级联库,且状态必须为 ENABLE
  3. 级联备库自身不能有 log_archive_dest_2 —— 它只接收,不转发;若误配,会报 ORA-16057: DGID not in log_archive_config

中间备库必须开standby redo log且大小与主库online redo log一致

级联链路中,中间备库既是接收者又是转发者,它的RFS进程写入standby redo log后,LNS进程才能从中读取并重传。如果没建或大小不匹配,日志会在中间备库堆积,v$archived_logAPPLIED='NO'STANDBY_DEST 一直卡住。

  1. 查主库online redo log大小:select bytes from v$log;,假设是 52428800(50MB)
  2. 中间备库执行:alter database add standby logfile group 11 '/u01/oradata/ORA11GR22/redo11.log' size 50M;(至少比online组多一组)
  3. 确认创建成功:select group#, type, bytes/1024/1024 mb from v$logfile join v$standby_log using(group#);

跨平台级联需注意db_file_name_convert和log_file_name_convert路径格式

Windows → Linux 级联时,路径分隔符和盘符映射极易出错。Oracle不自动转换 C:app.../u01/app/...,必须显式声明,否则 ORA-27047: unable to read the first block of file 或控制文件加载失败。

  1. 中间备库(Windows)不用转路径;但级联备库(Linux)的pfile里必须配:db_file_name_convert='C:apporacleoradataOA','/opt/app/oracle/oradata/OA/'
  2. 注意双反斜杠 是Windows路径在Linux参数文件中的正确写法
  3. log_file_name_convert 同理,且两个参数值必须成对出现,缺一不可

验证级联是否真正生效的关键SQL

别只看 archive log listselect status from v$archive_dest,这些只能确认本地归档是否开启。真正要盯的是日志是否从主库→中间库→级联库逐跳传递。

  1. 在级联备库查:select dest_id, destination, status, error from v$archive_dest where dest_id in (1,2); —— dest_id=2 应指向中间备库,状态为 VALID
  2. 在中间备库查:select thread#, sequence#, applied from v$archived_log where first_time > sysdate-1 order by sequence# desc fetch first 5 rows only; —— applied='YES' 才说明它已消化完主库日志,才能转发
  3. 在级联备库查:select max(sequence#) from v$archived_log where applied='YES'; —— 这个值应略小于中间备库的最新sequence,差值通常 ≤2,超过5说明链路延迟严重

级联链路最脆弱的地方不在首尾,而在中间节点——它既要应用日志又要重传,I/O和网络抖动都会放大问题。配置完务必模拟一次主库日志切换(alter system switch logfile;),全程跟踪三端的 v$archived_log 变化节奏。

相关文章

精彩推荐