zoukankan      html  css  js  c++  java
  • Oracle Dataguard之failover

    Oracle Dataguard中,角色转换包含两类:Switchover和Failover。上文《Oracle Dataguard之switchover》中,我们已经谈过了switchover,本文将谈谈failover以及如何将failed primary database转换为physical standby database。

    failover

    一、 主库挂掉 

           在这里我们杀掉lgwr进程模拟实例崩溃。

           [oracle@node2 ~]$ ps -ef | grep lgwr   -->> 注意:在这个案例中,node2是主库

           oracle 1375 1 0 14:07 ? 00:00:21 ora_lgwr_victor
           oracle 1668 1654 0 16:08 pts/0 00:00:00 grep lgwr

           [oracle@node2 ~]$ kill -9 1375   -->> 杀掉lgwr进程,实例崩溃,无法访问

    二、 备库上停止Redo Apply   -->> node1 为备库

           SQL> alter database recover managed standby database cancel;

           SQL> select switchover_status,database_role from v$database;

           SWITCHOVER_STATUS DATABASE_ROLE
           -------------------- ----------------
           NOT ALLOWED PHYSICAL STANDBY

    三、 备库上finish applying all received redo data  -->> node1 为备库

           SQL> alter database recover managed standby database finish;

           SQL> select switchover_status,database_role from v$database;

           SWITCHOVER_STATUS DATABASE_ROLE
           -------------------- ----------------
           TO PRIMARY PHYSICAL STANDBY

           -->> 注意:在执行完上个命令后,switchover_status从not allowed变为to primary了,即可以切换为主库了。

    四、 备库开始switchover

           SQL> alter database commit to switchover to primary with session shutdown;

           SQL> alter database open;

           SQL> select switchover_status,database_role from v$database;

           SWITCHOVER_STATUS DATABASE_ROLE
           -------------------- ----------------
           RESOLVABLE GAP PRIMARY

    此时,备库角色已经成功切换为Primary了,failover成功。

    在failover之后,如果原主库故障解决,可以重新上线,我们可以看到,在startup以后,它的角色仍然是Primary,很显然,一个dataguard配置中,是不可能有两个主库    的。这时,我们可以将这个原主库转换为新主库的备库。主要有三种方法:一、按照先前的方法,利用新主库的备份,将这个原主库重新配置为备库。二、利用flashback。  三、利用rman备份。

    在这里,我们主要谈谈第二种和第三种方法。

    Flashing Back a Failed Primary Database into a Physical Standby Database

    一、 查询原备库转换成主库时的SCN   -->> node1 上操作

          SQL> select to_char(standby_became_primary_scn) from v$database;

          TO_CHAR(STANDBY_BECAME_PRIMARY_SCN)
          ----------------------------------------
          901719

    二、 Flash back原主库  -->> 即node2

          SQL> shutdown immediate

          SQL> startup mount

          SQL> flashback database to scn 901719;  

          -->> 注意,前提是flashback_on的特性必须开启,alter database flashback on;

    三、 将原主库转换为备库  -->> node2 上操作

           SQL> alter database convert to physical standby;

           SQL> shutdown immediate

           SQL> startup

    四、 现备库上启用Redo Apply  -->> node2 上操作

           SQL> alter database recover managed standby database using current logfile disconnect from session;

    基本OK!

    Converting a Failed Primary into a Standby Database Using RMAN Backups

    一、 查询原备库转换成主库时的SCN

          SQL> select to_char(standby_became_primary_scn) from v$database;

    二、 恢复原主库

           RMAN > run

                   { set until scn <standby_became_primary_scn+1>;  

                      restore database;            

                      recover database;

                    }

    三、 将原主库转换为备库

           SQL> alter database convert to physical standby;

           SQL> shutdown immediate

           SQL> startup mount

           SQL> alter database open read only;

    四、 现备库上启用Redo Apply

           SQL> alter database recover managed standby database using current logfile disconnect from session;

    基本OK!

                                       

                        

  • 相关阅读:
    Sublime Text前端开发环境配置
    CSS盒模型
    Angular-如何在Angular2中使用jQuery及其插件
    六:Angular 指令 (Directives)
    五:Angular 数据绑定 (Data Binding)
    四:Angular 元数据 (Metadata)
    三:Angular 模板 (Templates)
    二:Angular 组件 (Components)
    一:Angular 模块 (Modules)
    js获取浏览器内核
  • 原文地址:https://www.cnblogs.com/ivictor/p/3645570.html
Copyright © 2011-2022 走看看