72 DBMS_GOLDENGATE_ADM

DBMS_GOLDENGATE_ADMパッケージには、Oracle GoldenGateの競合検出および解決を構成および管理するためのサブプログラムが含まれています。

この章のトピックは、次のとおりです:

72.1 DBMS_GOLDENGATE_ADMの使用方法

この項では、DBMS_GOLDENGATE_ADMパッケージの使用に関連する項目について説明します。

72.1.1 DBMS_GOLDENGATE_ADMの概要

DBMS_GOLDENGATE_ADMパッケージは、Oracleデータベース間で表をレプリケートするOracle GoldenGate構成で自動競合検出と解決を構成するためのインタフェースを提供します。

表の複数のレプリカによって表を変更できる場合、2つの異なるデータベースの同じ行にほぼ同時に変更が加えられたときに、競合が発生する可能性があります。Oracle GoldenGateは、行の論理変更レコード(LCR)を使用して変更をレプリケートします。行LCRの古い値と、キー列で識別された対応する表の行の現在の値を比較することで、競合を検出します。いずれかの列値が一致しない場合、競合が発生しています。競合の検出後、Oracle GoldenGateは行の値を行LCRの値で上書きし、行LCRの値を無視するか、デルタを計算して行の値を更新することで、競合を解決できます。

Xstreamインバウンド・サーバーおよびアウトバウンド・サーバーは、マルチテナント・コンテナ・データベース(CDB)のXStream構成で使用できます。CDBは、ユーザーが作成した0以上のプラガブル・データベース(PDB)を含むOracle Databaseです。

注意:

XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。

参照:

72.1.2 DBMS_GOLDENGATE_ADMのセキュリティ・モデル

このパッケージのセキュリティは、選択したユーザーまたはロールにこのパッケージのEXECUTE権限を付与するか、選択したユーザーまたはロールにEXECUTE_CATALOG_ROLEを付与することで制御できます。

パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE権限を直接付与する必要があります。ロールを通して付与することはできません。

Oracle GoldenGate管理者は表のレプリケーション環境内の各Oracleデータベースで構成する必要があり、Oracle GoldenGateは各Oracleデータベースで表をレプリケートするように構成する必要があります。Oracle GoldenGate管理者は、DBMS_GOLDENGATE_ADMパッケージのGRANT_ADMIN_PRIVILEGEプロシージャを使用して構成できます。

参照:

Oracle GoldenGateレプリケーションおよびOracle GoldenGate管理者の構成の詳細は、Oracle GoldenGateのドキュメントを参照してください

72.2 DBMS_GOLDENGATE_ADMサブプログラムの要約

表72-1 DBMS_GOLDENGATE_ADMパッケージのサブプログラム

サブプログラム 説明

ADD_AUTO_CDRプロシージャ

表にOracle GoldenGateの自動競合検出および解決を構成します

ADD_AUTO_CDR_COLUMN_GROUPプロシージャ

列グループを追加し、その列グループにOracle GoldenGateの自動競合検出および解決を構成します

ADD_AUTO_CDR_DELTA_RESプロシージャ

列にOracle GoldenGateの自動競合検出およびデルタ解決を構成します

ALTER_AUTO_CDRプロシージャ

表のOracle GoldenGateの自動競合検出および解決を変更します

ALTER_AUTO_CDR_COLUMN_GROUPプロシージャ

Oracle GoldenGateの自動競合検出および解決の列グループを変更します

DELETE_PROCREP_EXCLUSION_OBJプロシージャ

Oracle GoldenGateプロシージャ・レプリケーションの除外リストからデータベース・オブジェクトを削除します

GG_PROCEDURE_REPLICATION_ONファンクション

Oracle GoldenGateプロシージャ・レプリケーションが有効な場合は1を戻し、無効な場合は0を戻します

INSERT_PROCREP_EXCLUSION_OBJプロシージャ

Oracle GoldenGateプロシージャ・レプリケーションの除外リストにデータベース・オブジェクトを挿入します

PURGE_TOMBSTONESプロシージャ

指定されたタイムスタンプの前にツームストン表から削除された行をパージします

REMOVE_AUTO_CDRプロシージャ

表のOracle GoldenGateの自動競合検出および解決を削除します

REMOVE_AUTO_CDR_COLUMN_GROUPプロシージャ

Oracle GoldenGateの自動競合検出および解決が構成された列グループを削除します

REMOVE_AUTO_CDR_DELTA_RESプロシージャ

列のOracle GoldenGateの自動競合検出および解決を削除します

注意:

特に指定がないかぎり、すべてのプロシージャがコミットされます。

72.2.1 ADD_AUTO_CDRプロシージャ

このプロシージャは、表にOracle GoldenGateの自動競合検出および解決を構成します。

