設定 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 中正確識別不合格的物件名稱。