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還原失敗的主庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM