

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 错误处理任务设置
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.ErrorHandling"></a>

可以使用以下设置来设置复制任务的错误处理行为。有关如何使用任务配置文件来设置任务设置的信息，请参阅[任务设置示例](CHAP_Tasks.CustomizingTasks.TaskSettings.md#CHAP_Tasks.CustomizingTasks.TaskSettings.Example)。
+ `DataErrorPolicy`— 确定在记录级别出现与数据处理相关的错误时， AWS DMS 采取的操作。数据处理错误的一些示例包括转换错误、变换中的错误和不正确的数据。默认值为 `LOG_ERROR`。
  + `IGNORE_RECORD` – 任务继续，并且将忽略该记录的数据。`DataErrorEscalationCount` 属性的错误计数器将递增。因此，如果您为表设置错误数限制，则此错误将计入限制。
  + `LOG_ERROR` – 任务继续，并且错误将写入任务日志。
  + `SUSPEND_TABLE` – 任务继续，但带错误记录的表中的数据将移至错误状态，并且不会复制数据。
  + `STOP_TASK` – 任务停止，并且需要手动干预。
+ `DataTruncationErrorPolicy` – 决定在数据被截断时， AWS DMS 执行的操作。默认值为 `LOG_ERROR`。
  + `IGNORE_RECORD` – 任务继续，并且将忽略该记录的数据。`DataErrorEscalationCount` 属性的错误计数器将递增。因此，如果您为表设置错误数限制，则此错误将计入限制。
  + `LOG_ERROR` – 任务继续，并且错误将写入任务日志。
  + `SUSPEND_TABLE` – 任务继续，但带错误记录的表中的数据将移至错误状态，并且不会复制数据。
  + `STOP_TASK` – 任务停止，并且需要手动干预。
+ `DataErrorEscalationPolicy` – 决定在达到最大错误数（在 `DataErrorEscalationCount` 参数中设置）时， AWS DMS 执行的操作。默认值为 `SUSPEND_TABLE`。
  + `SUSPEND_TABLE` – 任务继续，但带错误记录的表中的数据将移至错误状态，并且不会复制数据。
  + `STOP_TASK` – 任务停止，并且需要手动干预。
+ `DataErrorEscalationCount` – 设置特定记录的数据可出现的错误的最大数目。当达到此数目时，将根据 `DataErrorEscalationPolicy` 中设置的策略来处理包含错误记录的表的数据。默认值是 0。
+ `EventErrorPolicy`— 确定 AWS DMS 在发送与任务相关的事件时发生错误时采取的操作。可能的值包括
  + `IGNORE` – 任务继续，与该事件关联的所有数据都将被忽略。
  + `STOP_TASK` – 任务停止，并且需要手动干预。
+ `TableErrorPolicy` – 决定在处理特定表的数据或元数据时出错的情况下， AWS DMS 执行的操作。此错误仅适用于常规表数据，而不是与特定记录相关的错误。默认值为 `SUSPEND_TABLE`。
  + `SUSPEND_TABLE` – 任务继续，但带错误记录的表中的数据将移至错误状态，并且不会复制数据。
  + `STOP_TASK` – 任务停止，并且需要手动干预。
+ `TableErrorEscalationPolicy` – 决定在达到最大错误数（使用 `TableErrorEscalationCount` 参数设置）时， AWS DMS 执行的操作。默认用户设置为 `STOP_TASK`，其中任务将停止，并且需要手动干预。
+ `TableErrorEscalationCount` – 特定表的常规数据或元数据可出现的错误的最大数目。当达到此数目时，将根据 `TableErrorEscalationPolicy` 中设置的策略处理表的数据。默认值是 0。
+ `RecoverableErrorCount` – 在出现环境错误时，可尝试重新启动任务的最大次数。在系统尝试重新启动任务指定次数时，任务将停止，并且需要手动干预。默认值为 -1。

  当您将此值设置为 -1 时，DMS 尝试的重试次数会根据返回的错误类型而有所不同，如下所示：
  + **运行状态，可恢复的错误**：如果出现可恢复的错误，例如连接中断或目标应用失败，DMS 将重试任务九次。
  + **启动状态，可恢复的错误**：DMS 重试任务六次。
  + **运行状态，DMS 处理的致命错误**：DMS 重试任务六次。
  + **运行状态，DMS 处理的致命错误**：DMS 不重试任务。
  + **除上述以外**：无限期 AWS DMS 重试任务。

  将此值设置为 0 将从不尝试重新启动任务。

  建议您设置 `RecoverableErrorCount` 和 `RecoverableErrorInterval` 值时应确保在足够的时间间隔内有足够的重试次数，以便 DMS 任务能够正常恢复。如果发生致命错误，则在大多数情况下，DMS 会停止尝试重新启动。
+ `RecoverableErrorInterval`— AWS DMS 在两次尝试重启任务之间等待的秒数。默认值是 5。
+ `RecoverableErrorThrottling` – 启用后，尝试重启任务的间隔将根据 `RecoverableErrorInterval` 的值连续增加。例如，如果 `RecoverableErrorInterval` 设置为 5 秒，则下一次重试将在 10 秒后进行，然后是 20 秒，然后是 40 秒，依此类推。默认值为 `true`。
+ `RecoverableErrorThrottlingMax`— 如果`RecoverableErrorThrottling`启用， AWS DMS 在尝试重启任务之间等待的最大秒数。默认值是 1800。
+ `RecoverableErrorStopRetryAfterThrottlingMax`— 默认值设置为`true`，达到两次恢复尝试之间 AWS DMS 等待的最大秒数后，DMS 将停止恢复任务。`RecoverableErrorStopRetryAfterThrottlingMax`如果设置为`false`，则在达到恢复尝试之间 AWS DMS 等待的最大秒数后，DMS 会继续恢复任务，`RecoverableErrorStopRetryAfterThrottlingMax`直到达到为止`RecoverableErrorCount`。
+ `ApplyErrorDeletePolicy` – 决定在与 DELETE 操作发生冲突时， AWS DMS 执行的操作。默认值为 `IGNORE_RECORD`。可能的值包括：
  + `IGNORE_RECORD` – 任务继续，并且将忽略该记录的数据。`ApplyErrorEscalationCount` 属性的错误计数器将递增。因此，如果您为表设置错误数限制，则此错误将计入限制。
  + `LOG_ERROR` – 任务继续，并且错误将写入任务日志。
  + `SUSPEND_TABLE` – 任务继续，但带错误记录的表中的数据将移至错误状态，并且不会复制数据。
  + `STOP_TASK` – 任务停止，并且需要手动干预。
+ `ApplyErrorInsertPolicy` – 决定在与 INSERT 操作发生冲突时， AWS DMS 执行的操作。默认值为 `LOG_ERROR`。可能的值包括：
  + `IGNORE_RECORD` – 任务继续，并且将忽略该记录的数据。`ApplyErrorEscalationCount` 属性的错误计数器将递增。因此，如果您为表设置错误数限制，则此错误将计入限制。
  + `LOG_ERROR` – 任务继续，并且错误将写入任务日志。
  + `SUSPEND_TABLE` – 任务继续，但带错误记录的表中的数据将移至错误状态，并且不会复制数据。
  + `STOP_TASK` – 任务停止，并且需要手动干预。
  + `INSERT_RECORD` – 如果存在带与插入的源记录相同的主键的现有目标记录，则更新该目标记录。
**注意**  
**在“事务应用”模式下**：在此过程中，系统首先尝试插入记录。如果由于主键冲突而导致插入失败，则会删除现有记录，然后插入新记录。
**在“批量应用”模式下**：在插入完整的新记录集之前，该过程会移除目标批次中的所有现有记录，从而确保干净地替换数据。
此过程可以防止数据重复，但与默认策略相比，会产生一些性能损失。确切的性能影响取决于您的具体工作负载特征。
+ `ApplyErrorUpdatePolicy` – 决定在与 UPDATE 操作发生缺少数据的冲突时， AWS DMS 执行的操作。默认值为 `LOG_ERROR`。可能的值包括：
  + `IGNORE_RECORD` – 任务继续，并且将忽略该记录的数据。`ApplyErrorEscalationCount` 属性的错误计数器将递增。因此，如果您为表设置错误数限制，则此错误将计入限制。
  + `LOG_ERROR` – 任务继续，并且错误将写入任务日志。
  + `SUSPEND_TABLE` – 任务继续，但带错误记录的表中的数据将移至错误状态，并且不会复制数据。
  + `STOP_TASK` – 任务停止，并且需要手动干预。
  + `UPDATE_RECORD`— 如果缺少目标记录，则会将缺失的目标记录插入到目标表中。 AWS DMS 完全禁用对任务的 LOB 列支持。选择该选项要求在 Oracle 作为源数据库时为所有源表列启用完整补充日志记录。
**注意**  
**在“事务应用”模式下**：在此过程中，系统首先尝试更新记录。如果由于目标上缺少记录而导致更新失败，则会对失败的记录执行删除操作，然后插入新记录。此过程需要 Oracle 源数据库的完整补充日志记录，而 DMS 禁用了对此任务的 LOB 列支持。
**在“批量应用”模式下**：在插入完整的新记录集之前，该过程会移除目标批次中的所有现有记录，从而确保干净地替换数据。
+ `ApplyErrorEscalationPolicy`— 确定当达到最大错误数（使用`ApplyErrorEscalationCount`参数设置）时， AWS DMS 将采取什么操作。默认值为 LOG\$1ERROR：
  + `LOG_ERROR` – 任务继续，并且错误将写入任务日志。
  + `SUSPEND_TABLE` – 任务继续，但带错误记录的表中的数据将移至错误状态，并且不会复制数据。
  + `STOP_TASK` – 任务停止，并且需要手动干预。
+ `ApplyErrorEscalationCount` – 该选项设置在更改处理操作期间，特定表可发生的 APPLY 冲突的最大次数。达到此数目时，将根据 `ApplyErrorEscalationPolicy` 参数中设置的策略处理表数据。默认值是 0。
+ `ApplyErrorFailOnTruncationDdl` – 如果将该选项设置为 `true`，则会导致在 CDC 期间对任何跟踪的表执行截断时任务失败。默认值为 `false`。

  此方式不适用于 PostgreSQL 11.x 或以下版本，以及不复制 DDL 表截断的任何其他源端点。
+ `FailOnNoTablesCaptured` – 如果将该选项设置为 `true`，则会导致在任务启动时为任务定义的表映射找不到表时任务失败。默认值为 `true`。
+ `FailOnTransactionConsistencyBreached` – 该选项适用于将 Oracle 作为 CDC 源的任务。默认值为 false。如果将该选项设置为 `true`，则会导致当事务的打开时间超出指定超时并可能删除时任务失败。

  当 CDC 任务从 Oracle 开始时，在启动 CDC 之前，需要 AWS DMS 等待最早的未平仓交易关闭一段有限的时间。如果最早的未结交易直到达到超时后才关闭，则在大多数情况下， AWS DMS 会启动 CDC，忽略该交易。如果将该选项设置为 `true`，则任务将失败。
+ `FullLoadIgnoreConflicts`— 将此选项设置为`true`在应用缓存事件时 AWS DMS 忽略 “受影响的零行” 和 “重复” 错误。如果设置为`false`，则 AWS DMS 报告所有错误而不是忽略错误。默认值为 `true`。
+ `DataMaskingErrorPolicy`— 确定由于数据类型不兼容或任何其他原因导致数据屏蔽失败时 AWS DMS 采取的操作。可用选项如下：
  + `STOP_TASK`（默认）– 任务停止，并且需要手动干预。
  + `IGNORE_RECORD` – 任务继续，并且将忽略该记录的数据。
  + `LOG_ERROR` – 任务继续，并且错误将写入任务日志。未掩蔽的数据将加载到目标表中。
  + `SUSPEND_TABLE` – 任务继续，但带错误记录的表中的数据将移至错误状态，并且不会复制数据。

**注意**  
 中报告了 Redshift 作为目标的表格加载错误。`STL_LOAD_ERRORS`有关更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)。

**注意**  
与可恢复错误相关的参数更改只有在您停止并恢复 DMS 任务后才会生效。更改不适用于当前执行。