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 NONEを使用して定義されている場合よりも、DATA CAPTURE CHANGESを使用して定義されている場合、より多くのデータが記録されます。次のいずれかに該当する場合、アクティブ・ログとアーカイブ・ログの数とサイズを増やす必要があります。
-
アプリケーションで大量のDb2データを生成します。
-
アプリケーションであまりコミットは発生しません。
-
Extractを長時間停止することが想定されています。
-
ネットワークが安定していないか、遅いです。
ログ保持を制御するには、DSNTIJUZインストール・ジョブでDSN6LOGP MAXARCHシステム・パラメータを使用します。
Extractを停止した後または計画外の停止の後、Extractがチェックポイントから再度起動できるように十分なログ・データを保持します。Extractは、コミットされていない最も古い作業ユニットの開始点を含むログと、その後のすべてのログにアクセスできる必要があります。
処理中にExtractが必要とするデータがオンラインまたはアーカイブのログに保存されていなかった場合、次のいずれかの修正処理が必要になる可能性があります。
-
Extractを変更して、ログ・データが使用できる後の時点から取得します(さらにターゲットで起きり得るデータ損失を受け入れる)。
-
ソース表とターゲット表を再同期してから、Oracle GoldenGate環境を再起動します。ノート: IBMのドキュメントは、ログ読取りのパフォーマンスを改善するための推奨を記載しています。特に、大規模なログ出力バッファ、大規模なアクティブ・ログおよびディスクへのアーカイブを使用できます。
テープ上のアーカイブ・ログの使用
Oracle GoldenGateはテープ上のDb2アーカイブ・ログを読み取ることができるため、パフォーマンスが低下します。たとえば、Db2は、テープ・アーカイブを単一のリカバリ・タスク用に予約するため、Extractは、リカバリが完了するまで、表のリカバリに使用されているアーカイブ・テープを読み取れません。DFHSMまたは同等のツールを使用して、アーカイブ・ログをオンラインDASDストレージとテープとの間でシームレスに移動できますが、転送が完了するまでExtractは待機する必要があります。Extractの処理の遅れによってソース・データとターゲット・データとの間のレイテンシが増します。
Oracle GoldenGate Extractが、物理テープまたは仮想テープのいずれかのテープから読み取ることができるか、または読み取る場合は、次のZPARMsが考慮されるようにすることを強くお薦めします。
課題
DEALLCTサブシステム・パラメータは、アーカイブ読取りテープ・ユニットの割当て解除前に未使用のままにできる時間の長さを決定します。
更新: パネル DSNTIPBのオプション43
DSNZPxxx: DSN6LOGP DEALLCT
Oracleでは、DEALLCTを0、1 (1秒の割当て解除遅延)に設定することをお薦めします。デフォルトでは、すぐに割り当て解除されます。これにより、Db2はExtractからの読取り間でテープを即時に再割当てできなくなります。
MAXRTU
MAXRTUサブシステム・パラメータでは、アーカイブ・ログ・テープ・ボリュームの同時読取りに割り当てることができる専用テープ・ユニットの最大数を指定します。
更新: パネル DSNTIPBのオプション43
DSNZPxxx: DSN6LOGP MAXRTU
デフォルトは2テープユニットですが、tape+1から同時に読み取れる予期されるプロセスの数に設定する必要があります。たとえば、4つのExtractと、テープから読み取ることができる他の2つのアプリケーションがある場合、MAXRTUは少なくとも7 (4 + 2 + 1)である必要があります。
テープからの読取り時の最適なパフォーマンスと遅延の最小化のために、Oracle GoldenGate Extractでは次のものを使用する必要があります。
TRANLOGOPTIONS BUFSIZE 33554432
これは、Extractがトランザクション・ログから一度に最大32MBを読み取ることを示し、デフォルトの1読取り当たり1MBではありません。この設定では、ECSA (64バイト)または64ビットの共有メモリー(1MB)のいずれかで、Oracle GoldenGateがz/OSで使用するメモリー割当ては増加しません。Extractが大きいバッファを読み取る間、Db2の一時メモリー割当てが増加する場合があります。
また、Extractパラメータ・ファイルでは、DBLOGINパラメータの前に、Db2ドライバのTCP通信バッファリングをさらにチューニングする機能を提供するために、次を使用することもできます。たとえば:
SETENV(DB2SOSNDBUF='524288')
SETENV(DB2SORCVBUF='524288')
これにより、送信バッファおよび受信バッファに512KBを使用するようにDb2ドライバに通知されます。その他の値は使用でき、インストールごとにチューニングできます。
ログ・フラッシュの制御
トランザクション・ログを読み取る際、Extractは、コミット・レコードを取得するまでトランザクションを処理しません。コミット・レコードが、一杯になっていないデータ・ブロックにある場合、さらにログ・アクティビティが生成されてブロックが一杯になるまでコミット・レコードは取得されません。Extractがログの読取りに使用するAPIでは、一杯になった物理データ・ブロックのみ取得されます。
コミットを含むブロックの取得の遅れによって、ソース・データとターゲット・データとの間でレイテンシが発生します。アプリケーションでブロックを一杯にするのに十分なログ・レコードが生成されない場合、Extractは、ブロックが一杯になって解放されるまで、SAVEPOINTおよびCOMMIT文を発行してログ・レコードを生成します。
データ共有グループでは、各APIコールによってDb2がすべてのアクティブ・メンバーのデータ・ブロックをフラッシュし、Extractがフラッシュを行う必要はありません。
Extractでフラッシュが行われないようにするには、ExtractのパラメータTRANLOGOPTIONSのNOFLUSHオプションを使用します。