启用 Fast-Start Failover(FSFO)并启动 observer
OracleData Guard命令
# 1) Targets and threshold (seconds):
EDIT DATABASE '<primary_db_unique_name>' SET PROPERTY FastStartFailoverTarget='<standby_db_unique_name>';
EDIT DATABASE '<standby_db_unique_name>' SET PROPERTY FastStartFailoverTarget='<primary_db_unique_name>';
EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold=30;
# 2) MaxAvailability for zero data loss (SYNC/FASTSYNC transport):
EDIT DATABASE '<primary_db_unique_name>' SET PROPERTY LogXptMode='FASTSYNC';
EDIT DATABASE '<standby_db_unique_name>' SET PROPERTY LogXptMode='FASTSYNC';
EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
# Acceptable loss in MaxPerformance: EDIT CONFIGURATION SET PROPERTY FastStartFailoverLagLimit=30;
ENABLE FAST_START FAILOVER;
# 3) Observer: on a third server, separate from primary and standby (passwordless connection via wallet)
dgmgrl /@<primary_tns> "START OBSERVER obs1 IN BACKGROUND FILE IS '/u01/app/oracle/dg/fsfo_obs1.dat' LOGFILE IS '/u01/app/oracle/dg/obs1.log' CONNECT IDENTIFIER IS <primary_tns>"
# 4) Verify:
SHOW FAST_START FAILOVER;
SHOW OBSERVER;作用
当主库不可达时,observer 在超过阈值后自动故障转移到备库,并在旧主库恢复时自动 reinstate。
适用场景
用于 RTO 目标为分钟级、无法等待人工干预的关键系统。
注意
observer 不得与主库或备库运行在同一服务器/数据中心;否则 FSFO 在站点丢失时会失效,或在网络分区期间做出错误决定。两个数据库都必须启用 flashback。阈值过低会把短暂的网络抖动变成不必要的故障转移。计划内维护时,在关闭主库前执行 DISABLE FAST_START FAILOVER 或考虑 observer 的影响。