DG中備庫為SWITCHOVER PENDING時是否能進行主備切換

skyin_1603發表於2017-03-20
    看到備庫的Switchover_Status為 SWITCHOVER PENDING,我不確定是否妨礙主備庫切換。
隨後檢視了一些文章,大概說是由於斷檔導致,而且還不能進行正常切換,要恢復丟失了的歸檔日誌到備庫。

---收集了一些關於DG中主備庫的Switchover_Status:

NOT ALLOWED

當前的不是帶有備用資料庫的主資料庫

PREPARING DICTIONARY

該邏輯備用資料庫正在向一個主資料庫和其他備用資料庫傳送它的重做資料,以便為切換做準備

PREPARING SWITCHOVER

接受用於切換的重做資料時,邏輯備用配置會使用它

RECOVERY NEEDED

備用資料庫還沒有接收到切換請求

SESSIONS ACTIVE

在主資料庫中存在活動的SQL會話;在繼續執行之前必須斷開這些會話

SWITCHOVER PENDING

適用於那些已收到主資料庫切換請求但是還沒有處理該請求的備用資料庫

SWITCHOVER LATENT

切換沒有完成並返回到主資料庫

TO LOGICAL STANDBY

主資料庫已經收到了來自邏輯備用資料庫的完整的字典

TO PRIMARY

該備用資料庫可以轉換為主資料庫

TO STANDBY

該主資料庫可以轉換為備用資料庫

 
----引用出現過類似情況案例的博文:
---博主在進行切換過程中,已經把主庫切換成備庫後原備庫的Switchover_Status為 SWITCHOVER PENDING:

SQL>alter database commit to switchover to physical standby with session shutdown;並且shutdown immediate;startup mount;

這時,在standby上檢視switchover status

     SQL>select switchover_status from v$database;

     SWITCHOVER_STATUS

     ---------------------------------

     SWITCHOVER PENDING

居然顯示為pending!這說明這個standby已經接收到了primary傳來的to primary的通知,但是還沒有執行。

那麼為什麼沒有執行呢?透過v$archived_log我們可以找到答案。

     SQL>select dest_id,sequence#,archived,applied from v$archived_log order by 1,2;

可以看到目前dest_id2也就是這個備庫上有日誌號為28log還沒有apply,繼續跟蹤alert log,看到它說:

     ORA-00314: log 5 of thread 1,expedted sequence# 28 doesn't match 0

這裡提示我們28這個日誌不存在!去standbylog_archive_dest_1去找一找,果然沒有找到28的日誌。於是我們可以透過複製,並註冊:

     $cp primary/1_28_803392039.log standby/

     SQL>alter database register logfile '1_28_803392039.log';

     System altered.

這是再去看alert log,發現備庫成功切換成新主庫。

--上面提到的那種情況就是說是由於備庫斷檔原因導致備庫的Switchover_Status為SWITCHOVER PENDING。
但在我的案例中,情況有所不一樣,我的DG備庫情況是剛從failover切換中把原主庫恢復成為新備庫,就出現了
備註的Switchover_Status為SWITCHOVER PENDING。

----當時的主備庫的切換狀態:

---主庫:

SQL> select open_mode,protection_mode,switchover_status,database_role from v$database;

OPEN_MODE            PROTECTION_MODE      SWITCHOVER_STATUS    DATABASE_ROLE

-------------------- -------------------- -------------------- ----------------

READ WRITE           MAXIMUM PERFORMANCE  SESSIONS ACTIVE      PRIMARY

 

---備庫:

SQL> select open_mode,protection_mode,switchover_status,database_role from v$database;

OPEN_MODE            PROTECTION_MODE      SWITCHOVER_STATUS    DATABASE_ROLE

-------------------- -------------------- -------------------- ----------------

READ ONLY WITH APPLY MAXIMUM PERFORMANCE  SWITCHOVER PENDING   PHYSICAL STANDBY


--我最後去核查歸檔,發現主備庫都沒有斷檔情況,所有被傳輸到備庫的歸檔日誌都成功被應用,也就是說不是斷檔導致。
後面我還嘗試做了主備庫之間角色的切換,結果是正常切換成功。


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

相關文章