

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# データ検証タスクの設定
<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` - タスク検証が停止する前に、検証を失敗できるレコードの最大数を指定します。デフォルト値は 10,000 です。検証に失敗するレコードの数に関係なく検証を継続するには、この値をソースのレコード数より大きく設定します。
+ `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`、 はタスク検証のテーブルの部分内のすべての LOB 列のデータ検証を AWS DMS スキップします。デフォルト値は `false` です。
+ `TableFailureMaxCount` – テーブル検証が停止する前に、検証を失敗できるテーブルあたりの最大行数を指定します。デフォルト値は 1,000 です。
+ `ThreadCount` – 検証中に が AWS DMS 使用する実行スレッドの数を指定します。各スレッドは、ソースとターゲットからまだ検証されていないデータを選択し、比較して検証します。デフォルト値は 5 です。をより高い数値`ThreadCount`に設定すると、 は検証をより迅速に完了 AWS DMS できます。ただし、この場合、 AWS DMS はより多くの同時クエリを実行し、ソースとターゲットでより多くのリソースを消費します。
+ `ValidationOnly` – このオプションを `true` に設定すると、タスクはデータの移行やレプリケーションを実行せずにデータ検証を実行します。デフォルト値は `false` です。タスク作成後に `ValidationOnly` 設定を変更することはできません。

  **[TargetTablePrepMode]** は `DO_NOTHING` (検証のみのタスクのデフォルト)に設定し、**[移行タイプ]** は次のいずれかに設定します。
  + 全ロード — タスク**移行タイプ**を設定して、 AWS DMS コンソールで**既存のデータを移行**します。または、 AWS DMS API で移行タイプを FULL-LOAD に設定します。
  + CDC — AWS DMS コンソールで、タスクの **[移行タイプ]** を **[データ変更のみをレプリケートする]** に設定します。または、 AWS DMS API で移行タイプを CDC に設定します。

  選択した移行タイプを問わず、検証のみのタスクではデータが実際に移行またはレプリケートされることはありません。

  詳細については、「[検証のみのタスク](CHAP_Validating.md#CHAP_Validating.ValidationOnly)」を参照してください。
**重要**  
`ValidationOnly` の設定はイミュータブルです。タスクの作成後、タスクに対する変更はできません。
+ `ValidationPartialLobSize` - 列に保存されているすべてのデータを検証するのではなく、LOB 列の部分検証を実行するかどうかを指定します。これは、LOB データセット全体ではなく LOB データの一部のみを移行する場合に便利な機能です。この値は、KB 単位です。デフォルト値は 0 で、 AWS DMS はすべての LOB 列データを検証します。たとえば、 は、ソースとターゲットの両方の列データの最初の 32KB AWS DMS のみを検証する`"ValidationPartialLobSize": 32`ことを意味します。
+ `PartitionSize` -ソースとターゲットの両方から比較noために読み取るレコードのバッチサイズを指定します。デフォルトは 10,000 です。
+ `ValidationQueryCdcDelaySeconds` — CDC 更新ごとに、ソースとターゲットの両方で最初の検証クエリが遅延する時間。これにより、移行のレイテンシーが高い場合にリソースの競合が軽減される可能性があります。検証のみのタスクでは、このオプションは自動的に 180 秒に設定されます。デフォルトは 0 です。

たとえば、以下の JSON ではスレッドのデフォルト数の 2 倍のデータ検証を有効化しています。また、ここでは PostgreSQL エンドポイントでの列照合の違いによって生じるレコード順序の相違も考慮されます。また、すべての検証失敗を処理する追加の時間を考慮に入れた検証報告遅延を提供します。

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

**注記**  
Oracle エンドポイントの場合、 は DBMS\$1CRYPTO AWS DMS を使用して BLOBs。Oracle エンドポイントで BLOB を使用する場合は、Oracle エンドポイントにアクセスするために使用されるユーザーアカウントに DBMS\$1CRYPTO での `execute` 許可を付与します。これを行うには、以下のステートメントを実行します。  

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