共計 2618 個字符,預計需要花費 7 分鐘才能閱讀完成。
本篇內容介紹了“DataGuard 切換的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
環境:
db version:11.2.0.3
主庫:兩節點的 RAC
備庫:兩節點的 RAC
是異地災備,網絡質量不太好。
步驟:
1. 檢查日志應用情況
standby database(備庫檢查):
SQL select thread#,SEQUENCE#,FIRST_TIME,next_time,applied from gv$archived_log order by sequence#; (確定日志都已經應用 )
2. 檢查日志傳輸錯誤
SQL SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2; STATUS GAP_STATUS
——— ————————
VALID NO GAP
3. 評估切換時間 –rac 環境下備庫只有一個實例可以為 open 狀態。
set linesize 200
SQL column name format a22
SQL column value format a16
SQL column unit format a28
SQL column time_computed format a25
SQL select * from v$dataguard_stats;
NAME VALUE UNIT TIME_COMPUTED DATUM_TIME
———————- —————- —————————- ————————- ——————————
transport lag +00 01:47:32 day(2) to second(0) interval 10/29/2014 10:48:15 10/29/2014 10:47:58
apply lag +00 01:47:32 day(2) to second(0) interval 10/29/2014 10:48:15 10/29/2014 10:47:58
apply finish time day(2) to second(3) interval 10/29/2014 10:48:15
estimated startup time 20 second 10/29/2014 10:48:15
4. 由于主備庫都是 rac,此環境下主庫和備庫都只有一個實例存活
srvctl stop instance -d EM -i EM2 – 先停止主庫
srvctl stop instance -d EM_SH -i EMP2 – 停止備庫
NOTE: 如果主庫兩個實例都存活會報錯如下:
SQL alter database commit to switchover to physical standby with session shutdown;
alter database commit to switchover to physical standby with session shutdown
*
ERROR at line 1:
ORA-01105: mount is incompatible with mounts by other instances
5. 登錄主庫操作
SQL SELECT SWITCHOVER_STATUS FROM V$DATABASE; — 確保狀態為 SESSION_ACTIVE 或者 TO STANDBY(由于是異地可能在 shut 一個實例后,redo 應用會有延遲,如果網絡質量不太好,可等一等 )
alter database commit to switchover to physical standby with session shutdown; – 執行切換 (最好把應用停掉 ) – 執行完此操作后,數據庫會自動 shut
STARTUP MOUNT; — 啟動原來主庫到 mount
6. 登錄備庫操作
SELECT SWITCHOVER_STATUS FROM V$DATABASE; — 確保狀態會 SESSION_ACTIVE 或者 TO PRIMARY.
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; – 執行角色切換
ALTER DATABASE OPEN;– 打開新主庫
srvctl start instance -d databasename -i instance_name – 啟動另外的節點
7. 登錄新的備庫
ALTER DATABASE OPEN; – 啟動庫
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; – - 啟動實時應用
srvctl start instance -d databasename -i instance_name; – 啟動其他實例
8. 進行事務,發現并沒有同步過來
archive log list 發現 scn 都沒有
經過核查是因為主庫并沒有日志傳輸
alter system set log_archive_dest_state_2= enable sid= * – 在新的主庫執行,啟動日志傳輸服務
有可能查詢數據的狀態為:
SQL SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
——————–
FAILED DESTINATION
查看備庫的 scn 沒有變化,可重啟下備庫。
9. 檢查是否同步
SELECT MAX(SEQUENCE#),THREAD# FROM V$ARCHIVED_LOG
WHERE RESETLOGS_CHANGE# = (SELECT MAX(RESETLOGS_CHANGE#) FROM V$ARCHIVED_LOG) GROUP BY THREAD#;
“DataGuard 切換的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!