13 Oracle GoldenGate自動競合検出および解消

Oracle Databaseでは、Oracle GoldenGateの自動競合検出および解消の構成および管理を実行できます。

13.1 Oracle GoldenGateの概要

Oracle GoldenGateは、Oracleデータベースと他のデータベースの間のレプリケーションのサポートを統合した異機種間レプリケーション・システムです。

Oracle GoldenGateは、REDOログからDMLおよびDDLの変更を取得し、変更をターゲットに適用するためにOracle Databaseに統合されています。Oracle GoldenGateでは、Oracleデータベースまたは異機種のデータベース間で、トランザクション・データの取得、ルーティング、変換および配信がリアルタイムに行われます。

Oracleデータベースで発生した変更をOracle GoldenGateが取得したとき、各変更は行論理変更レコード(LCR)にカプセル化されます。行LCRは、DML行変更の構造化された表現です。それぞれの行LCRには、操作タイプ、古い列値、および新しい列値が含まれます。複数の行LCRが、単一データベース・トランザクションの一部となることができます。

関連項目:

  • 「行LCR」

  • Oracle GoldenGateの詳細は、Oracle GoldenGateのドキュメントを参照してください

13.2 自動競合検出および解消について

Oracle GoldenGateがOracleデータベース間で変更をレプリケートする場合、OracleデータベースでOracle GoldenGate自動競合検出および解消を構成して管理できます。

注意:

このマニュアルの内容は、Oracle Database 12cリリース2 (12.2)以降に固有の自動競合検出および解消機能についてであり、この機能はOracleデータベースに構成されています。また、Oracle GoldenGateバージョン12.3以降が必要です。競合検出および解消のための一般的なOracle GoldenGate機能も存在し、これはOracle GoldenGate競合検出および解消(CDR)と呼ばれています。Oracle GoldenGate CDRは、Replicatパラメータ・ファイルに構成されており、Oracle GoldenGateのドキュメントに記載されています。

次のタイプの自動競合検出および解消のうち1つだけを、単一表に対して構成できます。

  • Oracle Database 12cリリース2 (12.2)に固有の自動競合検出および解消機能

  • Oracle GoldenGate CDR

13.2.1 自動競合検出および解消

Oracleデータベース間で表をレプリケートするOracle GoldenGate構成で自動競合検出および解消を構成できます。表についての競合検出および解消を構成するには、DBMS_GOLDENGATE_ADMパッケージのADD_AUTO_CDRプロシージャをコールします。

自動競合検出および解消では、次の理由によりアプリケーションの変更は必要ありません。

  • Oracle Databaseが非表示のタイムスタンプ列を自動的に作成してメンテナンスします。

  • 挿入、更新および削除では、削除ツームストン・ログ表を使用して、行が削除されたかどうかが判断されます。

  • LOB列の競合を検出できます。

  • Oracle Databaseが必要な列のサプリメンタル・ロギングを自動的に構成します。

競合を検出および解消するために必要な情報を個々の行LCRが持つようにするには、サプリメンタル・ロギングが必要です。サプリメンタル・ロギングによって、表に対してDML操作が実行されたとき、その表の列に関する追加情報がREDOログに記録されます。Oracle GoldenGate競合検出および解消のために表を構成する場合、表のすべての列に対してサプリメンタル・ロギングが自動的に構成されます。

関連項目:

  • サプリメンタル・ロギングの詳細は、Oracle Databaseユーティリティを参照してください。

  • Oracle GoldenGateの詳細は、Oracle GoldenGateのドキュメントを参照してください

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

タイムスタンプの競合検出を使用すると、行論理変更レコード(行LCR)の古い列リスト内のタイムスタンプが、表の対応する行のタイムスタンプと異なる場合に競合が発生します。

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

行LCRが適用されると、INSERTUPDATEまたはDELETE操作で競合が発生することがあります。次の表では、競合のタイプと、最新のタイムスタンプの競合検出および解消を使用して競合を解消する方法について説明します。

表13-1 最新のタイムスタンプの競合検出および解消

操作 競合検出 競合解消

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をログに記録します。

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

関連項目:

「列グループ」

13.2.3 デルタ競合検出および解消

デルタ競合検出を使用すると、行論理変更レコード(行LCR)の古い列リスト内の値が、表にある対応する行の値と異なる場合に競合が発生します。

