1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Data Guard環境におけるGoldenGate運用の考慮事項

Last updated at Posted at 2023-06-11

はじめに

Oracle Data Guard 環境下にて、Oracle GoldenGate を運用する際に、ExtractプロセスのTRANLOGOPTIONS HANDLEDLFAILOVERパラメータの必要性と使用時の運用考慮事項を紹介します。

環境

本記事は下記環境にて動作確認を行っています。

  • Oracle Database 19c Enterprise Edition 19.16.0.0.0
  • Oracle GoldenGate 19.1 19.1.0.0.210720

TRANLOGOPTIONS HANDLEDLFAILOVERとは

TRANLOGOPTIONS HANDLEDLFAILOVERは、Extractプロセスに設定可能なパラメータです。本パラメータを有効化した場合、Extractプロセスは、Data Guardのスタンバイデータベースに適用済みのREDOデータのみを抽出する動作になります。本パラメータの必要性について、例を挙げて紹介します。

システム構成例

  • GoldenGateのPrimary Extract(いわゆるCaptureプロセス)はData Guardのプライマリデータベースから、REDOデータを抽出し、ターゲットシステムに転送します。
  • Replicatプロセスがターゲットデータベースにトランザクションデータを適用します。
  • Data GuardのREDO適用により、スタンバイデータベースは更新されます。
    20230611_01.PNG

TRANLOGOPTIONS HANDLEDLFAILOVERを使用しない場合

Extractプロセスは、スタンバイデータベースのREDO適用状態を考慮しないため、スタンバイデータベースに未適用のREDOデータを抽出する可能性があります。その場合、一時的にターゲットデータベースに適用されたソースデータベースのSCNが、スタンバイデータベースのSCNよりも大きい(新しい)状態になります。
20230611_03.PNG

上記状態において、プライマリデータベースに障害が発生し、データロストを伴うData Guardのフェイルオーバを実行した場合、下記図の状態となります。
20230611_04.PNG

  • スタンバイデータベースは、SCN90の状態で新プライマリに昇格します。
    未適用のREDO(SCN91以降)データはロストします。
  • ターゲットデータベースは、SCN100まで適用されているため、新プライマリデータベースとデータ不整合が発生した状態となります。
  • データ不整合が発生しているため、GoldenGateのレプリケーションはエラーが発生します。

GoldenGateのレプリケーションを再開するためには、初期データ移行をやり直すなど復旧に時間を要します。

TRANLOGOPTIONS HANDLEDLFAILOVERを使用した場合

Extractプロセスによる抽出処理は、スタンバイデータベースに適用されたREDOデータのみを抽出するため、スタンバイデータベースのSCN(データベース断面)は、ターゲットデータベースよりも新しい状態である事が保証されます。先ほどの例と同様にデータロストを伴うフェイルオーバ後の状態を下記に示します。

  • ソースシステムフェイルオーバ後
    20230611_05.PNG
  • スタンバイデータベースは、SCN100の状態で新プライマリに昇格します。
    未適用のREDO(SCN101以降)データはロストします。
  • ターゲットデータベースは、SCN90まで適用されているため、新プライマリデータベースのSCN91以降のトランザクションから、GoldenGateのレプリケーションを再開できます。

TRANLOGOPTIONS HANDLEDLFAILOVERの考慮事項

Extract遅延事象

Data Guardの保護モードが、最大パフォーマンスモードの場合、Extractプロセスの抽出タイミングが、60秒に1回程度になる動作を筆者環境にて確認しました。

回避方法1

Extract処理が60秒に1回となる動作が許容できない場合は、データベース初期化パラメータの _redo_transport_stream_writesfalse に設定する事で上記の待機動作を回避できますが、隠しパラメータのため、使用する際はSRにて、ご確認ください。

回避方法2

Data Guardの保護モードを最大可用性モードにする事で、上記待機事象は回避可能です。REDO転送モードは、Fast Sync(SYNC NOAFFIRM)、あるいは SYNC AFFIRM どちらでも大丈夫です。ただし、最大可用性モードに設定する事でプライマリデータベース側のトランザクション性能が低下する可能性がある点をご注意ください。

参考資料

Oracle Data GuardとOracle GoldenGateによる透過的なロール移行

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?