正確識別 DDL 中不合格的物件名稱

Extract 會擷取執行 DDL 作業時生效的目前綱要 (也稱為階段作業綱要)。如果來源是多雲端用戶容器資料庫,也會擷取目前的容器。

容器與綱要是用來解析 DDL 中不合格的物件名稱。

參考下列範例:

CONNECT ggadmin/PASSWORD
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE EAST.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;

在這兩個 DDL 敘述句中,不合格的表格 TAB1 會根據在 DDL 執行期間有效的目前綱要 SCOTT,解析為 SCOTT.TAB1。

有另一種設定目前綱要的方式,即為階段作業設定 current_schema,如下列範例所示:

CONNECT ggadmin/PASSWORD
ALTER SESSION SET CURRENT_SCHEMA=SRC;
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE HR.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;

在這兩個 DDL 敘述句中,不合格的表格 EMPLOYEES 會根據在 DDL 執行期間有效的目前綱要 HR 解析為 HR.EMPLOYEES。

Extract 會擷取在 DDL 執行期間有效的目前綱要,並使用目前的綱要來解析不合格的物件名稱 (如果有的話)。因此,為 Replicat 指定的 MAP 敘述句可正確運作,讓 DDL 使用不合格的物件名稱。

您也可以將來源階段作業綱要對應至其他目標階段作業綱要 (如果 DDL 需有此綱要才能在目標上成功)。此對應為全域對應,且會置換與相同綱要名稱有關的任何其他對應。若要對應階段作業綱要,請使用 DDLOPTIONS 參數搭配 MAPSESSIONSCHEMA 選項。

如果預設或對應的階段作業綱要對應失敗,您可以使用下列 DDLERROR 參數敘述句來處理錯誤,其中錯誤 1435 表示綱要不存在。

DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION