6 Oracle Data Guardの保護モード

Oracle Data Guardでは、様々なデータ保護モードを設定できます。

これらの保護モードと、プライマリ・データベースでこれを設定する方法については、次の各項を参照してください。

6.1 Oracle Data Guardの保護モード

Oracle Data Guardには、最大可用性、最大パフォーマンスおよび最大保護という3つの保護モードが用意されています。

保護モードについての次の説明では、同期されたスタンバイ・データベースは、構成されたデータ保護モードの最小要件を満たしている、REDOギャップがないものである必要があります。REDOギャップについては、「REDOギャップの検出および解決」で説明します。

最大可用性

この保護モードは、プライマリ・データベースの可用性を低下させない範囲で可能な最高レベルのデータ保護を提供します。通常の操作では、トランザクションは、そのトランザクションのリカバリに必要なすべてのREDOデータがオンラインREDOログに書き込まれるまで、および(構成により)次のいずれかが当てはまるまでコミットされません。

  • REDOがスタンバイで受信され、スタンバイREDOログへのI/Oが起動され、確認がプライマリに返された

  • REDOが受信され、スタンバイでスタンバイREDOログへ書き込まれ、応答がプライマリに返された

1つ以上の同期スタンバイから確認を受信できない場合、プライマリは最大パフォーマンス・モードの場合と同様に動作して、同期スタンバイ・データベースへのREDOストリームの書込みが再び可能になるまでプライマリ・データベースの可用性を維持します。

プライマリ・データベースに障害が発生した場合、このモードは、Oracle Data Guard構成で1つ以上の同期スタンバイが存在する場合に、データが消失しないことを保証します。最大可用性のサポートに必要なREDO転送設定および関連するトレードオフの詳細は、Pe最大可用性モードでのパフォーマンス対保護を参照してください。

Oracle Data GuardがREDOデータをスタンバイREDOログ・ファイルの永久記憶域に書き込むとすぐに、プライマリのトランザクションは保護されたものとみなされます。その後すぐにプライマリ・データベースに確認通知を戻し、次のトランザクションに進めるようにします。これによって、プライマリ・データベースでの同期転送スループットやレスポンス時間による影響を最小化できます。スタンバイ・データベースでの完全なOracle Data Guardの検証機能を最大限活用するには、必ずリアルタイムの適用モードで操作し、REDOの変更を受信と同時にスタンバイ・データベースに適用します。Oracle Data Guardは検出したすべての破損を通知するので、迅速な修正処理を実行できます。

最大可用性モードでのパフォーマンス対保護

最大可用性モードを使用するとき、ニーズに最も適した選択をすることがきるように、LOG_ARCHIVE_DEST_nの属性SYNC/AFFIRMSYNC/NOAFFIRM (FastSync)を使用したことによってもたらされ得る結果を理解することが重要です。

SYNC/AFFIRMを使用して転送が実行されると、プライマリは書込み操作を実行し、REDOがフィジカル・スタンバイに同期的に転送されてディスクに書き込まれたという応答を待ちます。SYNC/AFFIRMを使用した転送では、スタンバイREDOログへのI/Oの完了に必要な時間によるパフォーマンスへの影響がありますが、保護上のメリットが追加されます。

SYNC/NOAFFIRMを使用して転送が実行されると、プライマリは書込み操作を実行し、データがスタンバイで受信されたという応答のみを待ち、ディスクに書き込まれたという応答は待ちませんSYNC/NOAFFIRMを使用した転送では、複数の障害が同時に発生する特別な場合でのデータ消失の危険性を伴いますが、パフォーマンス上のメリットがもたらされます。

これらの説明を考慮して、スタンバイ・サイトの電源喪失と同時にプライマリ・サイトで致命的な障害が発生することを想定してください。データが消失するかどうかは使用している転送モードにより決まります。SYNC/AFFIRMの場合、データがスタンバイのディスクに書き込まれたことがチェックされ、システムが修復されたときにデータはスタンバイで使用可能なので、データ消失はありません。SYNC/NOAFFIRMの場合、データがスタンバイのディスクに書き込まれたことは確認されず、データ消失が発生する可能性があります。

関連項目:

最大パフォーマンス

