DDL構成の前提条件

CREATE TABLE AS SELECT (CTAS)文には、基礎となる任意の数のオブジェクトを参照するSELECT文とINSERT文が含まれます。デフォルトでは、Oracle GoldenGateにより、ターゲット・データベースからAS SELECT句のデータが取得されます。このパラメータを使用して元の挿入を保持するようにCTAS操作を強制できます。

ノート:

このため、CTAS (CREATE TABLE AS SELECT)文から作成されるOracle XMLTypeの表はサポートされません。XMLType表の場合、行オブジェクトIDがソースとターゲットの間で一致する必要がありますが、これは、このシナリオでは保持されません。空のCTAS文(新規表にデータを挿入しない)で作成されたXMLType表は適切に保持されません。

また、CTASによるCTASの挿入への応答を可能にするGETCTASDMLパラメータを使用できるため、レプリケーション中にOIDを保持できます。このパラメータは、統合ディクショナリでのみサポートされるため、トレイルを使用するには、ダウンストリームReplicatが12.1.2.1以上である必要があり、そうでないと、相違が生じる場合があります。

AS SELECT句のオブジェクトがターゲット・データベースに存在し、その名前がソースの名前と同一である必要があります。

MAP文でOracle GoldenGateは、新規の表の名前(CREATE TABLE name)のみTARGET指定にマップします。AS SELECT句の基になるオブジェクトの名前はマップしません。それらのオブジェクトに依存性があり、名前がTARGETの指定に変換されると、データに矛盾が生じる可能性があります。

次に、ソースのCREATE TABLE AS SELECT文の例とそれがOracle GoldenGateによってどのようにレプリケートされるかを示します。

CREATE TABLE a.tab1 AS SELECT * FROM a.tab2;

ReplicatのMAP文は次のとおりです。

MAP a.tab*, TARGET a.x*;

Replicatによって適用されるターゲットのDDL文は次のとおりです。

CREATE TABLE a.xtab1 AS SELECT * FROM a.tab2;

AS SELECT * FROM句の表名は、ソースと同じtab2のまま(xtab2ではなく)です。

ソースとターゲットで、基礎となるオブジェクトのデータの一貫性を保つには、Oracle GoldenGateによるデータ・レプリケーションに備えて構成します。前述の例では、次の文を使用してこの要件に対応できます。

ソース

TABLE a.tab*;

ターゲット

MAPEXCLUDE a.tab2
MAP a.tab*, TARGET a.x*;
MAP a.tab2, TARGET a.tab2;

「DDL内の修飾されていないオブジェクト名の正しい識別」を参照してください。