Far Sync部署前必须满足三个前提:主库开启FORCE LOGGING;LOG_ARCHIVE_DEST_n配置SYNC AFFIRM与NET_TIMEOUT≤30并指向Far Sync的DB_UNIQUE_NAME;Far Sync主机能稳定访问主库传输端口且时间偏差≤5秒。
Far Sync 实例部署前必须确认的 3 个前提
far sync 不是加台机器就能用的“插件”,它本质是 oracle data guard 架构中一个特殊角色的物理 standby,依赖主库的实时归档(archivelog + force logging)和网络低延迟同步能力。没满足这三点,部署完也起不来,或者起得来但不生效。
必须在主库开启:否则 DML 操作可能绕过重做记录,Far Sync 收不到完整变更流
主库
配置必须包含
+
(建议 ≤30),且目标指向 Far Sync 的
Far Sync 实例所在主机必须能稳定访问主库的
传输端口(默认 1521),且时间偏差 ≤5 秒(
或
必须跑着)
创建 Far Sync 实例时最容易配错的参数
Far Sync 不开实例进程、不挂数据文件、不启 MRP,但它对
参数极其敏感。常见错误是照搬普通 standby 的配置,结果启动报
或反复断连。
和
必须设为空(
):Far Sync 不参与归档缺失拉取,设了反而触发无意义重试
必须与
中指定的一致,大小写敏感;主库配置里写的是
,这里就不能写成
必须为
:Far Sync 不管理数据文件,设
会导致启动卡在控制文件验证阶段
要显式列出所有参与节点,例如:
,漏掉任意一个,
就认不出拓扑
Far Sync 启动后立刻要验证的 2 个关键状态
启动
连上去看到
并不表示 Far Sync 在工作——它压根不该 open。真正有效的状态藏在后台日志和 DG 视图里。
查
:重点关注
和
,二者都应稳定在
;若 transport lag 持续增长,说明主库归档没成功推到 Far Sync 的 standby redo log
查
:对应 Far Sync 的
行,
必须是
,
列为空,
是
,
是
别信
:Far Sync 返回
是对的,不是 bug;但它不会显示
字样——这个角色只在
里体现
主库切换后 Far Sync 自动失效的典型表现与修复
Far Sync 在 switchover 后不会自动重连新主库,这是设计使然,不是故障。现象是原主库变 standby 后,Far Sync 日志里持续刷
,DG Broker 显示
,但不报错也不告警。
必须手动在新主库上执行:
(注意
编号要和原配置一致)
Far Sync 本体不需要重启,但需在新主库上执行
触发一次归档推送,之后观察
是否恢复
如果用了
,切完后立即运行
,否则 Broker 可能沿用旧模式缓存
Far Sync 的“零丢失”保障完全依赖主库归档流的完整性校验,而这个校验只发生在主库侧。任何网络抖动、防火墙策略变更、甚至临时 DNS 解析失败,都会让 transport lag 突然跳升——监控不能只看是否连接,得盯住秒级 lag 值本身。
FORCE LOGGINGLOG_ARCHIVE_DEST_nSYNC AFFIRMNET_TIMEOUTDB_UNIQUE_NAMEstandby redo logsntpdchronydinit.oraORA-16664: unable to retrieve the result from a databaseFAL_SERVERFAL_CLIENT''DB_UNIQUE_NAMELOG_ARCHIVE_DEST_nfar_sync_01FarSync01STANDBY_FILE_MANAGEMENTMANUALAUTOLOG_ARCHIVE_CONFIG'DG_CONFIG=(primary_db,far_sync_01,physical_standby_01)'DGMGRLSQL*PlusOPEN MODE = READ ONLY WITH APPLYV$DATAGUARD_STATStransport lagapply lag+00 00:00:00V$ARCHIVE_DEST_STATUSDEST_IDSTATUSVALIDERRORTRANSMIT_MODESYNCDELAY_MINS0SELECT DATABASE_ROLE FROM V$DATABASEPHYSICAL STANDBYFAR SYNCDGMGRL SHOW CONFIGURATIONORA-16778: redo transport errorWarning: ORA-16778ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=far_sync_01 SYNC AFFIRM NET_TIMEOUT=30 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=far_sync_01';DEST_2ALTER SYSTEM SWITCH LOGFILEV$ARCHIVE_DEST_STATUSVALIDDGMGRLEDIT DATABASE 'far_sync_01' SET PROPERTY 'LogXptMode'='SYNC';