Oracle Dataguard之failoverOracle Dataguard之switchover

Oracle Dataguard之failoverOracle Dataguard之switchover,第1张

概述本文将谈谈failover以及如何将failed primary database转换为physical standby database。

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!

                                   

                    

 

总结

以上是内存溢出为你收集整理的Oracle Dataguard之failover Oracle Dataguard之switchover全部内容,希望文章能够帮你解决Oracle Dataguard之failover Oracle Dataguard之switchover所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1153735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存