表についてのデルタ競合検出および解消を構成するには、DBMS_GOLDENGATE_ADMパッケージのADD_AUTO_CDR_DELTA_RESプロシージャを実行します。デルタ解消方法は、タイムスタンプまたは追加の解消列には依存しません。デルタ競合解消では、行LCRの新しい値と古い値との差異を表の値に追加することで、競合を解消します。この解決方法は、一般に勘定残高などの財務データに使用されます。たとえば、2つのサイトで同時に銀行残高が更新された場合、収束された金額はすべての貸方と借方を考慮に入れたものになります。

次の図は、デルタ競合検出および解消の例を示します。

図13-1 デルタ競合検出および解消

図13-1の説明が続きます
「図13-1 デルタ競合検出および解消」の説明

この例では、データベース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になります。

デルタ競合の解消後、Balance列の値はデータベースAとデータベースBの行で同じになります。

13.2.4 列グループ

列グループは、レプリケート表の1つ以上の列を論理的にグループ化したものです。列グループを追加すると、表内の他の列とは別個に、その列グループの列に対して競合検出および解消が実行されます。

ADD_AUTO_CDRプロシージャを使用して、Oracle GoldenGate競合検出および解消のために表を構成すると、表のスカラー列はすべてデフォルトの列グループに追加されます。表の他の列グループを定義するには、ADD_AUTO_CDR_COLUMN_GROUPプロシージャを実行します。ユーザー定義の列グループに含まれない表内の列は、その表のデフォルトの列グループに残ります。

列グループを使用することで、競合を発生させることなく、異なるデータベースで同じ行の異なる列をほぼ同時に更新できます。表に対して列グループが構成されると、異なるデータベースが表内の同じ行を更新した場合でも、競合を回避できます。更新によって、異なる列グループの列の値が変更された場合、競合は検出されません。次の図に、列グループの例を示します。

この例では、データベースAとデータベースBでレプリケートされる行を示しています。各データベースでレプリケートされる表に対して、次の2つの列グループが構成されています。

  • 1つの列グループにはOffice列が含まれています。この列グループの非表示のタイムスタンプ列はTS1です。

  • 別の列グループにはTitleおよびSalary列が含まれています。この列グループの非表示のタイムスタンプ列はTS2です。

これらの列グループによって、データベースAとデータベースBは競合を発生させずにほぼ同じ時刻に同じ行を更新できるようになります。具体的には、次の変更が行われます。

  • データベースAで、Officeの値が1080から1030に変更されました。

  • データベースBで、Titleの値がMTS1からMTS2に変更されました。

Office列とTitle列は別の列グループに含まれているため、競合が検出されずに変更がレプリケートされます。結果として、各変更がレプリケートされた後に、行の値は両方のデータベースで同じになります。

ピース単位のLOBの更新

LOB WRITELOB ERASELOB TRIMからなるLOB操作のセットは、ピース単位のLOB更新です。LOB列を含む表が競合検出および解消のために構成された場合、それぞれのLOB列がそれ独自の列グループに配置され、列グループには独自の非表示のタイムスタンプ列が含まれます。タイムスタンプ列は、最初のピース単位のLOB操作で更新されます。

LOB列の場合は、競合は次の方法で検出および解消されます。

  • LOBの列グループのタイムスタンプが、行の対応するLOB列グループより後の日付の場合、ピース単位のLOB更新が適用されます。

  • LOBの列グループのタイムスタンプが、行の対応するLOB列グループより前の日付の場合、表の行のLOBが保持されます。

  • 行が表に存在しない場合は、エラーが発生します。

13.3 自動競合検出および解消の構成

DBMS_GOLDENGATE_ADMパッケージを使用して、Oracle DatabaseのOracle GoldenGate自動競合検出および解消を構成できます。これはOracle GoldenGateバージョン12.3以上に特に該当します。レプリケートされる表を含むMAP文を除き、Golden Gate ReplicatファイルにCDR構成パラメータを指定する必要はありません。

13.3.1 最新のタイムスタンプの競合検出および解消の構成

DBMS_GOLDENGATE_ADMパッケージのADD_AUTO_CDRプロシージャは、最新のタイムスタンプの競合検出および解消を構成します。ADD_AUTO_CDR_COLUMN_GROUPプロシージャはオプションの列グループを追加します。