この保護モードは、プライマリ・データベースのパフォーマンスに影響しない範囲で可能な最高レベルのデータ保護を提供します。これは、トランザクションによって生成されたすべてのREDOデータがオンライン・ログに書き込まれた直後に、そのトランザクションのコミットを可能にすることで実現されます。REDOデータは1つ以上のスタンバイ・データベースにも書き込まれますが、この書込みはトランザクションのコミットとは非同期に実行されるため、REDOデータの送信に必要な時間およびスタンバイ・データベースからの応答の受信は、プライマリ・データベースのパフォーマンスに影響を与えません。

この保護モードは、最大可用性モードに比べてデータ保護が若干弱く、プライマリ・データベースのパフォーマンスへの影響を最小限に抑えます。

これはデフォルトの保護モードです。

最大保護

最大保護は最大可用性と似ていますが、複数の失敗イベントの際により高いレベルでデータが保護されます。スタンバイ・データベースからの応答を受信できない場合でもプライマリが処理を続行できる最大可用性とは違い、最大保護では、プライマリ・データベースは停止し、保護されないトランザクションの処理は継続できません。

このデータ保護モードは、プライマリ・データベースの可用性よりもデータ保護を優先するため、2つ以上のスタンバイ・データベースを使用して、最大保護モードで稼働するプライマリ・データベースを保護し、1つのスタンバイ・データベースの障害が原因でプライマリ・データベースが停止しないようにします。

ノート:

非同期でコミットされたトランザクションは、そのトランザクションで生成されたREDOが、少なくとも1つの同期スタンバイ・データベースのスタンバイREDOログに書き込まれるまで、データ消失に対してOracle Data Guardの保護を受けません。

非同期コミット機能の詳細は、次のドキュメントを参照してください。

6.2 プライマリ・データベースのデータ保護モードの設定

保護モードは、構成が保護モードの前提条件を満たしているかぎり、オープン・データベースで設定および変更できます(最大パフォーマンス・モードから最大可用性モードへの変更を含む)。

次のステップを実行して、プライマリ・データベースのデータ保護モードを設定します。

  1. 可用性、パフォーマンスおよびデータ保護の要件を満たすデータ保護モードを選択します。データ保護モードの詳細は、「Oracle Data Guardの保護モード」を参照してください。
  2. 少なくとも1つのスタンバイ・データベースが、必要なデータ保護モードの転送要件を満たしていることを検証します。

    少なくとも1つのスタンバイ・データベースに対応するLOG_ARCHIVE_DEST_nデータベース初期化パラメータには、次の表にリストされている、必要なデータ保護モードに対応するREDO転送属性が含まれている必要があります。

    また、スタンバイ・データベースにはスタンバイREDOログが必要です。

    表6-1 データ保護モードに対するREDO転送の必須属性

    最大可用性 最大パフォーマンス 最大保護

    AFFIRMまたはNOAFFIRM

    NOAFFIRM

    AFFIRM

    SYNC

    ASYNC

    SYNC

    DB_UNIQUE_NAME

    DB_UNIQUE_NAME

    DB_UNIQUE_NAME

  3. プライマリ・データベースおよび各スタンバイ・データベースでDB_UNIQUE_NAMEデータベース初期化パラメータが一意の値に設定されていることを確認します。
  4. LOG_ARCHIVE_CONFIGデータベース初期化パラメータがプライマリ・データベースおよび各スタンバイ・データベースに定義されていて、プライマリ・データベースおよび各スタンバイ・データベースのDB_UNIQUE_NAMEを含むDG_CONFIGリストが、その値に指定されていることを確認します。

    次のサンプルSQL文はLOG_ARCHIVE_CONFIGパラメータを構成します。

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(CHICAGO,BOSTON)';
    
  5. プライマリ・データベースで次のSQL文を実行して、データ保護モードを設定します。
    SQL> ALTER DATABASE -
    > SET STANDBY DATABASE TO MAXIMIZE {AVAILABILITY | PERFORMANCE | PROTECTION};
    

    オープン状態のデータベースでデータ保護モードをMAXIMUM PROTECTIONに設定できるのは、現在のデータ保護モードがMAXIMUM AVAILABILITYで、同期されているスタンバイ・データベースが少なくとも1つある場合のみです。

  6. 次の問合せをプライマリ・データベースで実行し、新しい保護モードで動作していることを確認します。
    SQL> SELECT PROTECTION_MODE FROM V$DATABASE;