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 才会异常终止。复制将忽略包含任何其他对象名称的非正常操作。