物理DG的failover切换

版权声明:六兮原创 https://blog.csdn.net/qq_39135609/article/details/85690930

注:failover切换后原来的主库将不可用,必须重新搭建,所以该实验请慎重选择。

1.在主库端模拟数据库意外宕机
[oracle@rhel6_lhr oradg11g]$ sqlplus / as sysdba
连接到:

SQL> select name, LOG_MODE, OPEN_MODE, 
database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
NAME       LOG_MODE        OPEN_MODE            DATABASE_ROLE       SWITCHOVER_STATUS   	 DB_UNIQUE_NAME
-------------------- -------------------- -------------------- -------------------- -------------------- 
ORCL    ARCHIVELOG      READ WRITE            	 PRIMARY        	 TO STANDBY           			primary
SQL> shutdown abort;
ORACLE 例程已经关闭。

备库查询(主库关闭前查询):

SQL> select count(1) from test;
  COUNT(1)
----------
   1204000
SQL> select thread#, low_sequence#, high_sequence# from v$archive_gap;
未选定行

如果没有发现明显的GAP现象,说明此次的failover不会有数据损失情况。在standby端,要进行关闭apply和结束应用动作。

2.2 备库直接切换
取消DG应用:

SQL> alter database recover managed standby database cancel;
数据库已更改。

备库failover切换:

SQL> alter database recover managed standby database finish;
数据库已更改。
SQL>  select name, LOG_MODE, OPEN_MODE, 
database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
NAME     LOG_MODE    OPEN_MODE        DATABASE_ROLE  SWITCHOVER_STATUS  DB_UNIQUE_NAME
ORCL    ARCHIVELOG   READ ONLY    PHYSICAL STANDBY     TO PRIMARY       standby

备库直接转换为主库:

SQL> alter database commit to switchover to primary with session shutdown;
数据库已更改。

SQL>  select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;

NAME   LOG_MODE     OPEN_MODE       DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME
ORCL  ARCHIVELOG    MOUNTED            PRIMARY          NOT ALLOWED          standby

SQL> alter database open;
数据库已更改。

查看转换角色:

SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;

NAME   LOG_MODE     OPEN_MODE       DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME
ORCL   ARCHIVELOG   READ WRITE        PRIMARY         	 NOT ALLOWED      	  standby

切换成功。切换之后,当然只有一个主库了,alert日志里会说找不到备库 。
此时,failover过程成功。
之后恢复原主库
总结:

Failover是Dataguard的一个重要功能特性。经过Failover,我们认为Primary站点其实已经不能作为HA架构成员了。重新让Primary加入进去的方法有三个:一个是利用RMAN备份将Primary恢复到failover之前,重新进行日志弥补、角色切换;第二个方法是利用Flashback
Database策略,将数据库恢复到failover之前的时间点;第三个是删除Primary数据库,重新利用新Primary搭建standby。

关于DG的搭建以及主备的两种切换方法到这里就记录完了。

猜你喜欢

转载自blog.csdn.net/qq_39135609/article/details/85690930