最初のタイムスタンプの競合検出および解決
CDRTS$ column group
およびCDRTS$ROW
の列は、列グループおよび行の変更時刻を反映するタイムスタンプの格納に使用します。
ノート:
$
または$$
記号を含む表は、内部または非表示の表です。
DBMS_GOLDENGATE_ADM
には、最初のタイムスタンプ解決および最新のタイムスタンプ解決を構成するための次のプロシージャが含まれます。
-
ADD_AUTO_CDR()
-
ADD_AUTO_CDR_COLUMN_GROUP()
-
REMOVE_AUTO_CDR()
-
REMOVE_AUTO_CDR_COLUMN_GROUP()
-
ALTER_AUTO_CDR()
-
ALTER_AUTO_CDR_COLUMN_GROUP()
ADD_AUTO_CDR()
とALTER_AUTO_CDR()
の両方にあるフィールドADDITIONAL_OPTIONS
で最初のタイムスタンプの使用をオンにします。最初のタイムスタンプをオンにすると、自動的にバージョニングがオンになり、タイムスタンプ型の新しい非表示列KEYVER$$
(バージョン番号)が追加されます。最初のタイムスタンプの使用を示すために、新しいフラグ値が追加されます。このフィールドは、DELETE TOMBSTONE
表にも追加されます。削除の競合があるために、バージョン番号が必要になります。最初のタイムスタンプの解決では、透過的になる可能性のある削除の競合が誤って成功するだけでなく、行の新規挿入(新規バージョン)が妨げられることもあります。バージョン・タイムスタンプでは、同じ行バージョンの行DMLに対して削除を適切に解決できます。
行の元の挿入は、そのデフォルト値から現在のタイムスタンプを受信します。この行を削除すると、この行が挿入されたときのバージョン番号と時刻が削除時にツームストン表に挿入されます。新しい挿入の場合、デフォルトでは、バージョン番号が現在のタイムスタンプを再度受信するため、ツームストン表の現在の削除エントリとの誤った競合が回避されます。
例
サイト1とサイト2のデータベース間でグローバルに一貫性のある表tab1があるとします。この表には(主)キーが含まれます。ACDRは、キー・バージョン(kv
)およびタイムスタンプ(ts
)を実表(非表示)およびツームストン表の列として自動的に維持します。キー・バージョンがkv
、タイムスタンプがts
の場合
データベース1: insert tab1 key1 kv1 ts1
データベース2: delete tab1 key1 kv1 ts1
DELETE TOMBSTONE表への挿入key1 kv1 ts1
データベース1: insert tab1 key1 kv2 ts2
キー・バージョンを使用しない場合は、挿入が無視され、削除タイムスタンプはそれよりも前になります。キー・バージョンが使用されているため、kv2
は削除された行のバージョンでないことがわかり、挿入が成功します。