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

feelpurple發表於2015-12-01

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

將主庫啟動到 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 RECOVER MANAGED STANDBY DATABASE FINISH;

下面是備庫 alert 日誌中的資訊

Tue Dec 01 16:45:15 2015
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH
Attempt to do a Terminal Recovery (fire)
Media Recovery Start: Managed Standby Recovery (fire)
 started logmerger process
Tue Dec 01 16:45:15 2015
Managed Standby Recovery not using Real Time Apply
Parallel Media Recovery started with 24 slaves
Media Recovery Waiting for thread 1 sequence 45 (in transit)
krsv_proc_kill: Killing 6 processes (all RFS, wait for I/O)
Begin: Standby Redo Logfile archival
End: Standby Redo Logfile archival
Terminal Recovery timestamp is '12/01/2015 16:45:18'
Terminal Recovery: applying standby redo logs.
Terminal Recovery: thread 1 seq# 45 redo required
Terminal Recovery: 
Recovery of Online Redo Log: Thread 1 Group 4 Seq 45 Reading mem 0
  Mem# 0: /ORADATA/oradata/fire/standby_01.log
Identified End-Of-Redo (failover) for thread 1 sequence 45 at SCN 0xffff.ffffffff
Incomplete Recovery applied until change 1118443 time 12/01/2015 16:45:16
Media Recovery Complete (fire)
Terminal Recovery: successful completion
Tue Dec 01 16:45:18 2015
Forcing ARSCN to IRSCN for TR 0:1118443
Attempt to set limbo arscn 0:1118443 irscn 0:1118443 
Resetting standby activation ID 917662745 (0x36b26c19)
ARCH: Archival stopped, error occurred. Will continue retrying
ORACLE Instance fire - Archival Error
ORA-16014: log 4 sequence# 45 not archived, no available destinations
ORA-00312: online log 4 thread 1: '/ORADATA/oradata/fire/standby_01.log'
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH

如果上面語句沒有任何報錯,進行步驟 7 的操作。如果有報錯,則說明一些日誌沒有被應用。試著解決報錯後,然後重新執行這個語句。

如果報錯無法解決,也可以進行失敗切換,沒有被應用的這些歸檔日誌裡面的資料將會丟失。

在備庫上執行下面語句來進行失敗切換。

sqlplus / as sysdba

 

ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;

--之後調到步驟 9來完成失敗切換。

 

7、確認備庫是否做好切換到主庫的準備

sqlplus / as sysdba

 

SELECT SWITCHOVER_STATUS FROM V$DATABASE;

查詢結果為 TO PRIMARY SESSIONS ACTIVE說明備庫做好了準備。

如果查詢結果不是這兩個值,確認備庫的日誌應用是否還處於啟用狀態。

 

8、將備庫切換成主庫角色

在備庫上執行下面語句

sqlplus / as sysdba

 

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

 

9、開啟新的主庫

ALTER DATABASE OPEN;

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

相關文章