変更済みデータのキャプチャーのための表の変更
ALTER TABLE ステートメントを使用すると、その表のデータ変更を、データ複製処理で使用するために拡張フォーマットでログに書き込むことができます。
このタスクについて
表の DATA CAPTURE 属性は、表の行に対する更新のために、イメージの前に完全または部分的なイメージがログに書き出されるかどうかを指定します。 表は、デフォルトで DATA CAPTURE NONE 属性を使用して作成されます。 この属性は、表の行に対する更新のために、ログ・レコード内の変更前イメージのみをDb2が書き出すことを意味します。 データ複製を使用可能にするには、DATA CAPTURE CHANGES 属性を使用して表を定義する必要があります。これにより、Db2は、変更前イメージの一部ではなく、ログ・レコード内のイメージの前に全体を書き出します。
DATA CAPTURE CHANGES 属性を使用して表が定義されている場合、ログ・レコード内のイメージ全体には、部分イメージに含まれていない以下の情報が含まれます。
- SQL データ変更操作
- 列追加 (ADD COLUMN 文節を使用)
- 列変更 (ALTER COLUMN 文節を使用)
以下の製品のようなデータ複製ツールは、複製処理に拡張ログ・レコードを使用します。
拡張フォーマット・ログ・レコードは、LOB データおよび XML データには使用できません。
プロシージャー
結果

FL 500 DATA CAPTURE 変更は、変更されたテーブルに依存する同時実行文のコミットを待たず、変更は ALTER がコミットする前であっても、同じ Db2 メンバー上の他の同時実行スレッドに即座に反映されます。 結果として、同じトランザクション内の並行ステートメントは、ログ・レコードを異なるフォーマットで書き出すことができます。
例えば、以下の表は、同じトランザクション内の並行スレッドが、異なるフォーマットのログ・レコードを表示する方法を示しています。
| スレッド 1 ステートメント | スレッド 2 ステートメント | ステートメントの結果 |
|---|---|---|
UPDATE TB1 SET COL1 ... |
UPDATE ステートメントは、TB1 の DATA CAPTURE NONE 属性を参照し、部分的な前イメージを持つログ・レコードを書き出します。 | |
ALTER TABLE TB1 DATA CAPTURE CHANGES |
この変更は、スレッド 1 にすぐに表示されます。 ただし、ALTER TABLE ステートメントがコミットされるまで、カタログ変更は他のスレッドに対して可視ではありません。 | |
UPDATE TB1 SET COL2 ... |
UPDATE ステートメントは、TB1 の新しい DATA CAPTURE CHANGES 属性を参照し、ALTER TABLE ステートメントまたは自身のトランザクションがコミットする前に、完全なログ・レコードを書き出します。 | |
COMMIT |
||
UPDATE TB1 SET COL3 ... |
UPDATE ステートメントは、TB1の DATA CAPTURE CHANGES 属性を参照し、ALTER TABLE ステートメントがコミットされる前に完全なログ・レコードを書き出します。 | |
COMMIT |
ALTER ステートメントのカタログ更新は、他のスレッドに対して可視になります。 | |
UPDATE TB1 SET COL 4 ... |
UPDATE ステートメントは、TB1 の DATA CAPTURE CHANGES 属性を参照し、完全なログ・レコードを書き出します。 | |
| COMMIT |
