Data Guard デプロイを検証する

Data Guard ブローカーの設定が完了したら、REDO がプライマリ データベースからコピーされ、スタンバイ データベースに適用されたことを確認する必要があります。次の手順で、プライマリ データベースとスタンバイ データベース内から Data Guard のステータスを確認できます。

このガイド全体を通して、次の例を使用します。

データベースの一意の名前 サーバーのホスト名 RAC インスタンス名 役割
DBDG_SITE1 site1db1site1db2 DBDG_SITE11DBDG_SITE12 プライマリ
DBDG_SITE2 site2db1site2db2 DBDG_SITE21DBDG_SITE22 スタンバイ

Data Guard デプロイを検証する

  1. プライマリ データベースをホストする最初の Bare Metal Solution サーバーにログインし、プライマリ データベースに接続できるように ORACLE_SID 環境変数を設定します。

    source oraenv <<< "DBDG_SITE11"
    
  2. SQL*Plus を起動して、アーカイブ REDO ログの最新のシーケンス番号を確認します。

    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 Solution サーバーにログインし、スタンバイ データベースに接続できるように ORACLE_SID 環境変数を設定します。

    source oraenv <<< "DBDG_SITE21"
    
  4. SQL*Plus を起動した後、受信したアーカイブ REDO ログの最新のシーケンス番号がプライマリ データベースの最新のシーケンス番号と一致していることを確認します。

    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%';
    

    次の例は、ステータスが APPLYING_LOG で、名前が MRP0 の単一マネージド復旧プロセスを示しています。

    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 Solution サーバーにログインします。

  2. Data Guard コマンドライン インターフェースを起動し、スタンバイ データベースに接続します。

    dgmgrl
    
    CONNECT SYS@DBDG_SITE2
    
  3. パスワードの入力を求められたら、データベースの SYS リモート ログイン パスワードを入力します。

  4. データベースがスイッチオーバーの準備を完了していることを確認します。

    VALIDATE DATABASE DBDG_SITE2;
    

    成功すると、データベースのスイッチオーバーの準備ができたことが報告されます。

  5. 成功したら、switchover コマンドを実行します。

    SWITCHOVER TO DBDG_SITE2;
    

    コマンドが成功すると、DBDG_SITE2 が構成内の新しいプライマリ データベースになったことを通知するメッセージが表示されます。

  6. 次のコマンドを実行して、データベースの役割が交換されたことを確認します。

    SHOW CONFIGURATION;
    
  7. 次のコマンドを実行して元の構成に戻ります。

    SWITCHOVER TO DBDG_SITE1;
    

Data Guard ブローカーを使用したデータベースのフェイルオーバー

フェイルオーバーは役割の移行で、サイトを完全に停止することでスタンバイ データベースの 1 つがプライマリの役割に移行します。スタンバイ データベースが復旧するまで、REDO はスタンバイ データベースに送信されません。

フェイルオーバーを実行する

  1. スタンバイ データベースをホストする最初の Bare Metal Solution サーバーにログインします。

  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 Solution サーバーにログインします。

  2. Data Guard コマンドライン インターフェースに接続し、プライマリ データベースにログインしてから、障害が発生したデータベースを復元します。

    dgmgrl
    
    CONNECT SYS@DBDG_SITE2
    

    パスワードの入力を求められたら、データベースの SYS リモート ログイン パスワードを入力します。

  3. データベースを復元します。

    REINSTATE DATABASE DBDG_SITE1;
    EXIT;
    

次のステップ

Compute Engine で Data Guard オブザーバーを設定します。