驗證 Data Guard 部署作業
設定 Data Guard 仲介服務後,您需要驗證重做資料是否已從主要資料庫複製,並套用至待命資料庫。您可以使用下列程序,在主要資料庫和待命資料庫中查看 Data Guard 狀態。
本指南中會使用以下範例:
資料庫專屬名稱 | 伺服器主機名稱 | RAC 執行個體名稱 | 角色 |
---|---|---|---|
DBDG_SITE1 | site1db1、site1db2 | DBDG_SITE11、DBDG_SITE12 | 主要 |
DBDG_SITE2 | site2db1、site2db2 | DBDG_SITE21、DBDG_SITE22 | 待命 |
驗證 Data Guard 部署作業
登入主資料庫所在的首個 Bare Metal 解決方案伺服器,然後設定
ORACLE_SID
環境變數,以便連線至主資料庫:source oraenv <<< "DBDG_SITE11"
啟動 SQL*Plus,然後判斷已封存重做記錄的最新序號:
sqlplus / as sysdba
SELECT THREAD#, max(SEQUENCE#) "Last Primary Seq Archived" FROM V$ARCHIVED_LOG VAL, V$DATABASE VDB WHERE VAL.RESETLOGS_CHANGE# = VDB.RESETLOGS_CHANGE# GROUP BY THREAD# ORDER BY 1;
以下輸出內容的執行緒 1 的最大序號為 40,執行緒 2 的最大序號為 33:
THREAD# Last Primary Seq Archived ---------- ------------------------- 1 40 2 33
記錄結果,與備用資料庫進行比較。待命資料庫中的序號應與主要資料庫相符。
登入代管待命資料庫的第一個 Bare Metal 解決方案伺服器,然後設定
ORACLE_SID
環境變數,以便連線至待命資料庫:source oraenv <<< "DBDG_SITE21"
啟動 SQL*Plus,然後驗證已接收並套用於已封存重做記錄的最新序號,是否與主要資料庫中的最新序號相符:
sqlplus / as sysdba
SELECT THREAD#, max(SEQUENCE#) "Last Standby Seq Received" FROM V$ARCHIVED_LOG VAL, V$DATABASE VDB WHERE VAL.RESETLOGS_CHANGE# = VDB.RESETLOGS_CHANGE# GROUP BY THREAD# ORDER BY 1;
SELECT THREAD#, max(SEQUENCE#) "Last Standby Seq Applied" FROM V$ARCHIVED_LOG VAL, V$DATABASE VDB WHERE VAL.RESETLOGS_CHANGE# = VDB.RESETLOGS_CHANGE# AND VAL.APPLIED IN ('YES','IN-MEMORY') GROUP BY THREAD# ORDER BY 1;
以下輸出內容包含序號,與先前針對待命資料庫執行的查詢相符:
THREAD# Last Standby Seq Received ---------- ------------------------- 1 40 2 33
THREAD# Last Standby Seq Applied ---------- ------------------------ 1 40 2 33
確認代管復原程序的狀態為
APPLYING_LOG
:SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE '%MRP%';
以下範例顯示名為
MRP0
的單一受管理復原程序,狀態為APPLYING_LOG
:PROCESS STATUS --------- ------------ MRP0 APPLYING_LOG
檢查待命資料庫是否有任何傳輸或套用延遲情形:
COLUMN NAME FORMAT a20 COLUMN VALUE FORMAT a30 SELECT NAME, VALUE FROM V$DATAGUARD_STATS WHERE NAME LIKE '%lag%';
以下輸出結果顯示待命資料庫沒有延遲:
NAME VALUE -------------------- ------------------------------ transport lag +00 00:00:00 apply lag +00 00:00:00
如果發生延遲,請參閱 Oracle 的 Data Guard 疑難排解說明文件。
使用 Data Guard 仲介服務進行資料庫切換
切換是指角色互換,主要資料庫會變成待命資料庫,反之亦然。在切換過程中,資料庫用戶端會與主要資料庫中斷連線。視應用程式連線至資料庫的方式而定,切換可能會中斷應用程式流量。Oracle 提供可維持應用程式連續性的選項,可在角色轉換期間使用。您可以按照下列操作說明執行資料庫切換,測試災難復原功能是否就緒:
登入主資料庫所在的 Bare Metal 解決方案伺服器。
啟動 Data Guard 指令列介面,並連線至待命資料庫:
dgmgrl
CONNECT SYS@DBDG_SITE2
系統提示輸入密碼時,請輸入資料庫的 SYS 遠端登入密碼。
驗證資料庫是否已準備好進行切換。
VALIDATE DATABASE DBDG_SITE2;
成功的結果會回報資料庫已準備好進行切換。
如果執行成功,請執行切換指令:
SWITCHOVER TO DBDG_SITE2;
如果指令成功,您會收到
DBDG_SITE2
是設定中新的主要資料庫的訊息。執行下列指令,確認資料庫角色是否已互換:
SHOW CONFIGURATION;
執行下列指令,即可恢復原始設定:
SWITCHOVER TO DBDG_SITE1;
使用 Data Guard 仲介服務進行資料庫容錯移轉
容錯移轉是指角色轉換,其中一個待命資料庫會因網站完全中斷而轉移至主要角色。備用資料庫恢復後,系統才會將 Redo 傳送至備用資料庫。
執行容錯移轉
登入第一部代管待命資料庫的 Bare Metal 解決方案伺服器。
連線至 Data Guard 指令列介面,然後將主要資料庫容錯移轉至待命資料庫:
dgmgrl
CONNECT SYS@DBDG_SITE2
系統提示輸入密碼時,請輸入資料庫的 SYS 遠端登入密碼。
啟動容錯移轉:
FAILOVER TO DBDG_SITE2
執行
show configuration;
以確認DBDG_SITE2
現為主要資料庫,且需要恢復DBDG_SITE1
。
恢復主要資料庫
只有在啟用 flashback database
時,您才能在容錯移轉後恢復主要資料庫。如要恢復失敗的主資料庫,請按照下列步驟操作:
登入代管主要資料庫的第一部 Bare Metal 解決方案伺服器。
連線至 Data Guard 指令列介面、登入主要資料庫,然後還原失敗的資料庫:
dgmgrl
CONNECT SYS@DBDG_SITE2
系統提示輸入密碼時,請輸入資料庫的 SYS 遠端登入密碼。
恢復資料庫:
REINSTATE DATABASE DBDG_SITE1; EXIT;
後續步驟
接下來,請在 Compute Engine 上設定 Data Guard 觀察器。