このプロシージャによって構成される競合検出および解決は、変更のタイムスタンプに基づきます。このプロシージャはTIMESTAMPタイプの1つ以上の非表示列を表に追加し、各非表示列は表ごとの1,000列の制限に対してカウントされます。

このプロシージャは、非スカラー列を除いて、表内の列をデフォルトの列グループおよび無条件のサプリメンタル・ログ・グループに自動的に配置します。表内の列のサブセットを含む列グループを作成するには、このパッケージのADD_AUTO_CDR_COLUMN_GROUPプロシージャを使用します。

構文

DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
   schema_name             IN VARCHAR2,
   table_name              IN VARCHAR2,
   resolution_granularity  IN VARCHAR2 DEFAULT 'ROW',
   existing_data_timestamp IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
   tombstone_deletes       IN BOOLEAN DEFAULT TRUE,
   fetchcols               IN BOOLEAN DEFAULT TRUE,
   record_conflicts        IN BOOLEAN DEFAULT FALSE,
   use_custom_handlers     IN BINARY_INTEGER DEFAULT 0);

パラメータ

表72-2 ADD_AUTO_CDRプロシージャのパラメータ

パラメータ 説明

schema_name

表のスキーマの名前。

table_name

表の名前。

resolution_granularity

デフォルトのROWは、行に1つの非表示TIMESTAMP列を追加し、各LOB列に1つの非表示TIMESTAMP列を追加します。

COLUMNは、表内の各列に1つの非表示TIMESTAMP列を追加します。

existing_data_timestamp

既存の行に割り当てるタイムスタンプ。

NULLの場合、現在のシステム・タイムスタンプが使用されます。時間が指定されていて、オペレーティング・システムのタイム・ゾーンが有効なOracleタイム・ゾーンでない場合、UTCがデフォルト値として使用されます。

tombstone_deletes

デフォルトのTRUEの場合、ツームストン表で削除された行を追跡します。競合を検出して解決するには削除された行の追跡が必要ですが、削除された行の追跡には追加のデータベース・リソースが必要です。

FALSEの場合、ツームストン表で削除された行を追跡しません。

fetchcols

デフォルトのTRUEの場合、競合検出および解決時にLOBの値をフェッチします。LOBのフェッチは、リソースを消費する操作になる可能性があります。

FALSEの場合、競合検出および解決時にLOBの値をフェッチしません。

record_conflicts

TRUEの場合、DBA_APPLY_ERRORおよびDBA_APPLY_ERROR_MESSAGESビューの競合を記録します。

デフォルトのFALSEの場合、競合を記録しません。

use_custom_handlers

デフォルトの0は、自動競合ハンドラが使用されることを示します。

1は、自動競合ハンドラが使用されず、DBMS_APPLY_ADMパッケージのSET_DML_HANDLERプロシージャを使用してカスタム・エラー・ハンドラを指定する必要があることを示します。

72.2.2 ADD_AUTO_CDR_COLUMN_GROUPプロシージャ

このプロシージャは、Oracle GoldenGateの自動競合検出および解決が構成された表に列グループを追加します。

タイムスタンプ競合検出および解決が構成された表に対して、このプロシージャは指定された表内の列のサブセットを含む列グループを追加します。列グループに含まれない表内の列は、その表のデフォルトの列グループに残ります。

列グループを表に追加すると、表内の他の列とは別個に、その列グループの列に対して競合検出および解決が実行されます。列グループを使用することで、競合を発生させることなく、異なるデータベースで同じ行の異なる列をほぼ同時に更新できます。

たとえば、従業員情報を含むレプリケートされた表には、給与列および賞与列のほかに、従業員を識別するその他の行や従業員オフィス番号の場所列も含まれる可能性があります。会社のある部門がデータベースを更新して従業員の給与を変更し、他の部門がデータベースを更新して従業員の場所を変更するとします。列グループに給与列と賞与列が含まれる場合、競合を解決する必要なしに、これらの変更を各データベースのレプリケートされた表に適用できます。

このプロシージャは、非スカラー列を除いて、列グループの列を無条件のサプリメンタル・ログ・グループに自動的に配置します。

表に対してこのプロシージャを実行する前に、resolution_granularityパラメータにROWを指定して、表でDBMS_GOLDENGATE_ADM.ADD_AUTO_CDRプロシージャを実行する必要があります。

構文

DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_COLUMN_GROUP(
   schema_name             IN VARCHAR2,
   table_name              IN VARCHAR2,
   column_list             IN VARCHAR2,
   column_group_name       IN VARCHAR2 DEFAULT NULL,
   existing_data_timestamp IN TIMESTAMP WITH TIME ZONE DEFAULT NULL);

パラメータ

表72-3 ADD_AUTO_CDR_COLUMN_GROUPプロシージャのパラメータ

パラメータ 説明

schema_name

表のスキーマの名前。

