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

Oracle DataGuard 主备正常切换 (Switchover)

前言

众所周知,DataGuard 的切换分为两种情况:

  1. 系统正常情况下的切换:这种方式称为 switchover,是无损切换,不会丢失数据。
  2. 灾难情况下的切换:这种情况下一般主库已经启动不起来了,称为 failover,有可能会丢失数据,并且切换后原主库不再是该 Data Guard 配置的一部分。

Oracle DataGuard主备切换可以使用传统的手动命令切换,也可以使用dgmgr切换,本文将重点介绍在正常情况下运行的DG手动切换测试。

(一)将主库切换为物理备库

步骤 1:查看主库状态

SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    FOR_DATAGUAR GUARD_S
-------------------- ---------------- -------------------- ------------ --------
READ WRITE           PRIMARY          SESSIONS ACTIVE      YES          DISABLED NONE

注意:需要检查 SWITCHOVER_STATUS 参数,如果值为 “SESSION ACTIVE” 或者 “TO STANDBY”,则主数据库角色可以切换为备库角色。

步骤 2:将其切换到备库,切换后,数据库会关闭

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY [WITH SESSION SHUTDOWN];

注意:如果上一步的 SWITCHOVER_STATUS 参数值为 “TO STANDBY”,则 WITH SESSION SHUTDOWN 可以省略。

步骤 3:启动到 mount 状态

SQL> SHUTDOWN ABORT
SQL> STARTUP MOUNT

注意:11.2.0.4 版本及其以上版本不需要执行 SHUTDOWN ABORT,因为数据库已经在步骤 2 命令中关闭了。

(二)将备库切换成主库并启动到 open

步骤 1:查看备库状态

SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    FOR_DATAGUAR GUARD_S
-------------------- ---------------- -------------------- ------------ --------
READ ONLY WITH APPLY PHYSICAL STANDBY TO PRIMARY           YES          DISABLED NONE

注意:需要检查 SWITCHOVER_STATUS 参数,如果值为 “SESSION ACTIVE” 或 “TO PRIMARY”,则备库可以切换为主库。

步骤 2:切换到主库

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY [WITH SESSION SHUTDOWN];

注意:如果上一步的 SWITCHOVER_STATUS 参数值为 “TO PRIMARY”,则 WITH SESSION SHUTDOWN 可以省略。

步骤 3:此时数据库为 mount 状态,需打开数据库

SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    FOR_DATAGUAR GUARD_S
-------------------- ---------------- -------------------- ------------ --------
MOUNTED              PRIMARY          NOT ALLOWED          YES          DISABLED NONE
SQL> ALTER DATABASE OPEN;
Database altered.
SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    FOR_DATAGUAR GUARD_S
-------------------- ---------------- -------------------- ------------ --------
READ WRITE           PRIMARY          TO STANDBY           YES          DISABLED NONE
(三)新的备库开启日志应用
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

总结

通过上述步骤,可以完成 Oracle DataGuard 的主备切换。以下是一些注意事项:

  1. 检查 SWITCHOVER_STATUS:在进行切换前,确保 SWITCHOVER_STATUS 参数允许切换。
  2. 关闭和启动数据库:在切换过程中,确保数据库正确关闭和启动。
  3. 日志应用:切换完成后,确保新的备库开启日志应用。
http://www.lryc.cn/news/496125.html

相关文章:

  • 为什么编程语言会设计不可变的对象?字符串不可变?NSString *s = @“hello“变量s是不可变的吗?Rust内部可变性的意义?
  • 安装 RabbitMQ 服务
  • 爬虫—Scrapy 整合 ChromeDriver 实现动态网页拉取
  • Linux 进程管理详解
  • MySQL更新JSON字段key:value形式
  • vue.js学习(day 18)
  • WINDOWS 单链表SLIST_ENTRY使用
  • 【Linux 篇】Docker 容器星河与镜像灯塔:Linux 系统下解锁应用部署奇幻征程
  • 不同云计算网络安全等级
  • 手机实时提取SIM卡打电话的信令声音-蓝牙电话如何适配eSIM卡的手机
  • 视频流媒体服务解决方案之Liveweb视频汇聚平台
  • 【在Linux世界中追寻伟大的One Piece】多线程(三)
  • mvc命令
  • 17 go语言(golang) - 错误处理
  • PG 库停库超时异常案例
  • redis下载、基础数据类型、操作讲解说明,持久化、springboot整合等
  • [代码随想录06]哈希表的使用,有效字母异位词,两数组交集,快乐数,两数之和
  • 【CSS】一篇掌握CSS
  • 分层图最短路
  • vue3 基本使用
  • 【maven-4】IDEA 配置本地 Maven 及如何使用 Maven 创建 Java 工程
  • 种花问题算法
  • 对于大规模的淘宝API接口数据,有什么高效的处理方法?
  • openharmony 使用uvc库获取摄像头数据使用nativewindow显示
  • SQL Server 实战 - 多种连接
  • 【手术显微镜】市场高度集中,由于高端手术显微镜的制造技术主要掌握于欧美企业
  • IDEA 2024 配置Maven
  • Admin.NET框架使用宝塔面板部署步骤
  • Flutter中的Future和Stream
  • 107.【C语言】数据结构之二叉树求总节点和第K层节点的个数