手把手教你Oracle DataGuard主备切换(switchover)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 手把手教你Oracle DataGuard主备切换(switchover)

Oracle DataGuard主备切换有两种方式,一种是手动,一种是使用dgmgr切换。今天主要来讲第一种。

一、手动切换

(一)先查看主备库的状态何日志是否正常

1、主库

  1. SQL>set line 300 pages 300
  2. select name,remote_archive,database_role,guard_status,db_unique_name from v$database;

  1. SQL>SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME  FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

2、备库

  1. SQL>set line 300 pages 300
  2. select name,remote_archive,database_role,guard_status,db_unique_name from v$database;

  1. SQL>SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME  FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

3、再查看是否可以进行切换

在主库

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

  1. SQL> set line 300 pages 300
  2. SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;

4、进行主备切换

将其切换到备库,切换后,数据库会关闭

  1. SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

5、将主库启动到mount状态

  1. SQL> SHUTDOWN ABORT #11.2.0.4以下低版本执行,高版本不需要执行
  2. SQL> STARTUP MOUNT

6、将备库切换成主库并启动到open

查看备库状态

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

  1. SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;

7、切换到主库

  1. SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

8、打开数据库

此时数据库为mount状态,需打开数据库

  1. SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;
  2. SQL> ALTER DATABASE OPEN ;

再次查看备份的SWITCHOVER_STATUS是否变为TO STANDBY

  1. SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;

9、新的备库开启日志应用

  1. SQL> ALTER DATABASE OPEN;
  2. SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

10、验证是否切换成功

原主库现备库查看

  1. SQL> set linesize 999
  2. select name,open_mode,database_role,protection_mode,switchover_status from v$database;

原备库现主库查看

  1. SQL> set linesize 999
  2. select name,open_mode,database_role,protection_mode,switchover_status from v$database;

我们可以看到主备已经切换完成,整个过程也比较顺利。期间也出现了两个问题,现在总结一下。

1、切换过程中备库SWITCHOVER_STATUS状态为NOT ALLOWED。

解决方法:

先看告警日志

  1. SQL> show parameter dump;

  1. [oracle@standbynode trace]$cd /u01/app/oracle/diag/rdbms/orcl11gdg/orcl11g/trace

在trace目录下查看alert_orcl11g.log日志是否有告警

一般是因为主备库的数据没完全同步

  1. [oracle@standbynode ~]$ rman target /
  2. RMAN> list incarnation;

需重置备库化身和主库保持一致

备库

  1. SQL> shutdown immediate
  2. SQL> startup mount
  3. [oracle@standbynode ~]$rman target /
  4. RMAN> reset database to incarnation 3;
  5. RMAN> list incarnation;

打开备库和备库开启日志应用

  1. 开启备库
  2. SQL> alter database open;
  3. 备库开启日志实时应用
  4. SQL> alter database recover managed standby database using current logfile disconnect from session;
  5. 查看进程
  6. SQL> select pid,process, status, thread#,sequence#, block#, blocks from v$managed_standby;

2、切换过程中备库SWITCHOVER_STATUS状态为FAILED DESTINATION。

解决方法:

先看告警日志

  1. SQL> show parameter dump;

  1. [oracle@standbynode trace]$cd /u01/app/oracle/diag/rdbms/orcl11gdg/orcl11g/trace

在trace目录下查看alert_orcl11g.log日志是否有告警

一般是监听有问题或者主库状态异常。总之要学会看trace日志。

二、DG_BROKER

需要搭建DG_BROKER,后面再分享搭建的。其实最关键是将主备库的dg_broker_start的VALUE设置为true。然后进行监听之类的配置。

  1. SQL>alter system set dg_broker_start=true scope=both;
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
3月前
|
Oracle 网络协议 安全
Oracle 11g DataGuard搭建保姆级教程
Oracle 11g DataGuard搭建保姆级教程
174 4
|
3月前
|
Oracle 网络协议 关系型数据库
Oracle DataGuard主备切换之自动切换
Oracle DataGuard主备切换之自动切换
126 2
|
6月前
|
Oracle 关系型数据库
oracle 19c 搭建dataguard 简要命令
通过service 完成dg 搭建。
152 0
|
12月前
|
Oracle 关系型数据库 数据库
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
176 1
|
Oracle 网络协议 关系型数据库
oracle 11g dataguard 配置步骤
oracle 11g dataguard 配置步骤
216 0
|
SQL Oracle 网络协议
|
SQL 监控 Oracle
Oracle DataGuard:单节点到RAC集群的主备环境搭建
随着业务增长,数据量业务复杂度越来越高,数据量越来越大,对数据库和服务器的性能、高可用、容灾等要求也越来越高。以当前的数据库环境为例,Windows 2008 r2 服务器+NAS存储+Oracle11.2.0.1+12T+300GARCH/天的规模已经变得非常臃肿,不再适合快速发展的业务场景。
3224 0
|
11天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
118 64
|
7天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。