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

一如既往、
查询原备库转换成为主库Oracle时的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!

                                   

                    

 

相关文章