この章には、DB2トランザクション・ロギングを構成してOracle GoldenGate Extractによるデータ取得をサポートするために必要な情報が含まれます。
ExtractプロセスはBSDSを使用して、非データ共有環境内のトランザクション・ログでの最初の位置を見つけます。Extractグループを作成する際、BSDSを指定します。BSDSは、Extractプロセスの接続先のDB2サブシステムのBSDSである必要があります。Oracle GoldenGateは、BSDSの指定の妥当性はチェックしません。
Oracle GoldenGateは、アクティブ・ログとアーカイブ・ログからDB2トランザクション・データを抽出できます。次のガイドラインに従って、Extractがデータを取得できるようログを構成します。
次の手順に従って、CREATE TABLE
およびALTER TABLE
コマンドのDATA CAPTURE CHANGES
機能で提供される拡張形式でデータの変更が記録されるよう、DB2を構成します。この形式により、Oracle GoldenGateでは、更新文によって変更された行の変更前イメージと変更後イメージの全体を使用できます。
Oracle GoldenGateディレクトリからGGSCIを実行します。
ALTER TABLE
権限を持つユーザーとしてGGSCIからDB2にログオンします。
DBLOGIN SOURCEDB DSN, USERID user[, PASSWORD password][, encryption_options
]
次のコマンドを発行します。table
は表の完全修飾名です。ワイルドカードを使用して複数の表の名前を指定できますが、所有者名には使用できません。
ADD TRANDATA table
デフォルトでは、ADD TRANDATA
によって次のコマンドが発行されます。
ALTER TABLE name
DATA CAPTURE CHANGES;
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にも |
表が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のパラメータTRANLOGOPTIONS
のNOFLUSH
オプションを使用します。