Oracle 12c Data guard 物理備庫應急切換(failover)流程

feelpurple發表於2015-12-04

1、如果主庫可以 mount ,可以將主庫上未傳輸到備庫的歸檔日誌傳輸到備庫。

確保備庫上的 Redo Apply 是啟用的狀態。將主庫啟動到 mount 狀態,執行下列操作,如果主庫不能執行 mount ,則跳至步驟 2

sqlplus / as sysdba

shutdown immediate

startup mount;

--target_db_name是備庫的db_unique_name

 

ALTER SYSTEM FLUSH REDO TO target_db_name;

如果上面操作成功,跳至步驟 5 ;如果操作報錯,跳至步驟 2

 

2、確保備庫有主庫傳送過來的最近歸檔日誌。

在備庫上透過下面的語句查詢序列最高的歸檔日誌。

sqlplus / as sysdba

 

SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;

如果備庫沒有接收到主庫生成的最新歸檔日誌,從主庫將歸檔日誌複製到備庫進行註冊。

sqlplus / as sysdba

 

ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1'

 

3、確定並解決任何歸檔日誌缺口。

在備庫上透過下面語句查詢備份是否存在歸檔日誌缺口。

sqlplus / as sysdba

 

SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

如果查詢不到任何結果,則說明沒有歸檔日誌缺口。

如果有歸檔日誌缺口,則從主庫複製缺少的歸檔日誌到備庫進行註冊。

sqlplus / as sysdba

 

ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1'

 

4、重複步驟 3 直到所有的歸檔日誌缺口被消除。

步驟 3 的查詢語句顯示的是序號最高的歸檔日誌缺口,你必須重複這個查詢,直到沒有返回任何行。

 

5、在備庫上停止日誌應用。

sqlplus / as sysdba

 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

 

6、將備庫切換成主庫角色。

sqlplus / as sysdba

 

ALTER DATABASE FAILOVER TO target_db_name;

如果上面語句沒有任何報錯,進行步驟 10 的操作。如果有報錯,調到步驟7

 

7、如果步驟 6 有報錯,嘗試消除錯誤,然後重新執行步驟 6 的語句

如果語句沒有報錯,則跳至步驟 10

如果報錯依然存在,且報錯是關於 far sync instance 的問題,則跳至步驟 8

如果報錯依然存在,且報錯不是關於 far sync instance 的問題,則跳至步驟 9

 

8、對於 far sync instance 的錯誤,在語句上使用 FORCE 選項

在備庫上執行下面語句

ALTER DATABASE FAILVOVER TO CHICAGO FORCE;

如果 FORCE 選項成功了,跳至步驟 10

如果 FORCE 選項沒有成功,跳至步驟9

 

9、執行 data-loss failover

ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;

 

10、開啟新的主庫

ALTER DATABASE OPEN;

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

相關文章