#切换测试--DG做(fail over)切换测试
# fail over前创建担保还原点
#主库
[oracle@DB196 ~]$ sqlplus / as sysdba
SQL> select flashback_on from v$database;
NO
SQL> CREATE RESTORE POINT guar_restore1 GUARANTEE FLASHBACK DATABASE;
SQL> select flashback_on from v$database;
RESTORE POINT ONLY
SQL> exit
---------------------------------------------------------
#备库
[oracle@DB197 ~]$ sqlplus / as sysdba
SQL> select open_mode from v$database;
READ ONLY WITH APPLY
#开始(fail over)切换测试
#主库 我们通过shutdown abort方式人工模拟primary奔溃,直接关闭:
[oracle@DB196 ~]$ sqlplus / as sysdba
SQL> select open_mode from v$database;
READ WRITE
SQL> shutdown abort
#在primary端执行如下操作(前提是能夠mount)oracle 11g中有一个新特性叫flush redo,就是说如果主库挂了,只要能mount,就可以将没传到备库的online redo log信息刷到备库去,这样就不会有数据丢失。
SQL> startup mount;
SQL> alter system flush redo to 'MPCDB197'; --这里记住名字得加上引号,并且这个名字是tnsname中的备库连接名(即備庫的db_unique_name)。
#在主库查看备库是否有gap
SQL> select thread#, low_sequence#, high_sequence# from v$archive_gap;
no rows selected
------------------------------------------
#备库
#如果没有发现明显的gap现象,说明此次的failover不会有数据损失情况。在standby端,要进行关闭apply和结束应用动作。
#若存在gap,copy之后,注册 sql>alter database register physical logfile ‘/oradata/dg/1_38_925143214.dbf’
#取消和停止应用,通过下列语句暂停redo 应用
[oracle@DB197 ~]$ sqlplus / as sysdba
SQL> alter database recover managed standby database cancel;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
#如果主库和备库之间的网络中断了,那么备库的RFS进程就会等待网络的连接,直到TCP超时。此时需要加上force关键字 sql>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH force;
SQL> select open_mode, switchover_status from v$database;
READ ONLY TO PRIMARY
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
or alter database activate physical standby database;
SQL> select open_mode, switchover_status from v$database;
MOUNTED NOT ALLOWED
#重启数据库
SQL> shutdown immediate;
ORA-01109: database not open
SQL> startup
SQL> select open_mode, switchover_status from v$database;
READ WRITE FAILED DESTINATION
----------------------------------------------
# 原主机(奔溃库)
#Failover后的还原 使用闪回还原主库:
[oracle@DB196 ~]$ sqlplus / as sysdba
SQL> shutdown immediate;
ORA-01109: database not open
SQL> startup mount;
SQL> select flashback_on from v$database;
RESTORE POINT ONLY
SQL> FLASHBACK database TO RESTORE POINT guar_restore1;
SQL> drop RESTORE POINT guar_restore1;
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
SQL> SHUTDOWN IMMEDIATE;
ORA-01109: database not open
SQL> startup
SQL> alter database recover managed standby database using current logfile disconnect from session;
SQL> select flashback_on from v$database;
NO
#新主機(原備機)
[oracle@DB197 ~]$ sqlplus / as sysdba
SQL> select open_mode, switchover_status from v$database;
READ WRITE TO STANDBY