Oracle GoldenGateのためのDb2 z/OSトランザクション・ログの準備

Oracle GoldenGate Extractによるデータ取得をサポートするようにDb2トランザクション・ロギングを構成する方法について学習します。

Oracle GoldenGateは、アクティブ・ログとアーカイブ・ログからDb2トランザクション・データを取得できます。次のガイドラインに従って、Extractがデータを取得できるようログを構成します。

Oracle GoldenGate for Db2 z/OSの変更の取得を有効にするには、「Oracle以外のデータベースのTRANDATAの有効化」を参照してください

ログ・レコードへのアクセスの有効化

Db2 Monitor Trace Class 1をアクティブにし("TRACE(MONITOR) CLASS(1)")、Db2でExtractによるアクティブ・ログの読取りができるようにします。Oracle GoldenGateは宛先を使用しないため、OPXのデフォルトの宛先で十分です。

トレースを手動で開始する手順

  1. TRACE権限または少なくともSYSOPR権限を持つDb2ユーザーとしてDb2にログオンします。

  2. 次のコマンドを実行します。

    start trace(monitor) class(1) scope(group)

Db2の起動時に自動的にトレースを開始する方法

次のいずれかの操作を実行します。

  • DSNTIPNインストール・トレース・パネルでMONITOR TRACEを"YES"に設定します。

  • 『Db2 UDB Installation Guide』に記載されているように、DSNTIJUZインストール・ジョブで'DSN6SYSP MON=YES'を設定します。

ノート:

ODBCプラン・エグゼキュータの1次許可IDまたはいずれかの2次許可IDにもMONITOR2権限がある必要があります。

ログのサイズと保持

表がDATA CAPTURE CHANGESを使用して定義されている場合、DATA CAPTURE NONEを使用して定義されている場合より多くのデータが記録されます。次のいずれかに該当する場合、アクティブ・ログとアーカイブ・ログの数とサイズを増やす必要があります。

  • アプリケーションで大量のDb2データを生成します。

  • アプリケーションであまりコミットは発生しません。

  • Extractを長時間停止することが想定されています。

  • ネットワークが安定していないか、遅いです。

ログ保持を制御するには、DSNTIJUZインストール・ジョブでDSN6LOGP MAXARCHシステム・パラメータを使用します。

Extractを停止した後または計画外の停止の後、Extractがチェックポイントから再度起動できるように十分なログ・データを保持します。Extractは、コミットされていない最も古い作業ユニットの開始点を含むログと、その後のすべてのログにアクセスできる必要があります。

処理時にExtractで必要なデータがオンラインまたはアーカイブのログに保存されていなかった場合、次のいずれかの修正処理が必要になる可能性があります。

  • Extractを変更して、ログ・データが使用できる後の時点から取得します(さらにターゲットで起こり得るデータ損失を受け入れます)。

  • ソース表とターゲット表を再同期してから、Oracle GoldenGate環境を再起動します。

ノート:

IBM社のドキュメントに、ログの読取りのパフォーマンスを改善するための推奨が記載されています。特に、大規模なログ出力バッファ、大規模なアクティブ・ログおよびディスクへのアーカイブを使用できます。

テープ上のアーカイブ・ログの使用

Oracle GoldenGateではテープ上のDb2アーカイブ・ログを読取りできます。これによりパフォーマンスは低下します。たとえば、Db2は、テープ上のアーカイブを1つのリカバリ・タスク用に確保します。その結果、リカバリが完了するまで、Extractは、表のリカバリに使用されるアーカイブ・テープを読み取ることができません。DFHSMまたは同等のツールを使用して、アーカイブ・ログをオンラインDASDストレージとテープとの間でシームレスに移動できますが、転送が完了するまでExtractは待機する必要があります。Extractの処理の遅れによってソース・データとターゲット・データとの間のレイテンシが増します。

ログ・フラッシュの制御

トランザクション・ログを読み取る際、Extractは、コミット・レコードを取得するまでトランザクションを処理しません。コミット・レコードが、一杯になっていないデータ・ブロックにある場合、さらにログ・アクティビティが生成されてブロックが一杯になるまでコミット・レコードは取得されません。Extractがログの読取りに使用するAPIでは、一杯になった物理データ・ブロックのみ取得されます。

コミットを含むブロックの取得の遅れによって、ソース・データとターゲット・データとの間でレイテンシが発生します。アプリケーションでブロックを一杯にするのに十分なログ・レコードが生成されない場合、Extractは、ブロックが一杯になって解放されるまで、SAVEPOINTおよびCOMMIT文を発行してログ・レコードを生成します。

データ共有グループでは、各APIコールによってDb2がすべてのアクティブ・メンバーのデータ・ブロックをフラッシュし、Extractがフラッシュを行う必要はありません。

Extractでフラッシュが行われないようにするには、ExtractのパラメータTRANLOGOPTIONSNOFLUSHオプションを使用します。