正确标识 DDL 中的不合格对象名称

提取捕获执行 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。

提取捕获在 DDL 执行期间有效的当前方案,并使用当前方案解析不合格的对象名称(如果有)。因此,为 Replicat 指定了 MAP 语句,可以正确处理具有不合格对象名称的 DDL。

如果 DDL 要在目标上成功,则还可以将源会话方案映射到其他目标会话方案。此映射是全局映射,并覆盖涉及相同方案名称的任何其他映射。要映射会话方案,请使用带有 MAPSESSIONSCHEMA 选项的 DDLOPTIONS 参数。

如果默认或映射的会话方案映射失败,则可以通过以下 DDLERROR 参数语句来处理错误,其中错误 1435 表示方案不存在。

DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION