

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

# 数据验证任务设置
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.DataValidation"></a>

您可以确保准确地将您的数据从源迁移到目标。如果为任务启用验证，则在对表执行满载后立即 AWS DMS 开始比较源数据和目标数据。有关任务数据验证、其要求、其数据库支持的范围以及它报告的指标的更多信息，请参阅[AWS DMS 数据验证](CHAP_Validating.md)。有关如何使用任务配置文件来设置任务设置的信息，请参阅[任务设置示例](CHAP_Tasks.CustomizingTasks.TaskSettings.md#CHAP_Tasks.CustomizingTasks.TaskSettings.Example)。

 数据验证设置及其值包括：
+ `EnableValidation` – 在设置为 true 时，启用数据验证。否则，将为任务禁用验证。默认值为 False。
+ `ValidationMode`— 控制如何根据源表 AWS DMS 验证目标表中的数据。从复制引擎版本 3.5.4 开始，对于支持的迁移路径，DMS 会自动将其设置为 `GROUP_LEVEL`，从而增强了验证性能，并大大加快了大型数据集的处理速度。此增强功能适用于 [AWS DMS 数据重新](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.DataResync.html#CHAP_DataResync.limitations)同步中列出的迁移路径的迁移。对于所有其他迁移路径，验证模式默认为 `ROW_LEVEL`。
**注意**  
无论设置如何，都会 AWS DMS 验证通过表验证配置的所有行。
+ `FailureMaxCount` – 指定在暂停任务的验证之前可验证失败的记录的最大数目。默认值是 10000。如果您希望验证继续而不管验证失败的记录数如何，请将此值设置为大于源中记录数的值。
+ `HandleCollationDiff` – 如果此选项设为 `true`，则验证会考虑源数据库和目标数据库之间的列排序规则差异。否则，将忽略列排序规则中的任何此类差异以进行验证。列排序规则可以规定行的顺序，这对于数据验证很重要。将 `HandleCollationDiff` 设置为 true 可自动解析这些排序规则差异并防止数据验证中出现误报。默认值为 `false`。
+ `RecordFailureDelayInMinutes` – 指定报告任何验证失败详细信息之前的延迟（以分钟为单位）。

  如果总体 DMS 任务 CDC 延迟大于 `RecordFailureDelayInMinutesthen` 的值，则优先考虑该值；例如，如果 `RecordFailureDelayInMinutes` 为 5，CDC 延迟为 7 分钟，则 DMS 将等待 7 分钟以报告验证失败详细信息。
+ `RecordFailureDelayLimitInMinutes`— 指定报告任何验证失败详细信息之前的延迟。 AWS DMS 使用任务延迟来识别对目标进行更改的实际延迟，以防止误报。此设置会覆盖实际延迟值和 DMS 任务 CDC 延迟值，并允许您在报告任何验证指标之前设置更高的延迟。默认值是 0。
+ `RecordSuspendDelayInMinutes` – 指定根据 `FailureMaxCount` 中设置的错误阈值而暂停验证表之前的延迟时间（以分钟为单位）。
+ `SkipLobColumns`— 当此选项设置为时`true`，将 AWS DMS 跳过任务验证中表中所有 LOB 列的数据验证。默认值为 `false`。
+ `TableFailureMaxCount` – 指定在暂停表的验证之前可验证失败的、一个表中的最大行数。默认值是 1000。
+ `ThreadCount`— 指定验证期间 AWS DMS 使用的执行线程数。每个线程都从源和目标中选择 not-yet-validated数据进行比较和验证。默认值是 5。如果设置`ThreadCount`为更高的数字，则 AWS DMS 可以更快地完成验证。但是， AWS DMS 随后将执行更多同步查询，这将消耗源和目标上的更多资源。
+ `ValidationOnly` – 当该选项设置为 `true` 时，任务会执行数据验证，而不执行任何数据迁移或复制。默认值为 `false`。创建任务后，您将无法修改 `ValidationOnly` 设置。

  必须**TargetTablePrepMode**将迁移类型设置为`DO_NOTHING`（仅限验证的任务的默认值），并将 “**迁移类型**” 设置为以下选项之一：
  + 满载-在 AWS DMS 控制台中将任务**迁移类型****设置为迁移现有数据**。或者，在 AWS DMS API 中将迁移类型设置为满载。
  + CDC – 在 AWS DMS 控制台中将任务**迁移类型**设置为**仅复制数据更改**。或者，在 AWS DMS API 中将迁移类型设置为 CDC。

  无论选择哪种迁移类型，在仅限验证的任务中，实际上都不会迁移或复制数据。

  有关更多信息，请参阅 [仅验证任务](CHAP_Validating.md#CHAP_Validating.ValidationOnly)。
**重要**  
该 `ValidationOnly` 设置是不可变的。创建任务后，无法修改该任务的内容。
+ `ValidationPartialLobSize` – 指定是否要对 LOB 列进行部分验证，而不是验证存储在该列中的所有数据。当只迁移一部分 LOB 数据而不是整个 LOB 数据集时，可能会发现这很有用。该值以 KB 为单位。默认值是 0，这意味着 AWS DMS 验证所有 LOB 列数据。例如，`"ValidationPartialLobSize": 32`表示 AWS DMS 仅验证源和目标中列数据的前 32KB。
+ `PartitionSize` – 指定要从源和目标读取的记录的批量大小，以便进行比较。默认值是 10000。
+ `ValidationQueryCdcDelaySeconds` – 每次更新 CDC 时，源和目标上验证查询首次延迟的时间长度。当迁移延迟较长时，这可能有助于减少资源争用。仅限验证的任务会自动将此选项设置为 180 秒。默认值是 0。

例如，以下 JSON 支持使用两倍于默认线程数的线程进行数据验证。它还解释了由 PostgreSQL 终端节点中的列排序规则差异导致的记录顺序差异。此外，它还提供验证报告延迟，以考虑处理任何验证失败所需的额外时间。

```
"ValidationSettings": {
     "EnableValidation": true,
     "ThreadCount": 10,
     "HandleCollationDiff": true,
     "RecordFailureDelayLimitInMinutes": 30
  }
```

**注意**  
对于 Oracle 端点， AWS DMS 使用 DBMS\$1CRYPTO 进行验证。 BLOBs如果您的 Oracle 终端节点使用 BLOBs，请向访问 Oracle 终端节点的用户帐户授予 DBMS\$1CRYPTO `execute` 权限。为此，运行以下语句。  

```
grant execute on sys.dbms_crypto to dms_endpoint_user;
```