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
のデフォルトの宛先で十分です。
トレースを手動で開始する手順
-
TRACE
権限または少なくともSYSOPR
権限を持つDb2ユーザーとしてDb2にログオンします。 -
次のコマンドを実行します。
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は単一のリカバリ・タスク用にテープ上のアーカイブを予約するため、Extractはリカバリが完了するまで、表のリカバリに使用されるアーカイブ・テープを読み取れません。DFHSMまたは同等のツールを使用して、アーカイブ・ログをオンラインDASDストレージとテープとの間でシームレスに移動できますが、転送が完了するまでExtractは待機する必要があります。Extractの処理の遅れによってソース・データとターゲット・データとの間のレイテンシが増します。
ZPARM
を考慮することをお薦めします:
-
DEALLCT
-
DEALLCT
サブシステム・パラメータは、アーカイブ読取りテープ装置が割当て解除されるまでに未使用のままにできる時間の長さを決定します。更新: パネル
DSNTIPB
のオプション43DSNZPxxx: DSN6LOGP DEALLCT
DEALLCT
を0、1 (1秒の割当て解除遅延)に設定することをお薦めします。デフォルトでは、すぐに割当て解除されます。これにより、Extractからの各読取りの間にDb2がテープを即座に再割当てしなくなります。 -
MAXRTU
-
MAXRTU
サブシステム・パラメータは、アーカイブ・ログのテープ・ボリュームを同時に読み取るために割り当てることができる専用テープ装置の最大数を指定します。更新: パネル
DSNTIPB
のオプション43DSNZPxxx: DSN6LOGP MAXRTU
デフォルトは2つのテープ装置ですが、テープ装置数+1から同時に読み取られる可能性のある予期されるプロセスの数に設定する必要があります。たとえば、テープから読み取る可能性がある4つのExtractおよび他の2つのアプリケーションがある場合、
MAXRTU
は7 (4 + 2 + 1)以上である必要があります。
TRANLOGOPTIONS BUFSIZE 33554432
これは、Extractが、読取りごとにデフォルトの1MBではなく、トランザクション・ログから一度に最大32MBの読取りを行うことを示します。この設定では、Oracle GoldenGateがz/OSで使用するメモリー割当て(ECSA (64バイト)または64ビット共有メモリー(1MB))は増加しません。Extractが大きなバッファを読み取る間、Db2の一時メモリー割当てが増加する場合があります。
DBLOGIN
パラメータの前に次の設定を使用して、Db2ドライバのTCP通信バッファリングをさらにチューニングする機能を提供することもできます。たとえば:SETENV(DB2SOSNDBUF='524288')
SETENV(DB2SORCVBUF='524288')
これにより、Db2ドライバは、送信バッファと受信バッファに512KBを使用するように通知されます。その他の値も使用でき、インストールごとにチューニング可能です。
ログ・フラッシュの制御
トランザクション・ログを読み取る際、Extractは、コミット・レコードを取得するまでトランザクションを処理しません。コミット・レコードが、一杯になっていないデータ・ブロックにある場合、さらにログ・アクティビティが生成されてブロックが一杯になるまでコミット・レコードは取得されません。Extractがログの読取りに使用するAPIでは、一杯になった物理データ・ブロックのみ取得されます。
コミットを含むブロックの取得の遅れによって、ソース・データとターゲット・データとの間でレイテンシが発生します。アプリケーションでブロックを一杯にするのに十分なログ・レコードが生成されない場合、Extractは、ブロックが一杯になって解放されるまで、SAVEPOINT
およびCOMMIT
文を発行してログ・レコードを生成します。
データ共有グループでは、各APIコールによってDb2がすべてのアクティブ・メンバーのデータ・ブロックをフラッシュし、Extractがフラッシュを行う必要はありません。
Extractでフラッシュが行われないようにするには、ExtractのパラメータTRANLOGOPTIONS
のNOFLUSH
オプションを使用します。