table_name

表の名前。

column_list

競合検出および解決が構成された列のグループ。

カンマ区切りリストで列を指定します。

同じ列を複数の列グループに含めることはできません。また、同じ列を1つの列グループに含めて、デルタ解決で指定することはできません。

column_group_name

列グループの名前。

NULLの場合、列グループ名はシステムで生成されます。

existing_data_timestamp

既存の表データに対して追加されたTIMESTAMP列の時間値。

72.2.3 ADD_AUTO_CDR_DELTA_RESプロシージャ

このプロシージャは、列にOracle GoldenGateの自動競合検出およびデルタ解決を構成します。

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

このプロシージャは、列を無条件のサプリメンタル・ログ・グループに自動的に配置します。

表に対してこのプロシージャを実行する前に、resolution_granularityパラメータにROWを指定して、表でDBMS_GOLDENGATE_ADM.ADD_AUTO_CDRプロシージャを実行する必要があります。

構文

DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_DELTA_RES(
   schema_name IN VARCHAR2,
   table_name  IN VARCHAR2,
   column_name IN VARCHAR2);

パラメータ

表72-4 ADD_AUTO_CDR_DELTA_RESプロシージャのパラメータ

パラメータ 説明

schema_name

表のスキーマの名前。

table_name

表の名前。

column_name

列の名前。

指定する列はNUMBERまたはFLOATデータ型の列である必要があります。

同じ列を列グループに含めることはできません。

72.2.4 ALTER_AUTO_CDRプロシージャ

このプロシージャは、表のOracle GoldenGateの自動競合検出および解決を変更します。

構文

DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR(
   schema_name             IN VARCHAR2,
   table_name              IN VARCHAR2,
   tombstone_deletes       IN BOOLEAN DEFAULT NULL,
   fetchcols               IN BOOLEAN DEFAULT NULL,
   record_conflicts        IN BOOLEAN DEFAULT NULL,
   use_custom_handlers     IN BINARY_INTEGER DEFAULT NULL);

パラメータ

表72-5 ALTER_AUTO_CDRプロシージャのパラメータ

パラメータ 説明

schema_name

表のスキーマの名前。

table_name

表の名前。

tombstone_deletes

TRUEの場合、ツームストン表で削除された行を追跡します。競合を検出して解決するには削除された行の追跡が必要ですが、削除された行の追跡には追加のデータベース・リソースが必要です。

FALSEの場合、ツームストン表で削除された行を追跡しません。

NULLの場合、パラメータの現在の設定を保持します。

fetchcols

TRUEの場合、競合検出および解決時に非スカラー列の値をフェッチします。

FALSEの場合、競合検出および解決時に非スカラー列の値をフェッチしません。

NULLの場合、パラメータの現在の設定を保持します。

record_conflicts

TRUEの場合、競合を記録します。

FALSEの場合、競合を記録しません。

NULLの場合、パラメータの現在の設定を保持します。

use_custom_handlers

0は、自動競合ハンドラが使用されることを示します。

1は、自動競合ハンドラが使用されず、DBMS_APPLY_ADMパッケージのSET_DML_HANDLERプロシージャを使用してカスタム・エラー・ハンドラを指定する必要があることを示します。

デフォルトのNULLの場合、パラメータの現在の設定を保持します。

72.2.5 ALTER_AUTO_CDR_COLUMN_GROUPプロシージャ

このプロシージャは、Oracle GoldenGateの自動競合検出および解決の列グループを変更します。

構文

DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR_COLUMN_GROUP(
   schema_name        IN VARCHAR2,
   table_name         IN VARCHAR2,
   column_group_name  IN VARCHAR2,
   add_column_list    IN VARCHAR2,
   remove_column_list IN VARCHAR2);

パラメータ

表72-6 ALTER_AUTO_CDR_COLUMN_GROUPプロシージャのパラメータ

パラメータ 説明

schema_name

表のスキーマの名前。

table_name

表の名前。

column_group_name

列グループの名前。

add_column_list

列グループに追加する列のカンマ区切りリスト。

remove_column_list

列グループから削除する列のカンマ区切りリスト。

72.2.6 DELETE_PROCREP_EXCLUSION_OBJプロシージャ

このプロシージャは、Oracle GoldenGateプロシージャ・レプリケーションの除外リストからデータベース・オブジェクトを削除します。

データベース・オブジェクトがOracle GoldenGateプロシージャ・レプリケーションの除外リストにある場合、サブプログラムが除外されたオブジェクトに対して実行される場合は、パッケージ内のサブプログラムの実行はレプリケートされません。たとえば、hr.employeesDBMS_REDEFINITIONパッケージの除外されたデータベース・オブジェクトである場合、hr.employees表に対するDBMS_REDEFINITION.START_REDEF_TABLEプロシージャの実行はレプリケートされません。

