签到成功

知道了

CNDBA社区CNDBA社区

RAC DG模拟真实故障下容灾演练(failover+switchover)

2018-01-29 16:39 3788 0 原创 ORACLE
作者: Marvinn

RAC DG模拟真实故障下容灾演练(failover+switchover)http://www.cndba.cn/Marvinn/article/2599

该演练,需要原生产主库以及备库必须开启闪回功能,并且主生产库也需要动,数据库在做完failover+switchover后,数据库是个全新数据库,日记不再使用之前得日记,将重新生成新的日记(即日记序列号将从1开始重新计数)

1 、active standby and flash backhttp://www.cndba.cn/Marvinn/article/2599

http://www.cndba.cn/Marvinn/article/2599

先关DG2节点:

   shut immediate;





    确认备库flashback on 

    selectflashback_on from v$database;

       如为NO

       recover managed standby database cancel;

        需要预先设置两个参数

                 showparameter recover



NAME                                    TYPE       VALUE

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

db_recovery_file_dest                  string      +data

db_recovery_file_dest_size          big integer 15G

db_unrecoverable_scn_tracking          boolean TRUE

recovery_parallelism                    integer   0



alter system set db_recovery_file_dest = ‘+data’;

alter system set db_recovery_file_dest_size=15g;



       ALTER DATABASE FLASHBACK ON;

       重新应用:

       alter database recover managed standby database using current logfiledisconnect from session;

备库确认:

   set linesize 1000;

   SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, DELAY_MINS FROMV$MANAGED_STANDBY;

   MRP0 为applying_log



   select flashback_on from v$database;



主库执行:

        需要到主库RAC所有节点做最后一次日志切换,再断开主库所有节点得监听,防止数据写入,造成闪回数据丢失

        Altersystem switch logfile;

        lsnrctlstop



备库执行:

   recover managed standby database cancel;

    创建创建点:

CREATE RESTOREPOINT back_to_here GUARANTEE FLASHBACK database;



主库执行:

开启闪回功能:如果你怕因操作失误,SCN闪回不了,造成事故,可以为主库做一个还原点,多一层保护。

selectflashback_on from v$database;

如为NO

        需要预先设置两个参数

        showparameter recover



NAME                                    TYPE       VALUE

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

db_recovery_file_dest                 string       +data

db_recovery_file_dest_size         big integer 15G

db_unrecoverable_scn_tracking         boolean  TRUE

recovery_parallelism                    integer    0



alter system set db_recovery_file_dest =‘+data’;

alter system set db_recovery_file_dest_size=15g;



 ALTER DATABASE FLASHBACK ON;



激活standby数据库

   ALTER DATABASE ACTIVATE STANDBY DATABASE;

   STARTUP  FORCE;

        或者

        alterdatabase recover managed standby database finish force;

        alterdatabase commit to switchover to primary;

同时开启DG二节点:

        Startup



DG两节点验证:

   select open_mode from V$database;

    提供读写服务:

OOOOXXXX



一般failover主库都不能再使用,需要重新配置standby,但是如果开启了闪回,也可以将Failover之后的老的主库 flashback成新primary的standby库:

步骤如下

/1. 在新主库查出failover时的SCN:(即原备库上执行)

SQL> SELECTTO_CHAR(STANDBY_BECAME_PRIMARY_SCN) FROM V$DATABASE; 

  TO_CHAR(STANDBY_BECAME_PRIMARY_SCN) 

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

  172313

/2. 在old primary库上:即(原主库上执行)http://www.cndba.cn/Marvinn/article/2599

关闭所有节点,启动一节点到mount状态,闪回数据库到故障时得SCN号,切换数据库到物理备库,重启数据库,应用redo日志

 SQL> SHUTDOWN IMMEDIATE; 

 SQL> STARTUP MOUNT; 

 SQL> FLASHBACK DATABASE TO SCN 172313; 

 SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY; 

 SQL> SHUTDOWN IMMEDIATE; 

打开RAC所有节点

 SQL> STARTUP ;

只能在其中得一个节点开启日志应用

  SQL>ALTER DATABASE RECOVERMANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;



Switchover切换



最后做一次主备切换,切换到原始主备状态

需要到新主库所有节点上做一次日志切换

Alter system switch logfile;



新主库(即原备库): - 

/1. 查看switchover 状态 - 

SQL> SELECT SWITCHOVER_STATUS FROMV$DATABASE; - 

      to standby  

2 切换成备库 http://www.cndba.cn/Marvinn/article/2599http://www.cndba.cn/Marvinn/article/2599

如果上面的结果不是to standby 还有会话运行

SQL>Alter database commit to switchoverto physical standby with session shutdown;  

否则直接

SQL> ALTER DATABASE COMMIT TO SWITCHOVERTO PHYSICAL STANDBY;  

     Database altered. 

3 启动到mount和应用日志状态

http://www.cndba.cn/Marvinn/article/2599
http://www.cndba.cn/Marvinn/article/2599

SQL> SHUTDOWN IMMEDIATE  

SQL> startup nomount;  

SQL> alter database mount standby database;

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

/4. 查看数据库模式 http://www.cndba.cn/Marvinn/article/2599http://www.cndba.cn/Marvinn/article/2599

SQL>selectdest_name,status,database_mode,recovery_mode,protection_mode fromv$archive_dest_status;  

SQL>select status,database_mode fromv$archive_dest_status;  



新备库(即原主库):  

1.查看switchover状态 - 

SQL> SELECT SWITCHOVER_STATUS FROMV$DATABASE;  

    TO PRIMARY  

/2. 切换成主库  

如果上面的结果不是to PRIMARY 还有会话运行

SQL> ALTER DATABASE COMMIT TO SWITCHOVERTO PRIMARY with session shutdown  

否则

SQL>alter database commit to switchoverto primary;



Database altered.

所有节点执行:  

SQL> shutdown immediate;  

SQL> startup

SQL> alter system switch logfile

/3. 查看数据库模式  

SQL>selectdest_name,status,database_mode,recovery_mode,protection_mode fromv$archive_dest_status

SQL>select status,database_mode fromv$archive_dest_status



做完switchover后,备库执行:



关闭日志应用:

Recover managed standby database cancel;

重启数据库到mount:

startup mount;

删掉restore point:

drop restore point back_to_here;

同时开启2节点

startup



如果主库也创建了还原点:

11g:可执行drop

10g:需要启动数据库到Mount状态,再drop,最后open 

drop restore point back_to_here;



当物理备库standby open打开报错要求恢复时,用下面recover语句

recover automatic standby database;



ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USINGCURRENT LOGFILE DISCONNECT FROM SESSION parallel 2; 

确认DG状态:

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Marvinn

Marvinn

关注

路漫漫其修远兮、吾将上下而求索

  • 99
    原创
  • 0
    翻译
  • 2
    转载
  • 36
    评论
  • 访问:458462次
  • 积分:449
  • 等级:中级会员
  • 排名:第12名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