Dataguard failover切換實驗

lusklusklusk發表於2016-07-22

官方文件推薦的標準操作語句,備庫按順序如下
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
SQL> ALTER DATABASE OPEN;


以前的一個實驗,主庫當機的情況下,備庫直接執行如下三條語句即可
(三種保護模式都實驗過,都是可以的)

1.備庫執行alter database recover managed standby database finish force;

2.備庫執行alter database commit to switchover to primary with session shutdown;

3.備庫執行alter database open;

 

 

以上情況如果是採用arch傳輸或採用lgwr傳輸但是沒有real-time Applyreal-time Apply的前提就是先建立standby redo log再執行alter database recover managed standby database using current logfile disconnect from session;,主庫一些資料插入後commit但是不archive log current後,備庫會丟失這些資料,如果是最大可用模式則不會。

 

原來standbyopen狀態,如果是最大效能模式、最大保護模式則執行以上第二步後變成了mount狀態。如果是最大可用模式則執行第一步後變成了mount狀態

 

主庫當機後,備庫原來的狀態不變,如果原來是MAXIMIZE PERFORMANCEMAXIMUM AVAILABILITYMAXIMUM PROTECTION維持不變。

 

 

 

備庫關機後,重啟的過程中,可以直接startupopen模式,但是select open_mode from v$database的結果還是read only


 

 

 

最大可用性模式下,關閉備庫DB和監聽,驗證是否轉換為最大效能模式

主庫v$database.protection_mode \v$database.protection_levelMAXIMUM AVAILABILITY\MAXIMUM AVAILABILITY變成MAXIMUM AVAILABILITY\RESYNCHRONIZATION且主庫正常運作可以正常多次執行alter system archive log current。重啟備庫DB startup和監聽後,備庫執行alter database recover managed standby database using current logfile disconnect from session;就可以了,並不需要一定要執行alter database recover managed standby database disconnect from session;alter database recover managed standby database cancel;alter database recover managed standby database using current logfile disconnect from session;說明最大可用模式與最大保護模式不同的是,如果故障導致主資料庫無法寫重做流到異地備重做日誌時,即當最大可用模式不能實現時,自動降級為最大效能模式(但是主資料庫不會關閉且主庫protection_mode不變,只是主庫protection_level變成RESYNCHRONIZATION說明這個自動降級是一種隱性的狀態非表現在protection_modeprotection_level),這樣的結果使得日誌同步不再實時。

RESYNCHRONIZATION的意思:再同步\重新同步






官方文件推薦的標準操作的一次實驗過程
SQL> select database_role, switchover_status from v$database;
DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED
ORACLE官方文件資訊:A value of either TO PRIMARY or SESSIONS ACTIVE indicates that the standby database is ready to be switched to the primary role

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

SQL> select database_role, switchover_status from v$database;
DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY
ORACLE官方文件資訊:A value of either TO PRIMARY or SESSIONS ACTIVE indicates that the standby database is ready to be switched to the primary role

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;(會把原來open read only模式切換為mouted模式)

SQL> select database_role, switchover_status from v$database;
DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PRIMARY          NOT ALLOWED

SQL> ALTER DATABASE OPEN;

 




切換實驗用到的一系列驗證的語句

select STATUS from v$instance;

select OPEN_MODE,DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;

alter database recover managed standby database finish force;

select STATUS from v$instance;

select OPEN_MODE,DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;

alter database commit to switchover to primary with session shutdown;

select STATUS from v$instance;

select OPEN_MODE,DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;

alter database open;

select STATUS from v$instance;

select OPEN_MODE,DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;

 

 

主庫MAXIMUM PERFORMANCE時備庫Mountopen各來一次


StandbyMOUNT狀態



StandbyOPNE狀態









主庫MAXIMUM AVAILABILITY時備庫open來一次


StandbyOPEN狀態(不用mount是因為mount無法驗證資料是否實時同步過來了,mount時無法select 使用者建立的表)








主庫MAXIMUM PROTECTION時備庫open來一次

主庫圖片




備庫圖片





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2122405/,如需轉載,請註明出處,否則將追究法律責任。

相關文章