ACTIVE DATAGUARD Role transitions

Role transitions分为 switchover、failover

1.switchover

数据不丢,执行后只是角色互换了。

2.failover

当主库故障时,备库切到主库角色,如果切换前,主库不是运行在MAXIMUM AVAILIABLITY或者MAXIMUM PROTECTION模式下,可能会有数据丢失。如果主库开启闪回的话,在切换后,故障恢复后,还是能够作为备库角色的。

switchover切换条件:

1、确保主备库的standby redo log 都已经建好

2、备库执行SQL:

SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;
 
STATUS       GAP_STATUS
--------- ------------------------
VALID         NO GAP

只有STATUS字段值为VALID,GAP_STATUS字段值为NOGAP才能切。

3、保证主备库的tempfile与备库的tempfile一致(大小,对应路径)

4、switchover时如果主库是RAC的话,只保留一个主库实例启动着

5、如果备库运行为 real-time query状态时,将所有的备库实例切换到mounted状态,同时关掉所有连接到备库的链接,确保切换速度

6、对于多备库实例的情况,如果切换是切到物理standby的话,其他的物理standby还是新的主库的备库,原逻辑standby将不再是新主库的备库,同样,如果切到的是逻辑standby,则原来其他的逻辑standby都会是新的主库的standby,而原来的物理standby还是老的主库的备库。

failover切换条件:

1、如果主库运行在MAXIMUM PROTECTION模式,则切到MAXIMUM PERFORMANCE模式

SQL>alter database set standby database to maximum performance;

2、满足switchover切换条件

Switchover步骤(Physical standby):

1、主库查询:

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

--------------------

TO STANDBY

如果值是“TO STANDBY”,或者“SESSION ACTIVE”的话,都可以切换,如果不是的话,就不具备切换的条件,不能切。

2、主库执行SQL准备切换:

SQL>ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH  SESSION SHUTDOWN;(如果第一步的值是TO STANDBY的话,这边就不需要加WITH SESSION SHUTDOWN)

3、将原主库启动到mount

SQL>SHUTDOWNN ABORT      -- (11.2.0.4以后的版本就无需shutdown了,执行了第二步后会自动shutdown)

SQL>STARTUP MOUNT

4、备库查询:

SQL>SELECCT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
   -----------------
   TOPRIMARY

如果值是“TO PRIMARY”或者“SESSIONS ACTIVE”则表明备库已可以切换了。如果值是其他的话就查看下是否redo apply还在进行,redo传输配置是否有问题。修改直到查询处理的值是其中两个。

5、原备库执行:

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

6、新主库打开

SQL>ALTER DATABASE OPEN;

7、新备库执行:

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

8、其他原备库重新执行REDO APPLY:

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

完成。

Failover步骤(Physical standby):

1、将主库所有未传输(unsent)的redo都刷到备库上,如果主库还能mount的话,就有可能将未传输的已归档的redo以及当前redo flush到备库上,如果flush成功的话,有可能数据不丢,即使主库不是运行在不丢数据的保护模式下。

主库执行:

SQL>ALTER SYSTEM FLUSH REDO TO wsqstandby;   (wsqstandby为备库DB_UNIQUE_NAME)

2、确保备库拥有最近已归档的日志

查看当前已归档的最高的SEQUENCE#,已THREAD#分组:

SQL>SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#)  OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;

将这些缺少的归档拷到备库,然后注册到物理备库中。

SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE ‘filespec1‘;

3、备库查看并解决redo log gap:

SQL>SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

如果结果有值的话,将这些SEQUENCE#对应的日志文件拷到备库服务器,并register到备库中,直到没有gap:

SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE ‘filespec1‘;

4、重复第3步直至没有gap,如果还有gap无法解决,将会丢数据。

5、备库停redo apply

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

6、备库完成apply所有已经接收的redo:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

这一步如果没报错则继续到第7步,如果报错(前面有gap无法解决),则failover还可以继续,须执行以下SQL将物理备库ACTIVE:

SQL>ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;执行完后,直接跳到第9步。

7、备库查询:

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
-----------------
TO PRIMARY

如果值是“TO PRIMARY”或“SESSIONS  ACTIVE”,则表明可以切换;如果不是则查看redo apply是否还没有停止,知道值是其中两个方可继续切换。

8、备库切到主库角色

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

9、新主库打开

SQL>alter database open;

10、新主库全库备份

11、原其他备库恢复REDO APPLY

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE  DISCONNECT FROM SESSION;

完成。

Switchover步骤(Logical standby):

1、主库查询:

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

--------------------

TO STANDBY

如果值是“TO STANDBY”,或者“SESSION ACTIVE”的话,都可以切换,如果不是的话,就不具备切换的条件,不能切,检查配置。

2、主库准备切换:

SQL> ALTER DATABASE PREPARE TO SWITCHOVER TO LOGICAL STANDBY;

执行成功的话,再查下switchover_status会显示PREPARING SWITCHOVER;

3、备库准备切换:

SQL> ALTER DATABASE PREPARE TO SWITCHOVER TO PRIMARY;

执行完后switchover_status的值马上变成PREPARING DICTIONARY,等到完成redo stream记录后,值就变成PREPARING SWITCHOVER,此时就可以切了。

4、确保原主库准备接收新的主库的redo stream

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
-----------------
TO LOGICAL STANDBY

取消切换准备的步骤:

1.主库取消:

SQL> ALTER DATABASE PREPARE TO SWITCHOVER CANCEL;

2.备库取消:

SQL> ALTER DATABASE PREPARE TO SWITCHOVER CANCEL;

