Far Sync实例是跨地域Data Guard中解决log file sync等待飙升、主库事务卡顿的刚性需求,不存数据只做redo中转,必须满足网络延迟≤5ms、参数一致、角色切换兼容、仅MOUNT不能OPEN四大硬性条件。
far sync 实例不是“锦上添花”的可选项,而是跨地域 data guard 部署中解决 log file sync 等待飙升、主库事务卡顿的刚性需求。它不存数据,只做 redo 中转,但配置错一个参数,就可能让 rpo=0 失效或实例挂载失败。
Far Sync 实例必须满足的 4 个硬性启动条件
缺一不可,否则 STARTUP MOUNT 直接报错或后续日志传输中断:
-
db_unique_name必须全局唯一——不能和主库(如orcl)、备库(如orcldg)重名,也不能带下划线或后缀(orcl_farsync不合法),推荐用简短全大写,如FSTOR - 控制文件必须由主库显式生成:
ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/path/controlfs.ctl';,手动CREATE CONTROLFILE或从备份恢复会失败 - 密码文件必须复制主库原始文件并重命名——例如主库密码文件是
orapworcl,Far Sync 的db_unique_name是FSTOR,则目标文件名必须为orapwFSTOR;用orapwd重建会拒绝认证 -
LOG_ARCHIVE_CONFIG必须在主库、Far Sync、备库三端完全一致,例如:'DG_CONFIG=(orcl,FSTOR,orcldg)',漏掉任意一个db_unique_name,ARCH进程就不发日志
主库 LOG_ARCHIVE_DEST_n 配置常见错误组合
把 Far Sync 当成普通物理备库配,是线上最常导致日志不发送或角色切换后路径失效的原因:
- 必须用
SERVICE=<tns_alias> SYNC AFFIRM</tns_alias>——AFFIRM表示 Far Sync 写入磁盘才返回确认,这是 RPO=0 的前提;NOAFFIRM仅写内存,Far Sync 崩溃即丢日志 - 必须指定
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)——否则主库切为备库后该归档路径自动禁用,无法回切,SWITCHOVER后同步中断 - 建议加
REOPEN=5,避免网络抖动反复触发ORA-16792(Data Guard 配置不一致告警) - 示例正确命令:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=farsync_tor SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) REOPEN=5';
Far Sync 实例自身严禁启用 ADG 功能
它没有数据文件,所有涉及“打开”“恢复”“文件管理”的操作都会直接报错:
-
ALTER DATABASE OPEN或ALTER DATABASE RECOVER MANAGED STANDBY DATABASE—— 报ORA-16664或ORA-16191,Far Sync 只能MOUNT -
STANDBY_FILE_MANAGEMENT=AUTO—— 无意义且可能干扰日志应用逻辑,应保持默认MANUAL -
ADG_REDIRECT_DML或任何 DML/SQL 相关参数 —— Far Sync 不解析 SQL,只转发 redo,启用会报错或静默忽略 - 检查状态唯一可靠方式:
SELECT DATABASE_ROLE, OPEN_MODE FROM V$DATABASE;,返回FAR SYNC和MOUNTED才算正常
网络与角色切换兼容性容易被忽略的关键点
Far Sync 的价值建立在低延迟和角色透明基础上,这两点一旦松动,RTO/RPO 就失控:
- 网络延迟必须 ≤5ms(单向)——这不是建议值,而是 Oracle 官方硬性要求;实测要用
tcpping或hping3 -S测 TCP 握手延迟,pingICMP 不代表 Oracle LGWR 流量真实延迟 - 所有节点(主、Far Sync、备)的
compatible、db_name、log_archive_config必须严格一致,否则SWITCHOVER后新主库无法识别原 Far Sync 节点 - Far Sync 不能部署在 ASM 上——控制文件路径必须是本地文件系统(如
/u01/app/oracle/oradata/fstor/controlfs/controlfs.ctl),ASM 路径会导致STARTUP失败 - 如果备库也在异地,建议在备库近端再部署一个 Far Sync(如
FSSYD),否则主库切为备库后,原 Far Sync 到新主库的链路可能因距离过远而超时
Far Sync 最容易出问题的地方不在创建过程,而在角色切换后的路径继承和网络链路稳定性。上线前务必用 SWITCHOVER TO <far_sync_name></far_sync_name> 模拟一次反向切换,并抓包验证 redo 是否真实走到了目标路径——很多故障直到真正 failover 才暴露,那时已来不及补救。



















