本篇內容介紹了“DataGuard切換的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
環境:
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切換的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。