Oracle DataGuard故障轉移(failover)後使用RMAN還原失敗的主庫

(一)DG故障轉移後切換爲備庫的方法

在DG執行故障轉移之後,主庫與從庫的關係就被破壞了。這個時候如果要恢復主從關係,可以使用下面的3種方法:

  • 將失敗的主庫重新搭建爲備庫,該方法比較耗時;
  • 使用數據庫閃回方法,將失敗的主數據庫轉換爲備庫,該方法依賴於閃回數據庫功能,在生產環境,並未啓用該功能;
  • 使用RMAN備份將失敗的主庫轉換爲備庫,該方法要求在失敗之前主庫要有RMAN備份。

這裏僅對第3種方法進行說明。

 

(二)使用RMAN備份還原失敗的主庫爲備庫                
STEP1:確認舊的備庫成爲主庫時的SCN
在新的主數據庫上,使用以下SQL語句查詢舊備用數據庫在轉換爲新的主庫時的SCN

SQL> SELECT TO_CHAR(STANDBY_BECAME_PRIMARY_SCN) FROM V$DATABASE;

 

STEP2:修復和恢復整個數據庫
通過使用STANDBY_BECAME_PRIMARY_SCN之前的備份來修復數據庫,然後執行基於時間點的恢復。
使用以下RMAN命令:

RMAN> RUN
    {
      SET UNTIL SCN <standby_became_primary_scn + 1>;
      RESTORE DATABASE;
       RECOVER DATABASE;
    }

 

STEP3:轉換數據庫爲物理備庫
在舊的主數據庫上執行下面的步驟:

(1)將控制文件轉換爲備用控制文件

SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;

 

(2)關閉數據庫,將數據庫啓動到mount狀態

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;


STEP4:以只讀方式打開數據庫

SQL> ALTER DATABASE OPEN READ ONLY;

該步驟的目的是使用數據字典檢查使控制文件與數據庫同步,執行此命令之後,檢查數據庫告警日誌文件中建議的操作。通常,如果在故障轉移期間舊的主庫沒有添加、刪除過數據文件,用戶是不需要採取任何動作的。

 

STEP5:重新開始將重做日誌傳輸到新的備庫
在新的備庫創建之前,新的主庫可能已經停止將重做日誌傳輸到遠程地址,如果要啓動重新傳輸服務,在主數據庫上執行下面的命令。
(1)查詢當前歸檔日誌存放地址

SQL> SELECT DEST_ID, DEST_NAME, STATUS, PROTECTION_MODE, DESTINATION, ERROR,SRL FROM V$ARCHIVE_DEST_STATUS;

(2)如有必要,啓用歸檔目的地址

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_n=ENABLE;

(3)執行日誌切換命令,確保備用數據庫已經開始從新的主數據庫接收日誌

SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> SELECT DEST_ID, DEST_NAME, STATUS, PROTECTION_MODE, DESTINATION, ERROR,SRL FROM V$ARCHIVE_DEST_STATUS;

在新的備庫上,可能需要修改LOG_ARCHIVE_DEST_n參數(尤其一主多備的環境),以確保它不會將重做數據傳輸到其它數據庫上。

 

STEP6:開啓redo應用
使用如下命令開啓redo日誌應用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

至此,就將原來的主庫切換爲了備庫。

 

【完】

 

相關文檔:
1.Oracle DataGuard主備切換(switchover)
2.Oracle Dataguard故障轉移(failover)操作
3.Oracle DataGuard故障轉移(failover)後使用RMAN還原失敗的主庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章