Oracle Switchover 详解
Oracle Switchover 详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
Switchover 是计划内主备角色转换[1]:
详细见:Oracle Data Guard Broker 详解、Oracle Failover 详解。
2. 特点
2.1 计划内
- 维护
- 升级
- 测试
- 零数据丢失
2.2 角色
- 主库 -> 备库
- 备库 -> 主库
- 互换
2.3 可逆
- 可切换回
- 可重复
- 灵活
3. 前提
3.1 状态
- 主备正常
- Redo 同步
- 无 GAP
3.2 备库
- Active Data Guard
- 或 MOUNT
- APPLY ON
3.3 网络
- 主备互通
- 监听正常
- 服务名
4. 验证
4.1 主库
SELECT switchover_status FROM v$database;
-- TO STANDBY:可切换
-- SESSIONS ACTIVE:有会话
4.2 备库
SELECT switchover_status FROM v$database;
-- TO PRIMARY
-- SESSIONS ACTIVE
4.3 GAP
-- 主库
SELECT max(sequence#) FROM v$archived_log WHERE dest_id=2;
-- 备库
SELECT max(sequence#) FROM v$archived_log WHERE applied='YES';
-- 一致
5. SQL 命令
5.1 主库转备
-- 主库
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
WITH SESSION SHUTDOWN;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
5.2 备库转主
-- 备库
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
WITH SESSION SHUTDOWN;
ALTER DATABASE OPEN;
5.3 旧主库应用
-- 旧主库(现备库)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
6. Broker
6.1 一键
DGMGRL> SWITCHOVER TO stby;
6.2 流程
1. 验证
2. 主库转备
3. 备库转主
4. 应用切换
5. 旧主库应用
6.3 验证
DGMGRL> SHOW CONFIGURATION;
7. 应用切换
7.1 服务
- 主角色服务
- 备角色服务
- 自动切换
7.2 连接
- TNS 重连
- 应用重连
- TAF
7.3 VIP/SCAN
- RAC 环境
- 服务迁移
- 透明
8. 11g+ 增强
8.1 透明
- 11g+
- 应用无感知
- 快速
8.2 在线
- 不停止
- 业务连续
- 零停机
8.3 自动
- Broker
- 一键
- 自动
9. 监控
9.1 状态
SELECT database_role, open_mode, switchover_status
FROM v$database;
9.2 日志
- alert log
- drc<sid>.log
- Broker log
9.3 应用
- 连接
- 服务
- 验证
10. 演练
10.1 测试
- 定期
- 季度
- 验证
10.2 流程
1. 通知
2. 应用准备
3. Switchover
4. 验证
5. 应用切换
6. 监控
10.3 回退
- 切换回
- 验证
- 文档
11. 常见问题
11.1 ORA-16139
- 未恢复完成
- 等待
- 重试
11.2 SESSIONS ACTIVE
- 活跃会话
- WITH SESSION SHUTDOWN
- 强制
11.3 GAP
- 未同步
- 修复 GAP
- 重试
12. 最佳实践
- Broker:使用
- 验证:切换前
- GAP:确保无
- 应用:TAF/AC
- 服务:角色切换
- 监控:状态
- 演练:定期
- 低峰:执行
- 文档:流程
- 回退:预案
13. 参考资料
[1] Oracle Data Guard 19c, “Role Transitions” https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/