级联备库需显式启用,非默认选项;一级备库须处于OPEN状态、配置VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)及ENABLE,并确保TNS可达与网络放行,否则将出现ORA-16778等传输错误。

级联备库不是默认选项,必须显式启用
Oracle Data Guard 默认只支持主库 → 单层备库的直连结构。级联(Cascade)意味着主库不直接向二级备库传输日志,而是由一级备库中转转发。这需要在一级备库上开启 LOG_ARCHIVE_DEST_n 的 VALID_FOR=(STANDBY_LOGFILE,PRIMARY_ROLE) 或更关键的 ENABLE + SYNC/ASYNC 组合,并且该一级备库必须处于 OPEN READ ONLY 或 READ WRITE 模式(即 ADG 或快照备库),不能是纯 MOUNT 状态的物理备库——否则无法发起归档传输。
常见错误现象:ORA-16778: redo transport error for destination 或 LGWR: Failed to archive log,往往是因为一级备库未配置监听器、TNS 别名不可达,或未设置 log_archive_dest_state_n=ENABLE。
- 一级备库必须启用归档模式(即使它本身是备库)
- 一级备库的
DB_UNIQUE_NAME必须出现在主库的LOG_ARCHIVE_CONFIG中,同时也要出现在它自己发往二级备库的LOG_ARCHIVE_CONFIG中 - 二级备库的
DB_UNIQUE_NAME只需出现在一级备库的LOG_ARCHIVE_CONFIG里,主库无需知晓它的存在
一级备库的 LOG_ARCHIVE_DEST_n 配置要点
级联能否成立,核心看一级备库是否能“扮演临时主库”角色。它需要通过 LOG_ARCHIVE_DEST_2(或其他可用编号)把接收到的 Standby Redo Log 归档后,再转发给二级备库。典型配置如下:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=standby2 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl_standby2' SCOPE=BOTH;
注意三个关键点:
-
SERVICE=standby2必须对应一级备库tnsnames.ora中定义的 TNS 别名,且该别名指向二级备库的监听地址 -
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)是常见误配点:一级备库此时是STANDBY_ROLE,但归档动作发生在它应用完 SRL 后写本地归档时,所以应设为(STANDBY_LOGFILES,STANDBY_ROLE)或更稳妥的(ALL_LOGFILES,ALL_ROLES) - 必须执行
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;,否则参数只是静态定义,不生效
级联链路的监控与故障点定位
级联架构下,日志从主库 → 一级备库 → 二级备库,中间任一环节中断都会导致二级备库延迟飙升,但主库和一级备库的 V$ARCHIVE_DEST_STATUS 可能都显示 VALID,掩盖真实问题。
真正有效的检查路径是分段确认:
- 主库侧:查
V$ARCHIVE_DEST_STATUS中DEST_ID=1(一级备库)的STATUS和ERROR字段,确认传输无积压 - 一级备库侧:查
V$ARCHIVED_LOG中最近归档是否包含DEST_ID=2(即发往二级备库的归档记录),再查V$ARCHIVE_DEST_STATUS中对应DEST_ID的TRANSMIT_MODE是否为ASYNC、STATUS是否为VALID - 二级备库侧:查
V$ARCHIVED_LOG的APPLIED列是否持续更新,以及SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY;中是否有MRP进程在运行
容易被忽略的是网络连通性方向:一级备库到二级备库的出向连接(非反向),常因防火墙策略只放行主→一级,却漏掉一级→二级的端口(通常是 1521 或自定义监听端口)。
级联 vs Far Sync:别混淆用途
级联备库和 Far Sync 实例都涉及“中间节点”,但设计目标完全不同。Far Sync 是轻量级实例,仅接收并转发 REDO,不存数据文件、不提供读服务,只为跨长距离实现 SYNC 保护;而级联备库是完整数据库实例,可对外提供只读服务(ADG)、承担备份任务、甚至作为下游 CDC 的解析源。
如果你的真实需求是“主库在杭州,二级备库在新加坡,又不想牺牲主库性能”,应该部署 Far Sync(杭州本地)+ 异步传至新加坡,而不是级联——因为级联的一级备库若也在杭州,它和主库之间仍是 SYNC/ASYNC 直连,对主库没减负;若强行把一级备库放在新加坡,那它到主库的延迟本身就已破坏 SYNC 可用性。
级联真正的价值场景是:主库在 A 城市,一级备库在 B 城市(同城容灾),再由 B 城市的一级备库级联一份到 C 城市(异地灾备),这样既满足同城快速切换,又保留异地兜底能力,且 B 城市的网络出口带宽可控。


















