最新タイムスタンプの競合検出および解決

DBMS_GOLDENGATE_ADMパッケージのADD_AUTO_CDRプロシージャを実行して、Oracle GoldenGate自動競合検出および解決のために表を構成すると、非表示のタイムスタンプ列が表に追加されます。この非表示のタイムスタンプ列によって行変更の時間が記録され、この情報を使用して競合が検出されて解決されます。

行LCRを適用すると、INSERTUPDATEまたはDELETE操作で競合が発生する可能性があります。次の表では、それぞれの競合のタイプと、その解決方法について説明します。

操作 競合の検出 競合の解決

INSERT

競合が検出されるのは、表のキー列の値が行LCRの新しい値と同じ場合です。

行LCRのタイムスタンプが表の行のタイムスタンプより遅い場合は、行LCRの値で表の値が置き換えられます。

行LCRのタイムスタンプが表の行のタイムスタンプより早い場合は、行LCRが破棄され、表の値が保持されます。

UPDATE

次のそれぞれの場合に競合が検出されます。

  • 行LCRのタイムスタンプ値と、表の対応する行のタイムスタンプ値が一致しない場合。

  • 行LCRの列グループの古い値が、対応する表の行の列値と一致しない場合。列グループは、レプリケートされた表の1つ以上の列の論理グループ化です。

  • 表の行が存在しない場合。行がツームストン表にある場合は、更新/削除競合と呼ばれます。

値が一致せず、行LCRのタイムスタンプが表の行のタイムスタンプより遅い場合は、行LCRの値で表の値が置き換えられます。

値が一致せず、行LCRのタイムスタンプが表の行のタイムスタンプより早い場合は、行LCRが破棄され、表の値が保持されます。

表の行が存在せず、行LCRのタイムスタンプがツームストン表の行のタイムスタンプより遅い場合は、行LCRがUPDATE操作からINSERT操作に変換され、表に挿入されます。

表の行が存在せず、行LCRのタイムスタンプがツームストン表の行のタイムスタンプより早い場合は、行LCRが破棄されます。

表の行が存在せず、対応する行がツームストン表に存在しない場合は、行LCRがUPDATE操作からINSERT操作に変換され、表に挿入されます。

DELETE

次のそれぞれの場合に競合が検出されます。

  • 行LCRのタイムスタンプ値と、表の対応する行のタイムスタンプ値が一致しない場合。

  • 表の行が存在しない場合。

行LCRのタイムスタンプが表のタイムスタンプより遅い場合は、行が表から削除されます。

行LCRのタイムスタンプが表のタイムスタンプより早い場合は、行LCRが破棄され、表の値が保持されます。

削除が成功した場合は、行LCRがツームストン表に挿入されてログに記録されます。

表の行が存在しない場合は、行LCRがツームストン表に挿入されてログに記録されます。