最新のタイムスタンプの競合検出および解消を使用すると、行LCRのタイムスタンプ列が対応する表の行のタイムスタンプと一致しない場合に競合が検出されます。行LCRは、そのタイムスタンプが後の場合に適用されます。それ以外の場合、行LCRは破棄され、表の行は変更されません。ADD_AUTO_CDRプロシージャを実行すると、指定した表の行ごとに非表示のタイムスタンプ列が追加され、タイムスタンプの競合検出および解消が構成されます。ADD_AUTO_CDR_COLUMN_GROUPプロシージャを使用して、1つ以上の列グループを追加した場合、列グループのタイムスタンプが追加され、列グループのタイムスタンプの競合検出および解消が構成されます。
Oracle GoldenGate管理者は、DBMS_GOLDENGATE_ADMパッケージのGRANT_ADMIN_PRIVILEGEプロシージャを使用して構成できます。
  1. 各データベースにOracle GoldenGate管理者として接続します。
  2. ADD_AUTO_CDRプロシージャを実行し、最新のタイムスタンプの競合検出および解消を構成する表を指定します。
  3. オプション:ADD_AUTO_CDR_COLUMN_GROUPプロシージャを実行して、表の1つ以上の列グループを指定します。
  4. 表をレプリケートするOracleデータベースごとに前述の手順を繰り返します。

例13-1: 表の最新タイムスタンプの競合検出および解消の構成

この例では、hr.employees表についての最新のタイムスタンプの競合検出および解消を構成します。

BEGIN
  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
    schema_name => 'hr',
    table_name  => 'employees');
END;
/

例13-2 列グループの構成

この例では、hr.employees表におけるタイムスタンプ競合解消のために次の列グループが構成されます。

  • job_identifier_cg列グループにはjob_iddepartment_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;
/

関連項目:

13.3.2 デルタ競合検出および解消の構成

DBMS_GOLDENGATE_ADMパッケージのADD_AUTO_CDR_DELTA_RESプロシージャは、デルタ競合検出および解消を構成します。

デルタ競合解消を使用する場合は、競合の検出および解消を行う1つの列を指定します。行LCRの列の値が表内の対応する値と一致しない場合、競合が検出されます。行LCRの新しい値と古い値との差を表の値に加算することで、競合を解消します。
Oracle GoldenGate管理者は、DBMS_GOLDENGATE_ADMパッケージのGRANT_ADMIN_PRIVILEGEプロシージャを使用して構成できます。
  1. 各データベースにOracle GoldenGate管理者として接続します。
  2. ADD_AUTO_CDRプロシージャを実行し、最新のタイムスタンプの競合検出および解消を構成する表を指定します。
  3. ADD_AUTO_CDR_DELTA_RESプロシージャを実行し、デルタ競合検出および解消が実行される列を指定します。
  4. 表をレプリケートするOracleデータベースごとに前述の手順を繰り返します。

例13-1: 表のデルタ競合検出および解消の構成

この例では、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;
/

関連項目:

13.4 自動競合検出および解消の管理

DBMS_GOLDENGATE_ADMパッケージを使用して、Oracle DatabaseのOracle GoldenGate自動競合検出および解消を管理できます。

13.4.1 表についての競合検出および解消の変更

DBMS_GOLDENGATE_ADMパッケージのALTER_AUTO_CDRプロシージャは、表についての競合検出および解消を変更します。

Oracle GoldenGate自動競合検出および解消が表に対して構成されている必要があります。
  1. 各データベースにOracle GoldenGate管理者として接続します。
  2. ALTER_AUTO_CDRプロシージャを実行し、最新のタイムスタンプの競合検出および解消を構成する表を指定します。
  3. 表をレプリケートする各Oracleデータベースで前の手順をすべて繰り返します。

例13-4 表についての競合検出および解消の変更

この例では、hr.employees表についての競合検出および解消を変更して、削除の競合がツームストン表で追跡されるように指定します。

BEGIN
  DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR(
    schema_name       => 'hr',
    table_name        => 'employees',
    tombstone_deletes => TRUE);
END;
/

関連項目:

13.4.2 列グループの変更

ALTER_AUTO_CDR_COLUMN_GROUPプロシージャは、列グループを変更します。

  1. インバウンド・サーバー・データベースにOracle GoldenGate管理者として接続します。
  2. ALTER_AUTO_CDR_COLUMN_GROUPプロシージャを実行し、表内の1つ以上の列グループを指定します。
  3. 表をレプリケートする各Oracleデータベースで前の手順をすべて繰り返します。

例13-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;
/

注意:

複数の列がある場合、カンマ区切りリストを使用します。

関連項目:

13.4.3 ツームストン行の削除

PURGE_TOMBSTONESプロシージャは、指定された日時より前に記録されたツームストン行を削除します。このプロシージャは、データベース内の競合解消用に構成されたすべての表に対してツームストンの行を削除します。

