14 自動競合検出および解決
Oracle GoldenGateを構成して、異なるサイトで同時に同じデータが更新されるときに発生する競合を自動的に検出して解決できます。
内容は次のとおりです。
- 自動競合検出および解決について
- 自動競合検出および解決の構成
DBMS_GOLDENGATE_ADM
パッケージを使用して、Oracle DatabaseでOracle GoldenGate自動競合検出および解決を構成できます。 - 自動競合検出および解決の管理
DBMS_GOLDENGATE_ADM
パッケージを使用して、Oracle DatabaseでOracle GoldenGate自動競合検出および解決を管理できます。 - 自動競合検出および解決のモニタリング
データ・ディクショナリ・ビューを問い合せて、Oracle DatabaseでOracle GoldenGate自動競合検出および解決をモニターできます。
自動競合検出および解決について
Oracle GoldenGateによってOracle Database間の変更をレプリケートする場合、これらのデータベースで、Oracle GoldenGate自動競合検出および解決を構成して管理できます。そのためには、ソース・データベースとターゲット・データベースでPL/SQLコールが実行されたことを確認する必要があります。この機能は双方向レプリケーションで使用することを想定しています。
ノート:
この章では、Oracle GoldenGate 12c (12.3.0.1)およびOracle Database 12cリリース2 (12.2)以降に固有の自動競合検出および解決機能について取り上げています。これはOracle Databaseで構成します。また、競合検出および解決のための一般的なOracle GoldenGate機能もあり、これはOracle GoldenGate競合検出および解決(CDR)と呼ばれます。Oracle GoldenGate CDRはReplicatパラメータ・ファイルで構成します。
1つの表に対して構成できるのは、次のタイプの自動競合検出および解決のうち1つのみです。
-
Oracle Database 12cリリース2 (12.2)固有の自動競合検出および解決機能
-
Oracle GoldenGate CDR
- 自動競合検出および解決
- 自動競合検出および解決の要件
自動競合検出および解決の要件(ACDR)を学習します。 - 最新タイムスタンプの競合検出および解決
- デルタ競合検出および解決
- 列グループ
親トピック: 自動競合検出および解決
自動競合検出および解決
Oracle Database間で表をレプリケートするOracle GoldenGate構成によって、自動競合検出および解決を構成できます。表に対して競合検出および解決を構成するには、DBMS_GOLDENGATE_ADM
パッケージのADD_AUTO_CDR
プロシージャをコールします。
Oracle GoldenGateが、Oracle Databaseが発生元である変更を取得するときに、各変更が行の論理変更レコード(LCR)にカプセル化されます。行LCRはDML行変更の構造化表現です。それぞれの行LCRに操作タイプ、古い列値および新しい列値が含まれます。複数の行LCRを単一のデータベース・トランザクションに含めることができます。
表の複数のレプリカで、表に対する変更が許可される場合に、異なる2つのデータベースの同じ行にほぼ同時に変更が加えられると、競合が発生することがあります。Oracle GoldenGateは行のLCRを使用して変更をレプリケートします。競合を検出するために、発生元データベースでの初期変更の行LCRに含まれる古い値を、宛先データベースの対応する表の行の現在の値(キー列で識別される)と比較します。一致しない列値がある場合は、競合が存在します。
競合を検出すると、Oracle GoldenGateは競合を解決するために、行の値を行LCRに含まれる値で上書きするか、行LCRの値を無視するか、デルタを計算して行の値を更新します。
次に示す理由で、自動競合検出および解決のためにアプリケーションを変更する必要はありません。
-
Oracle Databaseによって非表示のタイムスタンプ列が自動的に作成されて保持されます。
-
挿入、更新および削除では、削除ツームストン・ログ表が使用されて行が削除されたか判断されます。
-
LOB列の競合を検出できます。
-
Oracle Databaseによって必要な列に対するサプリメンタル・ロギングが自動的に構成されます。
ノート:
自動変更検出および解決が有効になっている表でクラシックReplicatを使用する場合、Extractは「OGG-10461 Failed to retrieve timestamp error」で異常終了することがあります。これは、レコードをツームストン表に挿入する内部トリガーがユーザーDMLでのみ起動するためです。クラシックReplicatはすべてのトリガーの起動を抑制するため、ツームストン表への挿入がなくなります。
関連項目:
-
『Oracle Databaseユーティリティ』(サプリメンタル・ロギングの詳細について)
親トピック: 自動競合検出および解決について
自動競合検出および解決の要件
自動競合検出および解決の要件(ACDR)を学習します。
サプリメンタル・ロギングは、競合を検出して解決するために必要な情報をそれぞれの行LCRに確実に含めるために必要です。サプリメンタル・ロギングは、表に対してDML操作が実行されたときに、表の行に関するREDOログに追加情報を配置します。Oracle GoldenGate競合検出および解決のために表を構成するときに、表のすべての列に対してサプリメンタル・ロギングが自動的に構成されます。REDOログの追加情報は、表の変更がレプリケートされるときにLCRに配置されます。
Oracle 12.2では、表にはNOT NULL制約を持つ主キーが必要です。この表に一意キーを含めることはできません。Oracle 18.1以上では、表にはNOT NULL制約を持つ主キーまたはNOT NULL制約を持つ一意キーが必要です。サプリメンタル・ロギングも必須です。
統合Extractをキャプチャに使用する必要があります
統合Replicatまたは統合モードの並列Replicatを、適用側で使用する必要があります
LOGALLSUPCOLS
はデフォルトのままにしてください
ReplicatはパラメータMAPINVISIBLECOLUMNS
を追加する必要があります
親トピック: 自動競合検出および解決について
最新タイムスタンプの競合検出および解決
DBMS_GOLDENGATE_ADM
パッケージのADD_AUTO_CDR
プロシージャを実行して、Oracle GoldenGate自動競合検出および解決のために表を構成すると、非表示のタイムスタンプ列が表に追加されます。この非表示のタイムスタンプ列によって行変更の時間が記録され、この情報を使用して競合が検出されて解決されます。
行LCRを適用すると、INSERT
、UPDATE
またはDELETE
操作で競合が発生する可能性があります。次の表では、それぞれの競合のタイプと、その解決方法について説明します。
操作 | 競合検出 | 競合解決 |
---|---|---|
|
競合が検出されるのは、表のキー列の値が行LCRの新しい値と同じ場合です。 |
行LCRのタイムスタンプが表の行のタイムスタンプより遅い場合は、行LCRの値で表の値が置き換えられます。 行LCRのタイムスタンプが表の行のタイムスタンプより早い場合は、行LCRが破棄され、表の値が保持されます。 |
|
次のそれぞれの場合に競合が検出されます。
|
値が一致せず、行LCRのタイムスタンプが表の行のタイムスタンプより遅い場合は、行LCRの値で表の値が置き換えられます。 値が一致せず、行LCRのタイムスタンプが表の行のタイムスタンプより早い場合は、行LCRが破棄され、表の値が保持されます。 表の行が存在せず、行LCRのタイムスタンプがツームストン表の行のタイムスタンプより遅い場合は、行LCRが 表の行が存在せず、行LCRのタイムスタンプがツームストン表の行のタイムスタンプより早い場合は、行LCRが破棄されます。 表の行が存在せず、対応する行がツームストン表に存在しない場合は、行LCRが |
|
次のそれぞれの場合に競合が検出されます。
|
行LCRのタイムスタンプが表のタイムスタンプより遅い場合は、行が表から削除されます。 行LCRのタイムスタンプが表のタイムスタンプより早い場合は、行LCRが破棄され、表の値が保持されます。 削除が成功した場合は、行LCRがツームストン表に挿入されてログに記録されます。 表の行が存在しない場合は、行LCRがツームストン表に挿入されてログに記録されます。 |
親トピック: 自動競合検出および解決について
デルタ競合検出および解決
デルタ競合検出では、行LCRの古い列リストの値が表の対応する行の値と異なる場合に、競合が発生します。
表に対してデルタ競合検出および解決を構成するには、DBMS_GOLDENGATE_ADM
パッケージのADD_AUTO_CDR_DELTA_RES
プロシージャを実行します。デルタ解決方法は、タイムスタンプまたは追加の解決の列には依存しません。デルタ競合解決では、競合を解決するために、行LCRの新しい値と古い値の差が表の値に加算されます。この解決方法は一般に、勘定科目残高などの財務データに使用されます。たとえば、銀行残高が2つのサイトで同時に更新される場合、すべての借方および貸方で収束値が計上されます。
この例は、データベースAおよびデータベースBでレプリケートされている行を示しています。Balance
列は、デルタ競合解決の実行対象として指定された列、TS1
列は非表示のタイムスタンプ列で、Balance
列に対する各変更の時刻を追跡します。両方のデータベースで、行の Balance
値にほぼ同時に変更が加えられます(データベースAでは@T20
、データベースBでは@T22
)。これらの変更により競合が発生するため、デルタ競合解決を使用して次のように競合を解決します。
-
データベースAで、
Balance
値が100
から110
に変更されました。したがって、値が10だけ増加しました。 -
データベースBで、
Balance
値が100
から120
に変更されました。したがって、値が20だけ増加しました。 -
データベースAで競合を解決するために、行LCRの新しい値と古い値の差が表の値に加算されます。LCRの新しい値と古い値の差は20です(120–100=20)。したがって、表の現在の値(110)が20だけ増加して、競合解決後の値は130になります。
-
データベースBで競合を解決するために、行LCRの新しい値と古い値の差が表の値に加算されます。LCRの新しい値と古い値の差は10です(110–100=10)。したがって、表の現在の値(120)が10だけ増加して、競合解決後の値は130になります。
デルタ競合解決後は、データベースAとデータベースBの行で、Balance
列の値が同一になります。
親トピック: 自動競合検出および解決について
列グループ
列グループは、レプリケートされた表の1つ以上の列の論理グループ化です。列グループを追加すると、表の他の列とは別個に、列グループの列に対して競合検出および解決が実行されます。
ADD_AUTO_CDR
プロシージャを使用して、Oracle GoldenGate競合検出および解決のために表を構成するときに、表のすべてのスカラー列がデフォルト列グループに追加されます。表のその他の列グループを定義するには、ADD_AUTO_CDR_COLUMN_GROUP
プロシージャを実行します。ユーザー定義の列グループに属さない表の列は、表のデフォルト列グループに残ります。
列グループを使用すると、異なるデータベースで同じ行の異なる列をほぼ同時に更新しても、競合が発生しません。表の列グループが構成されている場合、異なるデータベースで表の同じ列を更新する場合でも競合を回避できます。更新により、異なる列グループの列値が変更された場合、競合は検出されません。
この例は、データベースAおよびデータベースBでレプリケートされている行を示しています。各データベースのレプリケートされた表には、次の2つの列グループが構成されています。
-
1つの列グループには
Office
列が含まれます。この列グループの非表示のタイムスタンプ列はTS1
です。 -
もう1つの列グループには
Title
およびSalary
列が含まれます。この列グループの非表示のタイムスタンプ列はTS2
です。
これらの列グループを使用すると、データベースAおよびデータベースBで同じ行をほぼ同時に更新しても競合は発生しません。具体的には次のように変更されます。
-
データベースAで、
Office
の値が1080
から1030
に変更されました。 -
データベースBで、
Title
の値がMTS1
からMTS2
に変更されました。
Office
列とTitle
列は異なる列グループに属するため、変更をレプリケートしても競合は検出されません。その結果、それぞれの変更がレプリケートされた後は、行の値が両方のデータベースで同じになります。
ピース単位のLOB更新
LOB WRITE
、LOB ERASE
およびLOB TRIM
からなるLOB操作のセットは、ピース単位のLOB更新です。LOB列を含む表に対して競合検出および解決が構成されている場合、各LOB列は独自の列グループに配置され、列グループは独自の非表示のタイムスタンプを持ちます。タイムスタンプ列は、最初のピース単位のLOB操作時に更新されます。
LOB列の場合、次のように競合が検出されて解決されます。
-
LOBの列グループのタイムスタンプが、行の対応するLOB列グループより遅い場合、ピース単位のLOB更新が適用されます。
-
LOBの列グループのタイムスタンプが、行の対応するLOB列グループより早い場合、表の行のLOBが保持されます。
-
表に行が存在しない場合はエラーが発生します
親トピック: 自動競合検出および解決について
自動競合検出および解決の構成
DBMS_GOLDENGATE_ADM
パッケージを使用して、Oracle DatabaseでOracle GoldenGate自動競合検出および解決を構成できます。
Replicatパラメータ・ファイルにMAP
文を追加し、レプリケートする表およびMAPINVISIBLECOLUMNS
パラメータを含める必要があります。
- 最新タイムスタンプの競合検出および解決の構成
DBMS_GOLDENGATE_ADM
パッケージのADD_AUTO_CDR
プロシージャを使用して、最新タイムスタンプの競合検出および解決を構成します。ADD_AUTO_CDR_COLUMN_GROUP
プロシージャでオプションの列グループを追加します。 - デルタ競合検出および解決の構成
DBMS_GOLDENGATE_ADM
パッケージのADD_AUTO_CDR_DELTA_RES
プロシージャを使用して、デルタ競合検出および解決を構成します。
親トピック: 自動競合検出および解決
最新タイムスタンプの競合検出および解決の構成
DBMS_GOLDENGATE_ADM
パッケージのADD_AUTO_CDR
プロシージャを使用して、最新タイムスタンプの競合検出および解決を構成します。ADD_AUTO_CDR_COLUMN_GROUP
プロシージャでオプションの列グループを追加します。
ADD_AUTO_CDR
プロシージャを実行すると、指定した表の各行に非表示のタイムスタンプ列が追加され、タイムスタンプの競合検出および解決が構成されます。ADD_AUTO_CDR_COLUMN_GROUP
プロシージャを使用して1つ以上の列グループを追加すると、列グループにタイムスタンプが追加され、列グループに対してタイムスタンプの競合検出および解決が構成されます。
DBMS_GOLDENGATE_ADM
パッケージのGRANT_ADMIN_PRIVILEGE
プロシージャを使用して、Oracle GoldenGate管理者を構成できます。
- Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
ADD_AUTO_CDR
プロシージャを実行して表を指定し、最新のタイムスタンプの競合検出および解決を構成します。- オプション:
ALTER_AUTO_CDR_COLUMN_GROUP
プロシージャを実行して、表に1つ以上の列グループを指定します。 - 表をレプリケートする各Oracle Databaseに対して前述のステップを繰り返します。
例14-1 表に対する最新タイムスタンプの競合検出および解決の構成
この例では、hr.employees
表に対して、最新タイムスタンプの競合検出および解決を構成します。
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
schema_name => 'hr',
table_name => 'employees');
END;
/
例14-2 列グループの構成
この例では、hr.employees
表に対するタイムスタンプの競合解決のために、次の列グループを構成します。
-
job_identifier_cg
列グループには、job_id
、department_id
およびmanager_id
列が含まれます。 -
compensation_cg
列グループには、salary
およびcommission_pct
列が含まれます。
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_COLUMN_GROUP(
schema_name => 'hr',
table_name => 'employees',
column_list => 'job_id,department_id,manager_id',
column_group_name => 'job_identifier_cg');
END;
/
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_COLUMN_GROUP(
schema_name => 'hr',
table_name => 'employees',
column_list => 'salary,commission_pct',
column_group_name => 'compensation_cg');
END;
/
親トピック: 自動競合検出および解決の構成
デルタ競合検出および解決の構成
DBMS_GOLDENGATE_ADM
パッケージのADD_AUTO_CDR_DELTA_RES
プロシージャを使用して、デルタ競合検出および解決を構成します。
DBMS_GOLDENGATE_ADM
パッケージのGRANT_ADMIN_PRIVILEGE
プロシージャを使用して、Oracle GoldenGate管理者を構成できます。
- Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
ADD_AUTO_CDR
プロシージャを実行して表を指定し、最新のタイムスタンプの競合検出および解決を構成します。ADD_AUTO_CDR_DELTA_RES
プロシージャを実行して、デルタ競合検出および解決の実行対象の列を指定します。- 表をレプリケートする各Oracle Databaseに対して前述のステップを繰り返します。
例14-3 表に対するデルタ競合検出および解決の構成
この例では、oe.orders
表のorder_total
列に対して、デルタ競合検出および解決を構成します。
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
schema_name => 'oe',
table_name => 'orders');
END;
/
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_DELTA_RES(
schema_name => 'oe',
table_name => 'orders',
column_name => 'order_total');
END;
/
親トピック: 自動競合検出および解決の構成
自動競合検出および解決の管理
DBMS_GOLDENGATE_ADM
パッケージを使用して、Oracle DatabaseでOracle GoldenGate自動競合検出および解決を管理できます。
表に対する競合検出および解決の変更
DBMS_GOLDENGATE_ADM
パッケージのALTER_AUTO_CDR
プロシージャを使用して、表に対する競合検出および解決を変更します。
- Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
ALTER_AUTO_CDR
プロシージャを実行して表を指定し、最新のタイムスタンプの競合検出および解決を構成します。- 表をレプリケートする各Oracle Databaseに対して前述のすべてのステップを繰り返します。
例14-4 表に対する競合検出および解決の変更
この例では、hr.employees
表の競合検出および解決を変更して、ツームストン表で削除の競合を追跡するよう指定しています。
BEGIN
DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR(
schema_name => 'hr',
table_name => 'employees',
tombstone_deletes => TRUE);
END;
/
親トピック: 自動競合検出および解決の管理
列グループの変更
ALTER_AUTO_CDR_COLUMN_GROUP
プロシージャにより列グループを変更します。
- Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
ALTER_AUTO_CDR_COLUMN_GROUP
プロシージャを実行して、表に1つ以上の列グループを指定します。- 表をレプリケートする各Oracle Databaseに対して前述のすべてのステップを繰り返します。
例14-5 列グループの変更
この例では、hr.employees
表のjob_identifier_cg
列グループからmanager_id
列を削除します。
BEGIN
DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR_COLUMN_GROUP(
schema_name => 'hr',
table_name => 'employees',
column_group_name => 'job_identifier_cg',
remove_column_list => 'manager_id');
END;
/
ノート:
複数の列がある場合はコンマ区切りリスト使用してください。親トピック: 自動競合検出および解決の管理
ツームストン行のパージ
PURGE_TOMBSTONES
プロシージャにより、指定の日時より前に記録されたツームストン行を削除します。このプロシージャは、データベースの競合解決が構成されているすべての表のツームストン行を削除します。
- Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
PURGE_TOMBSTONES
プロシージャを実行して日時を指定します。
例14-6 ツームストン行のパージ
この例では、2015年12月1日の午後3:00時(東部標準時間)より前に記録されたすべてのツームストン行をパージします。TIMESTAMP WITH TIME ZONE
形式でタイムスタンプを入力する必要があります。
EXEC DBMS_GOLDENGATE_ADM.PURGE_TOMBSTONES('2015-12-01 15:00:00.000000 EST');
親トピック: 自動競合検出および解決の管理
競合検出および解決の表からの削除
DBMS_GOLDENGATE_ADM
パッケージのREMOVE_AUTO_CDR
プロシージャを使用して、自動競合検出および解決を表から削除します。このプロシージャは、表に対して構成された列グループ、およびデルタ競合検出および解決も削除します。
- Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
REMOVE_AUTO_CDR
プロシージャを実行して表を指定します。- 表をレプリケートする各Oracle Databaseに対して前述のすべてのステップを繰り返します。
例14-7 表の競合検出および解決の削除
この例では、hr.employees
表の競合検出および解決を削除します。
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR(
schema_name => 'hr',
table_name => 'employees');
END;
/
親トピック: 自動競合検出および解決の管理
列グループの削除
REMOVE_AUTO_CDR_COLUMN_GROUP
プロシージャにより列グループを削除します。
- Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
REMOVE_AUTO_CDR_COLUMN_GROUP
プロシージャを列グループの名前を指定して実行します。- 表をレプリケートする各Oracle Databaseに対して前述のすべてのステップを繰り返します。
例14-8 列グループの削除
この例では、hr.employees
表からcompensation_cg
列グループを削除します。
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_COLUMN_GROUP(
schema_name => 'hr',
table_name => 'employees',
column_group_name => 'compensation_cg');
END;
/
親トピック: 自動競合検出および解決の管理
デルタ競合検出および解決の削除
DBMS_GOLDENGATE_ADM
パッケージのREMOVE_AUTO_CDR_DELTA_RES
プロシージャを使用して、列に対するデルタ競合検出および解決を削除します。
- Oracle GoldenGate管理者としてインバウンド・サーバー・データベースに接続します。
REMOVE_AUTO_CDR_DELTA_RES
プロシージャを実行して列を指定します。- 表をレプリケートする各Oracle Databaseに対して前述のすべてのステップを繰り返します。
例14-9 表のデルタ競合検出および解決の削除
この例では、oe.orders
表のorder_total
列のデルタ競合検出および解決を削除します。
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_DELTA_RES(
schema_name => 'oe',
table_name => 'orders',
column_name => 'order_total');
END;
/
親トピック: 自動競合検出および解決の管理
自動競合検出および解決のモニタリング
データ・ディクショナリ・ビューを問い合せて、Oracle DatabaseでOracle GoldenGate自動競合検出および解決をモニターできます。
競合のために構成された表に関する情報の表示
ALL_GG_AUTO_CDR_TABLES
ビューには、Oracle GoldenGate自動競合検出および解決のために構成された表に関する情報が表示されます。
- データベースに接続
ALL_GG_AUTO_CDR_TABLES
ビューを問い合せます。
例14-10 競合検出および解決のために構成された表に関する情報の表示
この問合せによって、競合検出および解決のために構成された表について次のような情報が表示されます。
-
各表の所有者
-
各表の名前
-
更新/削除競合により削除された行を格納するツームストン表(表に対してツームストン表が構成されている場合)
-
各表の競合解決に使用される非表示のタイムスタンプ列
COLUMN TABLE_OWNER FORMAT A15
COLUMN TABLE_NAME FORMAT A15
COLUMN TOMBSTONE_TABLE FORMAT A15
COLUMN ROW_RESOLUTION_COLUMN FORMAT A25
SELECT TABLE_OWNER,
TABLE_NAME,
TOMBSTONE_TABLE,
ROW_RESOLUTION_COLUMN
FROM ALL_GG_AUTO_CDR_TABLES
ORDER BY TABLE_OWNER, TABLE_NAME;
出力結果は次のようになります。
TABLE_OWNER TABLE_NAME TOMBSTONE_TABLE ROW_RESOLUTION_COLUMN
--------------- --------------- --------------- -------------------------
HR EMPLOYEES DT$_EMPLOYEES CDRTS$ROW
OE ORDERS DT$_ORDERS CDRTS$ROW
親トピック: 自動競合検出および解決のモニタリング
競合解決列に関する情報の表示
ALL_GG_AUTO_CDR_COLUMNS
ビューには、Oracle GoldenGate自動競合検出および解決のために構成された列に関する情報が表示されます。
- Oracle GoldenGate管理者としてデータベースに接続します。
ALL_GG_AUTO_CDR_COLUMNS
ビューを問い合せます。
例14-11 列グループに関する情報の表示
この問合せによって、競合検出および解決のために構成された表について次のような情報が表示されます。
-
各表の所有者
-
各表の名前
-
列グループの名前(列が列グループに属する場合)
-
列名。
-
列に関する非表示のタイムスタンプ列(列に対して最新のタイムスタンプの競合解決が構成されている場合)
COLUMN TABLE_OWNER FORMAT A10
COLUMN TABLE_NAME FORMAT A10
COLUMN COLUMN_GROUP_NAME FORMAT A17
COLUMN COLUMN_NAME FORMAT A15
COLUMN RESOLUTION_COLUMN FORMAT A23
SELECT TABLE_OWNER,
TABLE_NAME,
COLUMN_GROUP_NAME,
COLUMN_NAME,
RESOLUTION_COLUMN
FROM ALL_GG_AUTO_CDR_COLUMNS
ORDER BY TABLE_OWNER, TABLE_NAME;
出力結果は次のようになります。
TABLE_OWNE TABLE_NAME COLUMN_GROUP_NAME COLUMN_NAME RESOLUTION_COLUMN
---------- ---------- ----------------- --------------- -----------------------
HR EMPLOYEES COMPENSATION_CG COMMISSION_PCT CDRTS$COMPENSATION_CG
HR EMPLOYEES COMPENSATION_CG SALARY CDRTS$COMPENSATION_CG
HR EMPLOYEES JOB_IDENTIFIER_CG MANAGER_ID CDRTS$JOB_IDENTIFIER_CG
HR EMPLOYEES JOB_IDENTIFIER_CG JOB_ID CDRTS$JOB_IDENTIFIER_CG
HR EMPLOYEES JOB_IDENTIFIER_CG DEPARTMENT_ID CDRTS$JOB_IDENTIFIER_CG
HR EMPLOYEES IMPLICIT_COLUMNS$ PHONE_NUMBER CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ LAST_NAME CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ HIRE_DATE CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ FIRST_NAME CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ EMAIL CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ EMPLOYEE_ID CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_MODE CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_ID CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_DATE CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ CUSTOMER_ID CDRTS$ROW
OE ORDERS DELTA$ ORDER_TOTAL
OE ORDERS IMPLICIT_COLUMNS$ PROMOTION_ID CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_STATUS CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ SALES_REP_ID CDRTS$ROW
この例では、列グループ名としてIMPLICIT_COLUMNS$
を持つ列に対して行の競合検出および解決が構成されていますが、これらの列は列グループには属していません。列グループ名としてDELTA$
を持つ列には、デルタ競合検出および解決が構成されていますが、これらの列は解決列を持ちません。
親トピック: 自動競合検出および解決のモニタリング
列グループに関する情報の表示
ALL_GG_AUTO_CDR_COLUMN_GROUPS
ビューには、Oracle GoldenGate自動競合検出および解決のために構成された列グループに関する情報が表示されます。
DBMS_GOLDENGATE_ADM
パッケージのADD_AUTO_CDR
プロシージャを使用して、Oracle GoldenGate自動競合検出および解決を構成できます。DBMS_GOLDENGATE_ADM
パッケージのADD_AUTO_CDR_COLUMN_GROUP
プロシージャを使用して、列グループを構成できます。
- Oracle GoldenGate管理者としてデータベースに接続します。
ALL_GG_AUTO_CDR_COLUMN_GROUPS
ビューを問い合せます。
例14-12 列グループに関する情報の表示
この問合せによって、競合検出および解決のために構成された表について次のような情報が表示されます。
-
表の所有者。
-
表名。
-
列グループの名前
-
各列グループの競合解決に使用される非表示のタイムスタンプ列
COLUMN TABLE_OWNER FORMAT A15
COLUMN TABLE_NAME FORMAT A15
COLUMN COLUMN_GROUP_NAME FORMAT A20
COLUMN RESOLUTION_COLUMN FORMAT A25
SELECT TABLE_OWNER,
TABLE_NAME,
COLUMN_GROUP_NAME,
RESOLUTION_COLUMN
FROM ALL_GG_AUTO_CDR_COLUMN_GROUPS
ORDER BY TABLE_OWNER, TABLE_NAME;
出力は、次のようになります。
TABLE_OWNER TABLE_NAME COLUMN_GROUP_NAME RESOLUTION_COLUMN
--------------- --------------- -------------------- -------------------------
HR EMPLOYEES COMPENSATION_CG CDRTS$COMPENSATION_CG
HR EMPLOYEES JOB_IDENTIFIER_CG CDRTS$JOB_IDENTIFIER_CG
親トピック: 自動競合検出および解決のモニタリング