Oracle 高可用自动化详解

Oracle 高可用自动化详解

适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

高可用自动化减少人工干预[1]:

详细见:Oracle Failover 详解Oracle 应用连续性详解


2. 自动化目标

2.1 快速

- 秒级故障切换
- 自动
- 无人工

2.2 可靠

- 一致
- 可预测
- 稳定

2.3 透明

- 应用无感知
- 业务连续
- 用户体验

3. Fast-Start Failover

3.1 启用

DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold=30;
DGMGRL> ENABLE FAST_START FAILOVER;

3.2 Observer

dgmgrl -logfile observer.log sys/pwd@prod
DGMGRL> START OBSERVER;

3.3 行为

- 主库故障
- Observer 检测
- 30 秒阈值
- 自动切换

详细见:Oracle Failover 详解


4. 服务自动切换

4.1 Preferred/Available

- Preferred 故障
- 服务切到 Available
- 自动

4.2 角色

- Switchover/Failover
- 角色服务
- 自动

4.3 配置

srvctl add service -d prod -s prod_svc \
  -preferred prod1,prod2 \
  -available prod3 \
  -role primary

5. 应用重连

5.1 TAF

- 透明故障切换
- 自动重连
- SELECT 恢复

5.2 FCF

- Fast Connection Failover
- 连接池
- 快速

5.3 AC/TAC

- 事务重试
- 透明
- 连续

详细见:Oracle 应用连续性详解


6. 自动重启

6.1 实例

- Oracle Restart
- 单实例
- 自动重启

6.2 RAC

- 集群管理
- 实例故障
- 自动重启

6.3 配置

srvctl modify database -d prod -restartpolicy ALWAYS

7. 自动备份

7.1 调度

- RMAN 调度
- 自动
- 定期

7.2 验证

- 自动验证
- 完整性
- 可恢复

7.3 清理

- 过期清理
- 保留
- 空间

8. 自动监控

8.1 脚本

- 定时监控
- 告警
- 自动

8.2 工具

- OEM
- Prometheus
- 自动

8.3 响应

- 自动告警
- 通知
- 处理

9. 自动扩展

9.1 表空间

- AUTOEXTEND
- 自动扩展
- 监控

9.2 ASM

- 添加磁盘
- Rebalance
- 自动

9.3 资源

- CPU
- 内存
- 自动

10. 自动化脚本

10.1 监控

#!/bin/bash
# ha_monitor.sh
# 检查集群
crsctl stat res -t | grep -E 'OFFLINE'

# 检查 Data Guard
sqlplus -s / as sysdba <<EOF
SELECT name, value FROM v$dataguard_stats;
EOF

10.2 告警

#!/bin/bash
# alert.sh
if [ -n "$ALERT" ]; then
  mail -s "HA Alert" dba@example.com < alert.log
fi

10.3 调度

# crontab
*/5 * * * * /u01/scripts/ha_monitor.sh
*/10 * * * * /u01/scripts/ha_alert.sh

11. OEM 自动化

11.1 监控

- 自动发现
- 监控
- 告警

11.2 作业

- 自动备份
- 自动维护
- 调度

11.3 修正

- 自动修正
- 告警响应
- 处理

12. 应用场景

12.1 节点故障

- RAC 切换
- 服务迁移
- 自动

12.2 数据库故障

- Fast-Start Failover
- 自动切换
- 秒级

12.3 维护

- 滚动升级
- 自动
- 零停机

13. 限制

13.1 复杂

- 自动化复杂
- 配置
- 测试

13.2 误判

- 网络抖动
- 误切换
- 评估

13.3 控制

- 平衡
- 人工干预
- 控制

14. 常见问题

14.1 误切换

- 网络抖动
- 阈值
- 调整

14.2 不切换

- 条件不满足
- 检查
- 修复

14.3 失败

- 脚本错误
- 测试
- 修复

15. 最佳实践

  1. Fast-Start:自动
  2. Observer:第三地
  3. 服务:自动切换
  4. AC/TAC:应用
  5. 监控:自动
  6. 告警:阈值
  7. 测试:充分
  8. 文档:流程
  9. 演练:故障
  10. 改进:持续

16. 参考资料

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