ツームストン行を定期的に削除して、ツームストン・ログが時間の経過とともに大きくなりすぎないようにすることが必要な場合があります。
  1. 各データベースにOracle GoldenGate管理者として接続します。
  2. PURGE_TOMBSTONESプロシージャを実行し、日付と時刻を指定します。

例13-6 ツームストン行の削除

この例では、東部標準時の2015年12月1日の午後3時より前に記録されたすべてのツームストン行を削除します。タイムスタンプは、TIMESTAMP WITH TIME ZONE書式で入力する必要があります。

EXEC DBMS_GOLDENGATE_ADM.PURGE_TOMBSTONES('2015-12-01 15:00:00.000000 EST');

関連項目:

13.4.4 表からの競合検出および解消の削除

DBMS_GOLDENGATE_ADMパッケージのREMOVE_AUTO_CDRプロシージャは、表から自動競合検出および解消を削除します。また、このプロシージャでは、表用に構成された列グループおよびデルタ競合検出および解消を削除します。

  1. 各データベースにOracle GoldenGate管理者として接続します。
  2. REMOVE_AUTO_CDRプロシージャを実行し、表を指定します。
  3. 表をレプリケートする各Oracleデータベースで前の手順をすべて繰り返します。

例13-7 表についての競合検出および解消の削除

この例では、hr.employees表についての競合検出および解消を削除します。

BEGIN
  DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR(
    schema_name => 'hr',
    table_name  => 'employees');
END;
/

関連項目:

13.4.5 列グループの削除

REMOVE_AUTO_CDR_COLUMN_GROUPプロシージャは、列グループを削除します。

  1. 各データベースにOracle GoldenGate管理者として接続します。
  2. REMOVE_AUTO_CDR_COLUMN_GROUPプロシージャを実行して、列グループの名前を指定します。
  3. 表をレプリケートする各Oracleデータベースで前の手順をすべて繰り返します。

例13-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;
/

関連項目:

13.4.6 デルタ競合検出および解消の削除

DBMS_GOLDENGATE_ADMパッケージのREMOVE_AUTO_CDR_DELTA_RESプロシージャは、列のデルタ競合検出および解消を削除します。

デルタ競合検出および解消は、指定された列に対して構成する必要があります。
  1. インバウンド・サーバー・データベースにOracle GoldenGate管理者として接続します。
  2. REMOVE_AUTO_CDR_DELTA_RESプロシージャを実行し、列を指定します。
  3. 表をレプリケートする各Oracleデータベースで前の手順をすべて繰り返します。

例13-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;
/

関連項目:

13.5 自動競合検出および解消の監視

データ・ディクショナリ・ビューを問い合せることで、OracleデータベースのOracle GoldenGate自動競合検出および解消を監視できます。

13.5.1 競合のために構成された表に関する情報の表示

ALL_GG_AUTO_CDR_TABLESビューには、Oracle GoldenGate自動競合検出および解消のために構成された表に関する情報が表示されます。

  1. データベースに接続します。
  2. ALL_GG_AUTO_CDR_TABLESビューを問い合せます。

例13-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

13.5.2 競合解消列に関する情報の表示

ALL_GG_AUTO_CDR_COLUMNSビューには、Oracle GoldenGate自動競合検出および解消のために構成された列に関する情報が表示されます。

行または列の自動競合検出および解消のために列を構成できます。列グループの最新のタイムスタンプの競合解消用に列を構成できます。さらに、デルタ競合解消用に列を構成できます。
  1. データベースにOracle GoldenGate管理者として接続します。
  2. ALL_GG_AUTO_CDR_COLUMNSビューを問い合せます。

例13-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$に指定されている列は、デルタ競合検出および解消のために構成されており、これらの列には解消列がありません。

13.5.3 列グループに関する情報の表示

ALL_GG_AUTO_CDR_COLUMN_GROUPSビューには、Oracle GoldenGate自動競合検出および解消のために構成された列グループに関する情報が表示されます。

DBMS_GOLDENGATE_ADMパッケージのADD_AUTO_CDRプロシージャを使用して、Oracle GoldenGate自動競合検出および解消を構成できます。DBMS_GOLDENGATE_ADMパッケージのADD_AUTO_CDR_COLUMN_GROUPプロシージャを使用して、列グループを構成できます。
  1. データベースにOracle GoldenGate管理者として接続します。
  2. ALL_GG_AUTO_CDR_COLUMN_GROUPSビューを問い合せます。

例13-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