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

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.kler.cn/a/419728.html

相关文章:

  • 《沉积与特提斯地质》
  • PD虚拟机启动Windows系统突然黑屏的解决方法
  • 小程序-基于java+SpringBoot+Vue的养老院管理系统设计与实现
  • 【datasheet】LTC4412 (2)
  • 阿里重磅开源 Fluss: Flink Unified Streaming Storage
  • 宠物领养网络:SpringBoot的实现之道
  • Android studio 签名加固后的apk文件
  • YOLOv1 (You Only Look Once)
  • 如何使用 Jenkins 集成 Docker 以实现自动化 CI/CD 流程
  • 递归1——递归入门
  • 计算机网络复习2——物理层
  • C++多线程——原子操作(atomic)
  • Ardusub源码剖析——control_manual.cpp
  • 【网络安全设备系列】1、防火墙
  • Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录
  • 二分法篇——于上下边界的扭转压缩间,窥见正解辉映之光(2)
  • 【深度学习】利用Java DL4J 优化金融投资组合
  • Equirectangular to Perspective(E2P)算法详解(附代码)
  • 从最浅层剖析C语言————第六节(深入了解数组传参、嵌套调用以及链式访问)
  • UI设计从入门到进阶,全能实战课