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内の修飾されていないオブジェクト名の正しい識別」を参照してください。
親トピック: 導出オブジェクトとしての新しい表