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. 最佳实践

  1. Fast-Start:自动
  2. Observer:第三地
  3. Flashback:启用
  4. 演练:定期
  5. 评估:RPO
  6. 服务:自动切换
  7. 应用:TAF/AC
  8. 监控:状态
  9. 文档:流程
  10. 回退:预案

15. 参考资料

[1] Oracle Data Guard 19c, “Failover” https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/