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