Oracle Failover 详解
Oracle Failover 详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
Failover 是主库故障时备库升级为主[1]:
详细见:Oracle Switchover 详解、Oracle Data Guard Broker 详解。
2. 特点
2.1 紧急
- 主库不可用
- 故障
- 灾难
2.2 不可逆
- 备库升级主
- 旧主库废弃
- 需重建
2.3 数据
- 可能丢失
- 取决于保护模式
- RPO
3. 类型
3.1 手动
- DBA 执行
- 评估
- 命令
3.2 自动
- Fast-Start Failover
- Observer
- 自动
4. 前提
4.1 状态
- 主库故障
- 备库正常
- 已收到足够 Redo
4.2 GAP
- 检查 GAP
- 尽量修复
- 评估丢失
4.3 备库
- MOUNT 或 OPEN READ ONLY
- APPLY ON
5. 手动 Failover
5.1 检查
-- 备库
SELECT thread#, max(sequence#) FROM v$archived_log GROUP BY thread#;
SELECT uncovered_scn FROM v$database;
5.2 修复 GAP
-- 手动注册
ALTER DATABASE REGISTER PHYSICAL LOGFILE '...';
5.3 执行
-- 备库
ALTER DATABASE FAILOVER TO PHYSICAL STANDBY;
-- 或
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE OPEN;
6. Broker Failover
6.1 命令
DGMGRL> FAILOVER TO stby;
6.2 流程
1. 停止应用
2. 备库升级
3. 应用切换
4. 验证
6.3 自动
- Fast-Start Failover
- Observer 检测
- 自动执行
7. Fast-Start Failover
7.1 启用
DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold=30;
DGMGRL> ENABLE FAST_START FAILOVER;
7.2 Observer
dgmgrl -logfile observer.log sys/pwd@prod
DGMGRL> START OBSERVER;
7.3 触发
- 主库不可达
- Observer 检测
- 阈值(秒)
- 自动切换
7.4 条件
- 最大性能模式
- Observer 运行
- 备库正常
- 配置允许
8. 数据丢失
8.1 评估
- 保护模式
- GAP 情况
- RPO
8.2 最大性能
- 可能丢失
- 异步
- 评估
8.3 最大可用
- 正常零丢失
- 主库故障时可能
9. 旧主库
9.1 Reinstate
DGMGRL> REINSTATE DATABASE prod;
9.2 条件
- Flashback 启用
- 还原点
- 可恢复
9.3 重建
- 不能 Reinstate
- 重新创建备库
- RMAN DUPLICATE
10. 应用切换
10.1 服务
- 主角色服务启动
- 备角色服务停止
- 自动
10.2 连接
- TNS 重连
- 应用重连
- VIP/SCAN
10.3 验证
- 应用连接
- 数据
- 业务
11. 监控
11.1 状态
SELECT database_role, open_mode FROM v$database;
-- PRIMARY / READ WRITE
11.2 日志
- alert log
- Broker log
- Observer log
11.3 应用
- 连接
- 服务
- 性能
12. 演练
12.1 计划
- 模拟主库故障
- 执行 Failover
- 验证
12.2 频率
- 半年
- 年度
- 验证
12.3 改进
- 总结
- 优化
- 文档
13. 常见问题
13.1 ORA-16153
- 已是主库
- 检查
13.2 GAP
- 数据丢失
- 评估
- 修复
13.3 Reinstate 失败
- 无 Flashback
- 重建
14. 最佳实践
- Fast-Start:自动
- Observer:第三地
- Flashback:启用
- 演练:定期
- 评估:RPO
- 服务:自动切换
- 应用:TAF/AC
- 监控:状态
- 文档:流程
- 回退:预案
15. 参考资料
[1] Oracle Data Guard 19c, “Failover” https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/