注意:

DELETE_PROCREP_EXCLUSION_OBJプロシージャは、Oracleサポートの指示がある場合にのみ実行します。

構文

DBMS_GOLDENGATE_ADM.DELETE_PROCREP_EXCLUSION_OBJ(
   package_owner     IN VARCHAR2 DEFAULT NULL,
   package_name      IN VARCHAR2 DEFAULT NULL,
   object_owner      IN VARCHAR2 DEFAULT NULL,
   object_name       IN VARCHAR2 DEFAULT NULL);

パラメータ

表72-7 DELETE_PROCREP_EXCLUSION_OBJプロシージャのパラメータ

パラメータ 説明

package_owner

パッケージの所有者。

package_name

パッケージの名前。

object_owner

オブジェクトの所有者。

object_name

オブジェクトの名前。

72.2.7 GG_PROCEDURE_REPLICATION_ONファンクション

このプロシージャは、Oracle GoldenGateプロシージャ・レプリケーションが有効な場合は1を戻し、無効な場合は0を戻します。

構文

DBMS_STREAMS.GG_PROCEDURE_REPLICATION_ON
RETURN NUMBER;

72.2.8 INSERT_PROCREP_EXCLUSION_OBJプロシージャ

このプロシージャは、Oracle GoldenGateプロシージャ・レプリケーションの除外リストにデータベース・オブジェクトを挿入します。

データベース・オブジェクトがOracle GoldenGateプロシージャ・レプリケーションの除外リストにある場合、サブプログラムが除外されたオブジェクトに対して実行される場合は、パッケージ内のサブプログラムの実行はレプリケートされません。たとえば、hr.employeesDBMS_REDEFINITIONパッケージの除外されたデータベース・オブジェクトである場合、hr.employees表に対するDBMS_REDEFINITION.START_REDEF_TABLEプロシージャの実行はレプリケートされません。

注意:

INSERT_PROCREP_EXCLUSION_OBJプロシージャは、Oracleサポートの指示がある場合にのみ実行します。

構文

DBMS_GOLDENGATE_ADM.INSERT_PROCREP_EXCLUSION_OBJ(
   package_owner     IN VARCHAR2 DEFAULT NULL,
   package_name      IN VARCHAR2 DEFAULT NULL,
   object_owner      IN VARCHAR2 DEFAULT NULL,
   object_name       IN VARCHAR2 DEFAULT NULL);

パラメータ

表72-8 INSERT_PROCREP_EXCLUSION_OBJプロシージャのパラメータ

パラメータ 説明

package_owner

パッケージの所有者。

package_name

パッケージの名前。

object_owner

オブジェクトの所有者。

object_name

オブジェクトの名前。

72.2.9 PURGE_TOMBSTONESプロシージャ

このプロシージャは、指定されたタイムスタンプの前にツームストン表から削除された行をパージします。

構文

DBMS_GOLDENGATE_ADM.PURGE_TOMBSTONES(
   purge_timestamp IN TIMESTAMP WITH TIME ZONE);

パラメータ

表72-9 PURGE_TOMBSTONESプロシージャのパラメータ

パラメータ 説明

purge_timestamp

レコードがパージされる前のタイムスタンプ。

72.2.10 REMOVE_AUTO_CDRプロシージャ

このプロシージャは、表のOracle GoldenGateの自動競合検出および解決を削除します。

構文

DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR(
   schema_name             IN VARCHAR2,
   table_name              IN VARCHAR2);

パラメータ

表72-10 REMOVE_AUTO_CDRプロシージャのパラメータ

パラメータ 説明

schema_name

表のスキーマの名前。

table_name

表の名前。

72.2.11 REMOVE_AUTO_CDR_COLUMN_GROUPプロシージャ

このプロシージャは、Oracle GoldenGateの自動競合検出および解決が構成された列グループを削除します。

構文

DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_COLUMN_GROUP(
   schema_name             IN VARCHAR2,
   table_name              IN VARCHAR2,
   column_group_name       IN VARCHAR2);

パラメータ

表72-11 REMOVE_AUTO_CDR_COLUMN_GROUPプロシージャのパラメータ

パラメータ 説明

schema_name

表のスキーマの名前。

table_name

表の名前。

column_group_name

列グループの名前。

72.2.12 REMOVE_AUTO_CDR_DELTA_RESプロシージャ

このプロシージャは、列のOracle GoldenGateの自動競合検出および解決を削除します。

構文

DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_DELTA_RES(
   schema_name IN VARCHAR2,
   table_name  IN VARCHAR2,
   column_name IN VARCHAR2);

パラメータ

表72-12 REMOVE_AUTO_CDR_DELTA_RESプロシージャのパラメータ

パラメータ 説明

schema_name

表のスキーマの名前。

table_name

表の名前。

column_name

列の名前。