驗證 Data Guard 部署作業

設定 Data Guard 仲介服務後,您需要驗證重做資料是否已從主要資料庫複製,並套用至待命資料庫。您可以使用下列程序,在主要資料庫和待命資料庫中查看 Data Guard 狀態。

本指南中會使用以下範例:

資料庫專屬名稱 伺服器主機名稱 RAC 執行個體名稱 角色
DBDG_SITE1 site1db1site1db2 DBDG_SITE11DBDG_SITE12 主要
DBDG_SITE2 site2db1site2db2 DBDG_SITE21DBDG_SITE22 待命

驗證 Data Guard 部署作業

  1. 登入主資料庫所在的首個 Bare Metal 解決方案伺服器,然後設定 ORACLE_SID 環境變數,以便連線至主資料庫:

    source oraenv <<< "DBDG_SITE11"
    
  2. 啟動 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
    

    記錄結果,與備用資料庫進行比較。待命資料庫中的序號應與主要資料庫相符。

  3. 登入代管待命資料庫的第一個 Bare Metal 解決方案伺服器,然後設定 ORACLE_SID 環境變數,以便連線至待命資料庫:

    source oraenv <<< "DBDG_SITE21"
    
  4. 啟動 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
    
  5. 確認代管復原程序的狀態為 APPLYING_LOG

    SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE '%MRP%';
    

    以下範例顯示名為 MRP0 的單一受管理復原程序,狀態為 APPLYING_LOG

    PROCESS   STATUS
    --------- ------------
    MRP0      APPLYING_LOG
    
  6. 檢查待命資料庫是否有任何傳輸或套用延遲情形:

    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 提供可維持應用程式連續性的選項,可在角色轉換期間使用。您可以按照下列操作說明執行資料庫切換,測試災難復原功能是否就緒:

  1. 登入主資料庫所在的 Bare Metal 解決方案伺服器。

  2. 啟動 Data Guard 指令列介面,並連線至待命資料庫:

    dgmgrl
    
    CONNECT SYS@DBDG_SITE2
    
  3. 系統提示輸入密碼時,請輸入資料庫的 SYS 遠端登入密碼。

  4. 驗證資料庫是否已準備好進行切換。

    VALIDATE DATABASE DBDG_SITE2;
    

    成功的結果會回報資料庫已準備好進行切換。

  5. 如果執行成功,請執行切換指令:

    SWITCHOVER TO DBDG_SITE2;
    

    如果指令成功,您會收到 DBDG_SITE2 是設定中新的主要資料庫的訊息。

  6. 執行下列指令,確認資料庫角色是否已互換:

    SHOW CONFIGURATION;
    
  7. 執行下列指令,即可恢復原始設定:

    SWITCHOVER TO DBDG_SITE1;
    

使用 Data Guard 仲介服務進行資料庫容錯移轉

容錯移轉是指角色轉換,其中一個待命資料庫會因網站完全中斷而轉移至主要角色。備用資料庫恢復後,系統才會將 Redo 傳送至備用資料庫。

執行容錯移轉

  1. 登入第一部代管待命資料庫的 Bare Metal 解決方案伺服器。

  2. 連線至 Data Guard 指令列介面,然後將主要資料庫容錯移轉至待命資料庫:

    dgmgrl
    
    CONNECT SYS@DBDG_SITE2
    
  3. 系統提示輸入密碼時,請輸入資料庫的 SYS 遠端登入密碼。

  4. 啟動容錯移轉:

    FAILOVER TO DBDG_SITE2
    

    執行 show configuration; 以確認 DBDG_SITE2 現為主要資料庫,且需要恢復 DBDG_SITE1

恢復主要資料庫

只有在啟用 flashback database 時,您才能在容錯移轉後恢復主要資料庫。如要恢復失敗的主資料庫,請按照下列步驟操作:

  1. 登入代管主要資料庫的第一部 Bare Metal 解決方案伺服器。

  2. 連線至 Data Guard 指令列介面、登入主要資料庫,然後還原失敗的資料庫:

    dgmgrl
    
    CONNECT SYS@DBDG_SITE2
    

    系統提示輸入密碼時,請輸入資料庫的 SYS 遠端登入密碼。

  3. 恢復資料庫:

    REINSTATE DATABASE DBDG_SITE1;
    EXIT;
    

後續步驟

接下來,請在 Compute Engine 上設定 Data Guard 觀察器