Oracle Data Guard异地三中心需拆解为两段独立链路:同城同步(SYNC)+异地异步(ASYNC),FSFO仅支持主-同城对,异地需手动切换,归档策略须分层配置,Far Sync仅作中继不参与角色切换。

Oracle Data Guard 支持异地三中心,但不能靠单一配置“开箱即用”——必须拆解为两段同步链路,并明确每段的保护模式、网络延迟容忍度和角色切换边界。
物理备库链路必须分两段:同城同步 + 异地异步
两地三中心本质是“生产中心 → 同城灾备中心 → 异地灾备中心”,Data Guard 不支持三级级联自动转发 redo。你得手动建两条独立的 Standby 链路:
-
LOG_ARCHIVE_DEST_2指向同城灾备(同城 RAC 或单实例),设为SYNC模式,启用REOPEN=5防瞬断; -
LOG_ARCHIVE_DEST_3指向异地灾备(单独 DG 配置),必须设为ASYNC,否则主库事务会因跨地域网络抖动而超时挂起; - 同城备库自身要开启
LOG_ARCHIVE_DEST_STATE_2=ENABLE,把它当“中继主库”,再向异地推送归档(需额外配置LOG_ARCHIVE_CONFIG和DB_UNIQUE_NAME避免冲突)。
FSFO 只能管一对主备,不能跨三中心自动切换
Fast-Start Failover 要求主库与备库之间有心跳检测通道,且只能绑定一个 Standby Database。三中心场景下:
- FSFO 只能部署在生产中心与同城灾备之间(
FAST_START_FAILOVER_TARGET只能填一个 DB_UNIQUE_NAME); - 异地灾备无法参与 FSFO,它只能靠手动
ALTER DATABASE COMMIT TO SWITCHOVER或脚本触发切换; - 若同城中心也失效,必须先在异地灾备上执行
FLASHBACK DATABASE回退到最近一致 SCN,再激活——这步没自动化,RTO 会跳变。
归档日志保留策略必须分层设置
异地灾备因网络延迟大、带宽受限,归档应用常滞后。单纯靠 ARCHIVE_LAG_TARGET 无效,得靠归档生命周期管理:
- 同城备库:设
ARCHIVE_LAG_TARGET=300(5 分钟),配合LOG_ARCHIVE_MIN_SUCCEED_DEST=2确保至少本地 + 同城归档成功才允许提交; - 异地备库:禁用
ARCHIVE_LAG_TARGET,改用RECOVERY_WINDOW OF 72 HOURS保证归档不被过早清理; - 主库上运行
RMAN CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY,避免异地备库还没应用就删归档。
Far Sync 实例只缓解延迟,不解决三中心角色编排
Far Sync 是轻量中继,适合长距离 SYNC 场景,但它本身不存数据、不可读、不能切主——只是个“确认代理”:
- 它可放在同城机房,接收主库
SYNCredo,再以ASYNC转发给异地备库,降低主库等待时间; - 但它不能替代同城灾备节点,也不能参与 FSFO 角色判定;
- Far Sync 实例故障时,主库会降级为
MAXIMUM PERFORMANCE模式,异地同步变成纯异步,RPO 上升——这点容易被忽略。
三中心真正的复杂点不在配置语法,而在角色状态的边界定义:同城备库何时算“可用”、异地备库是否接受 switchover、归档缺口超过多少分钟就必须人工干预——这些没法靠参数自动判断,得靠定期 DG_BROKER 检查脚本 + 监控 V$DATAGUARD_STATS 的 APPLY_LAG_TIME 和 TRANSPORT_LAG_TIME 值来兜底。


















