(一)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;
至此,就將原來的主庫切換為了備庫。
【完】
相關文檔: |