如果值是“TO LOGICAL STANDBY”的话则继续切换,执行第5步

5、主库切换:

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;

这个命令将等待主库上当前所有事务到事务结束,这段时间新的事务将无法产生。在switchover前,确保主库没有任何update动作,所有会话都关掉,没有连接。

6、备库查询:

SQL>SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
-----------------
TO PRIMARY

如果值是“TO PRIMARY”,则备库可以进行切换了,执行第7步。

7、备库切换到主库

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

8、新备库执行redo apply

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

完成。

Failover步骤(Logical standby):

1、主库flush redo到备库

SQL> ALTER SYSTEM FLUSH REDO TO wsqstandby;

2、备库执行命令,将所有未apply的日志注册到备库

SQL>ALTER DATABASE REGISTER LOGICAL LOGFILE  ‘/disk1/oracle/dbs/log-%r_%s_%t.arc‘;

3、备库执行

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;

4、备库执行,ACTIVE新的主库

SQL> ALTER DATABASE ACTIVATE LOGICAL STANDBY DATABASE FINISH APPLY;

5、查看是否有其他备库能够作为新的备库

6、新主库全库备份

源文档 <http://docs.oracle.com/cd/E11882_01/server.112/e41134/role_management.htm#SBYDB5199>

时间: 2024-08-04 23:39:19

ACTIVE DATAGUARD Role transitions的相关文章

Oracle 11.2.0.4.0 Dataguard部署和日常维护(6)-Active dataguard

1. 检查主备库的状态 on primary column DATABASE_ROLE format a20 column OPEN_MODE format a15 column PROTECTION_MODE format a20 column SWITCHOVER_STATUS format a20 select DATABASE_ROLE,OPEN_MODE,PROTECTION_MODE,SWITCHOVER_STATUS from v$database; DATABASE_ROLE O

Oracle 11G Active DataGuard角色切换

1.切换前准备: 1.1主库检查: 1.1.1 FAL检查 SQL> show parameter fal; NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ fal_client                           string fal_server      

搭建Oracle 11G单实例Active DataGuard

Oracle 11G单实例ActiveDataGuard 1.基础环境准备 1.1基础环境说明: 操作系统:RHEL 5.5 64bit 数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit 1.2数据库服务名称及目录说明: 主库 备库 IP地址 192.168.4.157 192.168.4.158 主机名称 primary01 standby01 db_name testdb testdb db_uni

最简单的11g Active DataGuard(ADG)搭建配置过程(项目步骤)

最简单的11g Active DataGuard(ADG)搭建配置过程(项目步骤) 一.环境介绍: 我在db01和db02两台Linux虚拟机上首先分别安装了一套数据库软件,在db01主机上创建了名为woo的数据库:我们这次的实验是要搭建了一套Oracle 11g Active DataGuard:目的是为了实现数据库同步的功能,并且了解Oracle 11g DG的基本功能. db01:192.168.1.50db02:192.168.1.51 二.11g ADG部署: 1.pri端和sty端配

Oracle 11g Active Dataguard (RAC)的配置

一:环境介绍主库(RAC)IP地址:192.168.1.210,192.168.1.211操作系统版本:ole5.8 64bit数据库版本:11.2.0.4 64bit数据库sid名:MECBS1,MECBS2数据库主机名:node1,node2数据库db_unique_name:MECBS 备库1  物理备库 (只安装oracle数据库软件,无需建库)IP地址:192.168.1.219操作系统版本:ole5.8 64bit数据库版本:11.2.0.4 64bit数据库sid名:PHUB数据库

Oracle 11.2.4.0 ACTIVE DATAGUARD 单实例安装(COPY创建备库)

Oracle 11.2.4.0 ADG 单实例安装(COPY创建备库) 规划: 主: OS: Linux Centos 6.5 X64 hostname:ORA11G-DG1 ipaddress:192.168.213.199 db_unique_name=netdata_pd db_name=netdata 备: OS: Linux Centos 6.5 X64 hostname:ORA11G-DG2 ipaddress:192.168.213.200 db_unique_name=netda

RMAN配置DataGuard from Active database with ASM

一.  环境 主库:安装grid软件及创建磁盘组:安装数据库软件并创建数据库, 备库:仅安装grid软件并创建asm磁盘组,同时安装数据库软件即可. 主机名 数据库版本 dbname db_unique_name ip地址 系统版本 server1(主) oracle11204 Jason jason 192.168.1.250 rhel6.6_x86_64 server2(备) jason2 192.168.1.252 二.  主库配置 1.  确定主数据库开启强制LOGGING模式 [[em

RMAN配置DataGuard from active database with filesystem

一.  环境 主机名 数据库版本 dbname db_unique_name IP地址 系统版本 Jason1(主) oracle11204 Jason jason1 192.168.1.99 rhel6.6_x86_64 jason2(备) jason2 192.168.1.10 二.  主库配置 1.  确定主数据库开启强制LOGGING模式 [[email protected] ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Producti

【DG】[三思笔记]一步一步学DataGuard

[DG][三思笔记]一步一步学DataGuard 它有无数个名字,有人叫它dg,有人叫它数据卫士,有人叫它data guard,在oracle的各项特性中它有着举足轻理的地位,它就是(掌声)......................Oracle Data Guard.而对于我而言,我一定要亲切的叫它:DG(注:主要是因为打着方便). 不少未实际接触过dg的初学者可能会下意识以为dg是一个备份恢复的工具.我要说的是,这种形容不完全错,dg拥有备份的功能,某些情况下它甚至可以与primary数据库