DDLERROR

有效对象

提取和复制

说明

使用 DDLERROR 参数处理源系统和目标系统上的 DDL 错误。选项可用于提取和复制。

提取的 DDLERROR

使用 DDLERROR 参数的“提取”选项处理无法找到其元数据的提取找到的对象上的错误。

默认值

终止

语法

DDLERROR [RESTARTSKIP <number_of_skips>] [RETRYDELAY <seconds>] [SKIPTRIGGERERROR <number_of_errors>]

RESTARTSKIP <number_of_skips>

导致 Extract 在启动时跳过和忽略特定数目的 DDL 操作,以防止 Extract 异常终止。缺省情况下,DDL 错误会导致 Extract 异常终止,因此不会跳过任何操作。有效值为 1 到 100000。

要将有关跳过的操作的信息写入提取报告文件,请使用带有 REPORT 选项的 DDLOPTIONS 参数。

SKIPTRIGGERERROR <number_of_errors>

(Oracle) 导致 Extract 跳过和忽略在启动时由 DDL 触发器导致的特定数目的 DDL 错误。有效值介于 1 和 100000 之间。

在 RESTARTSKIP 选项之前检查 SKIPTRIGGERERROR。如果提取由于触发器错误而跳过 DDL 操作,则该操作不会计入 RESTARTSKIP 规范。

复制的 DDLERROR

使用 DDLERROR 参数的 "Replicat"(复制)选项可处理将 DDL 应用于目标数据库时发生的错误。使用 DDLERROR 选项,可以以缺省方式处理大多数错误,例如停止处理,还可以以特定方式处理其他错误。可以在同一个参数文件中使用多个 DDLERROR 实例来处理预期的所有错误。

默认值

终止

语法

DDLERROR
{<error> | DEFAULT} {<response>}
{INCLUDE <inclusion_clause> | EXCLUDE <exclusion_clause>}
[IGNOREMISSINGOBJECTS | ABENDONMISSINGOBJECTS]
[RETRYDELAY <seconds>]

{<error> | DEFAULT} {<response>}

<error>

指定要处理的此 DDLERROR 语句的显式 DDL 错误。

DEFAULT

为没有显式 DDLERROR 语句的任何 DDL 错误指定缺省 <response>。

<response>

发生 DDL <error> 时复制执行的操作。可以是以下名称之一:

ABEND

回滚操作并异常终止处理。缺省值为 ABEND。

DISCARD

将违规操作记录到放弃文件,但继续处理后续的 DDL。

IGNORE

忽略该错误。

{INCLUDE <inclusion_clause> | EXCLUDE <exclusion_clause>}

标识包含子句或排除子句的开头,该子句控制 DDLERROR 语句是处理还是不处理特定 DDL。有关语法和用法,请参见 DDL Filtering Options 。

[IGNOREMISSINGOBJECTS ABENDONMISSINGOBJECTS]

控制在目标上无法找到的对象上发出 DML 时提取是否异常终止。当未在复制配置中的 DDL 直接在目标上发出时,或者当源定义与目标定义之间存在差异时,通常会发生此情况。

IGNOREMISSINGOBJECTS

导致 Replicat 跳过对缺失表的 DML 操作。

ABENDONMISSINGOBJECTS

导致复制异常终止对缺失表的 DML 操作。

[RETRYDELAY <seconds>]

指定尝试重试失败操作之间的延迟(秒)。默认值为 10 秒。

示例

示例 1 DDLERROR 基本示例

在以下示例中,DDLERROR 语句会使 Replicat 忽略指定的错误,但不会在 10 秒间隔内再次尝试三次操作之前。Replicat 将错误处理应用于对名称满足 tab*(任何用户、任何操作)通配符的对象(满足 tab1* 的对象除外)执行的 DDL 操作。

DDLERROR 1234 IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 10 &
INCLUDE ALL OBJTYPE TABLE OBJNAME tab* EXCLUDE OBJNAME tab1*

要处理除该错误之外的所有错误,可以添加以下 DDLERROR 语句。

DDLERROR DEFAULT ABEND

在这种情况下,复制会在 DDL 错误上异常终止。

示例 2 使用多个 DDLERROR 语句

在参数文件中列出 DDLERROR 语句的顺序不会影响其有效性,除非多个 DDLERROR 语句指定了相同的错误,而没有任何其他限定符。在这种情况下,Replicat 仅使用列出的前一个。例如,给定以下语句,Replicat 将异常终止错误。

DDLERROR 1234 ABEND
DDLERROR 5678 IGNORE

但是,如果使用正确的限定符,以前的配置将变得更有用。例如:

DDLERROR 1234 ABEND INCLUDE OBJNAME tab*
DDLERROR 5678 IGNORE

在这种情况下,由于存在 INCLUDE 语句,仅当非正常 DDL 语句中的对象名称与通配符 tab* 匹配时,Replicat 才会异常终止。复制将忽略包含任何其他对象名称的非正常操作。