当前位置: 首页 > news >正文

Oracle ADG 切换方式详解:Switchover 与 Failover 操作指南

引言

在 Oracle Data Guard(DG)环境中,切换操作是保障数据库高可用性和业务连续性的关键环节。根据不同的应用场景,Oracle DG 提供了两种主要的切换方式:switchover(正常切换)failover(故障转移)。本文将详细介绍这两种切换方式的定义、操作流程、状态校验及注意事项,帮助数据库管理员在实际环境中高效、安全地完成切换操作。


一、Switchover(正常切换)

Switchover 是一种计划内的、用户主动发起的切换操作。其特点是切换过程中不会丢失数据,且切换后 Data Guard 环境仍保持完整,主备关系可继续正常运行。Switchover 需先后对主库和备库进行操作。

(一)主库操作步骤

  1. 查看 switchover_status
    执行以下语句确认主库是否可切换:

    SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;
    

    SWITCHOVER_STATUSTO STANDBY,表示可正常切换。
    在这里插入图片描述

  2. 切换主库为物理备库
    根据上一步状态执行切换命令:

    • SWITCHOVER_STATUSTO STANDBY,可省略 WITH SESSION SHUTDOWN
      ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
      
    • 否则需强制执行:
      ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
      
  3. 重启至 MOUNT 状态

    • 11.2.0.4 及以上版本无需手动重启,切换命令自动处理。
    • 低版本需手动执行:
      SHUTDOWN ABORT;
      STARTUP MOUNT;
      
  4. 确认切换后状态
    验证主库是否已成功转换为备库:

    SELECT DB_UNIQUE_NAME, DATABASE_ROLE, PROTECTION_MODE, SWITCHOVER_STATUS, OPEN_MODE FROM V$DATABASE;
    

(二)备库操作步骤

  1. 查看备库状态
    确认备库可切换为主库:

    SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;
    

    SWITCHOVER_STATUSTO PRIMARYSESSION ACTIVE,表示可提升。

  2. 提升备库为主库
    根据状态执行提升命令:

    • 若状态为 TO PRIMARY,可省略 WITH SESSION SHUTDOWN
      ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
      
    • 否则需强制执行:
      ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
      
  3. 打开数据库并确认角色

    ALTER DATABASE OPEN;
    SELECT DATABASE_ROLE, OPEN_MODE FROM V$DATABASE;
    

二、Failover(故障转移)

Failover 是在主库发生故障时强制将备库提升为主库的操作。切换后原有的 DG 环境可能被破坏,且可能存在数据丢失(取决于主库故障前的保护模式)。若原主库启用了闪回数据库(Flashback Database),可在修复后重新加入环境作为新备库。

备库操作步骤

  1. 检查归档日志间隙
    查询是否存在未同步的日志:

    SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
    
  2. 手动注册缺失日志(如果存在间隙)
    将从原主库拷贝的归档日志注册至备库:

    ALTER DATABASE REGISTER PHYSICAL LOGFILE '/path/to/archive_log_sequence.rdo';
    
  3. 确认日志已应用至最新

    SELECT THREAD#, MAX(SEQUENCE#) OVER (PARTITION BY THREAD#) FROM V$ARCHIVED_LOG;
    
  4. 执行故障切换

    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
    ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
    ALTER DATABASE OPEN;
    

三、状态校验与后续操作

无论执行哪种切换,完成后均需进行以下检查:

1. 确认数据库角色

SELECT DATABASE_ROLE FROM V$DATABASE;

2. 检查 DG 进程状态

SELECT PROCESS, STATUS, THREAD#, SEQUENCE# FROM V$MANAGED_STANDBY;

3. 监控同步延迟

SELECT NAME, VALUE, UNIT, TIME_COMPUTED 
FROM V$DATAGUARD_STATS 
WHERE NAME IN ('transport lag', 'apply lag');

4. 注意事项

  • Switchover 需主备库网络连通且状态同步。
  • Failover 后需重新配置 DG 环境(若原主库可恢复,可通过闪回重建备库)。
  • 在最大性能模式下,failover 可能导致数据丢失,需评估业务容忍度。
  • 建议在生产环境中提前演练切换流程。

总结

Switchover 和 Failover 是 Oracle Data Guard 中两种关键的灾难恢复和高可用保障机制。前者适用于计划内维护,后者用于紧急故障响应。理解其原理、掌握操作步骤、并严格完成状态验证,是确保数据库业务连续性的基础。建议结合定期演练和监控工具,构建安全可靠的数据库容灾体系。

http://www.dtcms.com/a/343009.html

相关文章:

  • 〖领码方案〗前端 PageData 完整解决方案 第四版
  • 深度解析Structured Outputs:让AI输出严格遵循JSON Schema的结构化响应
  • 【日常学习】2025-8-21 了解些测试名词
  • 【GPT入门】第52课 openwebui安装与使用
  • Zynq中级开发七项必修课-第三课:S_AXI_GP0 主动访问 PS 地址空间
  • 通信算法之317:基于Xilinx FPGA平台的符号同步算法(接收序列与本地序列互相关-不共轭乘)
  • ODDR实现多bit单边沿采样数据转为多bit双沿采样数据
  • 前端-Vue笔记(核心语法)
  • linux内核 - 内存分配机制介绍
  • MySQL 8.4.6 LTS 安装教程 windows
  • 如何在mac玩windows游戏?3个工具推荐,不用换电脑!
  • MiniGPT-4
  • 在Excel和WPS表格中合并多个单元格这样最快
  • 第14章 结构和其他数据形式
  • 数据分类分级的关键难点以及应对之道
  • Go1.25的源码分析-src/runtime/runtime1.go(GMP)g
  • U盘安装 CentOS Stream 10 实战复盘:三大常见问题与解决方法
  • 通义千问VL-Plus:当AI“看懂”屏幕,软件测试的OCR时代正式终结!
  • Java 项目中 MySQL 数据向 Redis 迁移的技术实践与深度剖析
  • JVM 性能监控工具全解析:从命令行到可视化全方位指南
  • 图像形态学:膨胀、腐蚀和边缘检测与绘制
  • Java后端面试场景题大全:2025年高频考点深度解析
  • 大模型部署
  • 造成云手机闪退的原因有哪些?
  • 使用VBA宏批量修改Word中表格题注格式
  • HYPE分布式水文模型建模方法与案例分析实践技术应用
  • AI 时代的数字伦理选择题
  • Mac 电脑 IDEA 执行 Maven 出现 No route to host 问题
  • Django REST框架核心:GenericAPIView详解
  • 【力扣 买股票的最佳时机II Java/Python】