

# Enabling and working with premigration assessments for a task
<a name="CHAP_Tasks.AssessmentReport"></a>

A premigration assessment evaluates specified components of a database migration task to help identify any problems that might prevent a migration task from running as expected. This assessment gives you a chance to identify and fix issues before you run a new or modified task. This allows you to avoid delays related to task failures caused by missing requirements or known limitations.

AWS DMS provides access to two different options for premigration assessments:
+ **Data type assessment**: A legacy report that provides a limited scope of assessments.
+ **Premigration assessment run**: Contains various types of individual assessments, including data type assessment results.

**Note**  
If you choose a premigration assessment run, you don't need to choose a data type assessment separately.

 These options are described in the following topics:
+ [Specifying, starting, and viewing premigration assessment runs](CHAP_Tasks.PremigrationAssessmentRuns.md): A premigration (recommended) assessment run specifies one or more individual assessments to run based on a new or existing migration task configuration. Each individual assessment evaluates a specific element of a supported source and/or target database from the perspective of criteria such as the migration type, supported objects, index configuration, and other task settings, such as table mappings that identify the schemas and tables to migrate. 

  For example, an individual assessment might evaluate what source data types or primary key formats can or can't be migrated, possibly based on the AWS DMS engine version. You can start and view the results of the latest assessment run and view the results of all prior assessment runs for a task either using the AWS DMS Management Console or using the AWS CLI and SDKs to access the AWS DMS API. You can also view the results of prior assessment runs for a task in an Amazon S3 bucket that you have selected for AWS DMS to store these results.
**Note**  
The number and types of available individual assessments can increase over time. For more information about periodic updates, see [Specifying individual assessments](CHAP_Tasks.PremigrationAssessmentRuns.md#CHAP_Tasks.PremigrationAssessmentRuns.Individual). 
+ [Starting and viewing data type assessments (Legacy)](CHAP_Tasks.DataTypeAssessments.md): A data type (legacy) assessment returns the results of a single type of premigration assessment in a single JSON structure: the data types that might not be migrated correctly in a supported relational source database instance. This report returns the results for all problematic data types found in every schema and table in the source database that is selected for migration. 

# Creating prerequisites for premigration assessments
<a name="CHAP_Tasks.AssessmentReport.Prerequisites"></a>

This section describes the Amazon S3 and IAM resources you need to create a premigration assessment.

**Important**  
 The following prerequisites are only required if you supply your own Amazon S3 bucket and IAM role. 

## Create an S3 bucket
<a name="CHAP_Tasks.AssessmentReport.Prerequisites.S3"></a>

AWS DMS stores premigration assessment reports in an S3 bucket. To create the S3 bucket, do the following:

1. Sign in to the AWS Management Console and open the Amazon S3 console at [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choose **Create bucket**.

1. On the **Create bucket** page, enter a globally unique name that includes your sign-in name for the bucket, such as dms-bucket-*yoursignin*.

1. Choose the AWS Region for the DMS migration task.

1. Leave the remaining settings as they are, and choose **Create bucket**.

## Create IAM resources
<a name="CHAP_Tasks.AssessmentReport.Prerequisites.IAM"></a>

DMS uses an IAM role and policy to access the S3 bucket to store premigration assessment results.

To create the IAM policy, do the following:

1. Sign in to the AWS Management Console and open the IAM console at [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. In the navigation pane, choose **Policies**.

1. Choose **Create policy**.

1. In the **Create policy** page, choose the **JSON** tab.

1. Paste the following JSON code into the editor, replacing the example code. Replace *amzn-s3-demo-bucket* with the name of the Amazon S3 bucket that you created in the previous section.

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:PutObject",
               "s3:DeleteObject",
               "s3:GetObject",
               "s3:PutObjectTagging"
            ],
            "Resource":[
               "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
         },
         {
            "Effect":"Allow",
            "Action":[
               "s3:ListBucket",
               "s3:GetBucketLocation"
            ],
            "Resource":[
               "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
         }
      ]
   }
   ```

------

1. Choose **Next: Tags**, then choose and **Next: Review**.

1. Enter **DMSPremigrationAssessmentS3Policy** for **Name\$1**, and then choose **Create policy**.

To create the IAM role, do the following:

1. In the IAM console, in the navigation pane, choose **Roles**.

1. Choose **Create role**.

1. On the **Select trusted entity** page, for **Trusted entity type**, choose **AWS Service**. For **Use cases for other AWS services**, choose **DMS.**

1. Check the **DMS** check box, and then choose **Next.**

1. On the **Add permissions** page, choose **DMSPremigrationAssessmentS3Policy**. Choose **Next**.

1. On the **Name, review, and create** page, enter **DMSPremigrationAssessmentS3Role** for **Role name**, then choose **Create role**.

1. On the **Roles** page, enter **DMSPremigrationAssessmentS3Role** for **Role name**. Choose **DMSPremigrationAssessmentS3Role**.

1. On the **DMSPremigrationAssessmentS3Role** page, choose the **Trust relationships** tab. Choose **Edit trust policy**.

1. On the **Edit trust policy** page, paste the following JSON into the editor, replacing the existing text.

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Sid":"",
            "Effect":"Allow",
            "Principal":{
               "Service":"dms.amazonaws.com"
            },
            "Action":"sts:AssumeRole"
         }
      ]
   }
   ```

------

   This policy grants the `sts:AssumeRole` permission to DMS to put the premigration assessment run results into the S3 bucket.

1. Choose **Update policy**.

# Specifying, starting, and viewing premigration assessment runs
<a name="CHAP_Tasks.PremigrationAssessmentRuns"></a>

A premigration assessment specifies one or more individual assessments to run based on a new or existing migration task configuration. Each individual assessment evaluates a specific element of the source or target database depending on considerations such as the migration type, supported objects, index configuration, and other task settings, such as table mappings to identify the schemas and tables to migrate. For example, an individual assessment might evaluate what source data types or primary key formats can and cannot be migrated.

## Specifying individual assessments
<a name="CHAP_Tasks.PremigrationAssessmentRuns.Individual"></a>

When creating a new assessment run, you can choose to run some or all of the individual assessments that are applicable to your task configuration.

AWS DMS supports premigration assessment runs for the following relational source and target database engines:
+ [Oracle assessments](CHAP_Tasks.AssessmentReport.Oracle.md) 
+ [Sql Server assessmentsCheck if the DMS user has the VIEW SERVER STATE permission.](CHAP_Tasks.AssessmentReport.SqlServer.md) 
+ [MySQL assessments](CHAP_Tasks.AssessmentReport.MySQL.md) (includes MariaDB and Amazon Aurora MySQL-Compatible Edition)
+ [PostgreSQL assessmentsValidate the source database parameter `max_slot_wal_keep_size`](CHAP_Tasks.AssessmentReport.PG.md) (includes Amazon Aurora PostgreSQL-Compatible Edition)
+ [MariaDB assessments](CHAP_Tasks.AssessmentReport.MariaDB.md)
+ [Db2 LUW Assessments](CHAP_Tasks.AssessmentReport.Db2.md)

## Starting and viewing premigration assessment runs
<a name="CHAP_Tasks.PremigrationAssessmentRuns.AssessmentRun"></a>

You can start a premigration assessment run for a new or existing migration task using the AWS DMS Management Console, the AWS CLI, and the AWS DMS API.

**To start a premigration assessment run for a new or existing task**

1. From the **Database migration tasks** page in the AWS DMS Management Console, do one of the following:
   + To create a new task and assess it, choose **Create task**. The **Create database migration task page** opens:

     1. Enter the task settings required to create your task, including table mapping.

     1. In the **Premigration assessment** section, the **Premigration assessment run** checkbox is checked. This page contains the options to specify an assessment run for the new task.
**Note**  
When creating a new task, enabling a premigration assessment run disables the option to start the task automatically on task creation. You can start the task manually after the assessment run completes.
   + To assess an existing task, choose the **Identifier** for an existing task on the **Database migration tasks** page. The task page for the chosen existing task opens:

     1. Choose **Actions** and select **Create premigration assessment**. A **Create premigration assessment** page opens with options to specify an assessment run for the existing task. 

1. Enter a unique name for your assessment run, or leave the default value.

1. Select the available individual assessments that you want to include in this assessment run. You can only select the available individual assessments based on your current task settings. By default, all available individual assessments are enabled and selected.

1. Search for and choose an Amazon S3 bucket and folder in your account to store your assessment result report. For information about setting up resources for assessment runs, see [Creating prerequisites for premigration assessments](CHAP_Tasks.AssessmentReport.Prerequisites.md).

1. Select or enter an IAM role with full account access to your chosen Amazon S3 bucket and folder. For information about setting up resources for assessment runs, see [Creating prerequisites for premigration assessments](CHAP_Tasks.AssessmentReport.Prerequisites.md).

1. Optionally choose a setting to encrypt the assessment result report in your Amazon S3 bucket. For information about S3 bucket encryption, see [ Setting default server-side encryption behavior for Amazon S3 buckets ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html).

1. Choose **Create task** for a new task or choose **Create** for an existing task.

   The **Database migration tasks** page opens listing your new or modified task with a **Status** of **Creating...** and a banner message indicating that your premigration assessment run will start once the task is created.

AWS DMS provides access to the latest and all prior premigration assessment runs using the AWS DMS Management Console, the AWS CLI, or the AWS DMS API. 

**To view results for the assessment run**

1. From the AWS DMS Management Console, choose the **Identifier** for your existing task on the **Database migration tasks** page. The task page for the existing task opens.

1. Choose the **Premigration assessments** tab on the existing task page. This opens a **Premigration assessments** section on that page showing results of the the assessment runs, listed by name, in reverse chronological order. The latest result appears at the top of the list. Choose the name of the assessment run whose results you want to view.

These assessment run results start with the name of the latest assessment run and an overview of its status followed by a listing of the specified individual assessments and their status. You can then explore details of the status of each individual assessment by choosing its name in the list, with results available down to the table column level.

Both the status overview for an assessment run and each individual assessment shows a **Status** value. This value indicates the overall status of the assessment run and a similar status for each individual assessment. Following is a list of the **Status** values for the assessment run:
+ `"cancelling"` – The assessment run was cancelled.
+ `"deleting"` – The assessment run was deleted.
+ `"failed"` – At least one individual assessment completed with a `failed` status. This status takes priority over all other statuses, including error conditions.
+ `"error-provisioning"` – An internal error occurred while resources were provisioned (during `provisioning` status). This status is only assigned when no individual assessments have a failed status, as provisioning errors may have prevented assessments from running that could have resulted in failed validations.
+ `"error-executing"` – An internal error occurred while individual assessments ran (during `running` status). This status is only assigned when no individual assessments have a failed status, as error conditions may have prevented assessments from completing that could have resulted in failed validations.
+ `"invalid state"` – The assessment run is in an unknown state.
+ `"passed"` – All individual assessments have completedsuccessfully with no failed, warning, or error statuses.
+ `"provisioning"` – Resources required to run individual assessments are being provisioned.
+ `"running"` – Individual assessments are being ran.
+ `"starting"` – The assessment run is starting, but resources are not yet being provisioned for individual assessments.
+ `"warning"` – At least one individual assessment completed with a `warning` status, and no assessments have failed or error statuses.

Following is a list of the **Status** values for each individual assessment of the assessment run:
+ `"cancelled"` – The individual assessment was cancelled as part of cancelling the assessment run.
+ `"error"` – The individual assessment did not complete successfully.
+ `"failed"` – The individual assessment completed successfully with a failed validation result: view the details of the result for more information.
+ `"invalid state"` – The individual assessment is in an unknown state.
+ `"passed"` – The individual assessment completed with a successful validation result.
+ `"pending"` – The individual assessment is waiting to run.
+ `"running"` – The individual assessment is running.
+ `"warning"` – The individual assessment completed with a warning status.
+ `"skipped"` – The individual assessment were skipped during the assessment run.

You can also view the JSON files for the assessment run results on Amazon S3.

**To view the JSON files for the assessment run on Amazon S3**

1. From the AWS DMS Management Console, choose the Amazon S3 bucket link shown in the status overview of the assessment run. This displays a list of bucket folders and other Amazon S3 objects stored in the bucket. If your results are stored in a bucket folder, open the folder.

1. You can find your assessment run results in several JSON files. A `summary.json` file contains the overall results of the assessment run. The remaining files are each named for an individual assessment that was specified for the assessment run, such as `unsupported-data-types-in-source.json`. These files each contain the results for the corresponding individual assessment from the chosen assessment run.

To start and view the results of premigration assessment runs for an existing migration task, you can run the following CLI commands and AWS DMS API operations:
+ CLI: [https://docs.aws.amazon.com/cli/latest/reference/dms/describe-applicable-individual-assessments](https://docs.aws.amazon.com/cli/latest/reference/dms/describe-applicable-individual-assessments), API: [https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeApplicableIndividualAssessments.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeApplicableIndividualAssessments.html) – Provides a list of individual assessments that you can specify for a new premigration assessment run, given one or more task configuration parameters.
+ CLI: [https://docs.aws.amazon.com/cli/latest/reference/dms/start-replication-task-assessment-run](https://docs.aws.amazon.com/cli/latest/reference/dms/start-replication-task-assessment-run), API: [https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTaskAssessmentRun.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTaskAssessmentRun.html) – Starts a new premigration assessment run for one or more individual assessments of an existing migration task.
+ CLI: [https://docs.aws.amazon.com/cli/latest/reference/dms/describe-replication-task-assessment-runs](https://docs.aws.amazon.com/cli/latest/reference/dms/describe-replication-task-assessment-runs), API: [https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeReplicationTaskAssessmentRuns.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeReplicationTaskAssessmentRuns.html) – Returns a paginated list of premigration assessment runs based on filter settings.
+ CLI: [https://docs.aws.amazon.com/cli/latest/reference/dms/describe-replication-task-individual-assessments](https://docs.aws.amazon.com/cli/latest/reference/dms/describe-replication-task-individual-assessments), API: [https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeReplicationTaskIndividualAssessments.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeReplicationTaskIndividualAssessments.html) – Returns a paginated list of individual assessments based on filter settings.
+ CLI: [https://docs.aws.amazon.com/cli/latest/reference/dms/cancel-replication-task-assessment-run](https://docs.aws.amazon.com/cli/latest/reference/dms/cancel-replication-task-assessment-run), API: [https://docs.aws.amazon.com/dms/latest/APIReference/API_CancelReplicationTaskAssessmentRun.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_CancelReplicationTaskAssessmentRun.html) – Cancels, but doesn't delete, a single premigration assessment run.
+ CLI: [https://docs.aws.amazon.com/cli/latest/reference/dms/delete-replication-task-assessment-run](https://docs.aws.amazon.com/cli/latest/reference/dms/delete-replication-task-assessment-run), API: [https://docs.aws.amazon.com/dms/latest/APIReference/API_DeleteReplicationTaskAssessmentRun.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_DeleteReplicationTaskAssessmentRun.html) – Deletes the record of a single premigration assessment run.

# Individual assessments
<a name="CHAP_Tasks.AssessmentReport.Assessments"></a>

This section describes individual premigration assessments.

To create an individual premigration assessment using the AWS DMS API, use the listed API key for the `IncludeOnly` parameter of the [ StartReplicationTaskAssessmentRun](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTaskAssessmentRun.html) action.

**Topics**
+ [Assessments for all endpoint types](CHAP_Tasks.AssessmentReport.Assessments.All.md)
+ [Oracle assessments](CHAP_Tasks.AssessmentReport.Oracle.md)
+ [Sql Server assessments](CHAP_Tasks.AssessmentReport.SqlServer.md)
+ [MySQL assessments](CHAP_Tasks.AssessmentReport.MySQL.md)
+ [MariaDB assessments](CHAP_Tasks.AssessmentReport.MariaDB.md)
+ [PostgreSQL assessments](CHAP_Tasks.AssessmentReport.PG.md)
+ [Db2 LUW Assessments](CHAP_Tasks.AssessmentReport.Db2.md)

# Assessments for all endpoint types
<a name="CHAP_Tasks.AssessmentReport.Assessments.All"></a>

This section describes individual premigration assessments for all endpoint types.

**Topics**
+ [Unsupported data types](#CHAP_Tasks.AssessmentReport.Assessments.All.UnsupportedDataTypes)
+ [Large objects (LOBs) are used but target LOB columns are not nullable](#CHAP_Tasks.AssessmentReport.Assessments.All.LOBsColsNotNullable)
+ [Source table with Large objects (LOBs) but without primary keys or unique constraints](#CHAP_Tasks.AssessmentReport.Assessments.All.LOBsNoPrimaryKey)
+ [Source table without primary key for CDC or full load and CDC tasks only](#CHAP_Tasks.AssessmentReport.Assessments.All.CDCNoPrimaryKey)
+ [Target table without primary keys for CDC tasks only](#CHAP_Tasks.AssessmentReport.Assessments.All.CDCOnlyNoPrimaryKey)
+ [Unsupported source primary key types - composite primary keys](#CHAP_Tasks.AssessmentReport.Assessments.All.CompositeNoPrimaryKey)

## Unsupported data types
<a name="CHAP_Tasks.AssessmentReport.Assessments.All.UnsupportedDataTypes"></a>

**API key:** `unsupported-data-types-in-source`

Checks for data types in the source endpoint that DMS doesn't support. Not all data types can be migrated between engines.

## Large objects (LOBs) are used but target LOB columns are not nullable
<a name="CHAP_Tasks.AssessmentReport.Assessments.All.LOBsColsNotNullable"></a>

**API key:** `full-lob-not-nullable-at-target`

Checks for the nullability of a LOB column in the target when the replication usese full LOB mode or inline LOB mode. DMS requires a LOB column to be null when using these LOB modes. This assessment requires the source and target databases to be relational.

## Source table with Large objects (LOBs) but without primary keys or unique constraints
<a name="CHAP_Tasks.AssessmentReport.Assessments.All.LOBsNoPrimaryKey"></a>

**API key:** `table-with-lob-but-without-primary-key-or-unique-constraint`

 Checks for the presence of source tables with LOBs but without a primary key or a unique key. A table must have a primary key or a unique key for DMS to migrate LOBs. This assessment requires the source database to be relational.

## Source table without primary key for CDC or full load and CDC tasks only
<a name="CHAP_Tasks.AssessmentReport.Assessments.All.CDCNoPrimaryKey"></a>

**API key:** `table-with-no-primary-key-or-unique-constraint`

 Checks for the presence of a primary key or a unique key in source tables for a full-load and change data capture (CDC) migration, or a CDC-only migration. A lack of a primary key or a unique key can cause performance issues during the CDC migration. This assessment requires the source database to be relational, and the migration type to include CDC.

## Target table without primary keys for CDC tasks only
<a name="CHAP_Tasks.AssessmentReport.Assessments.All.CDCOnlyNoPrimaryKey"></a>

**API key:** `target-table-has-unique-key-or-primary-key-for-cdc`

 Checks for the presence of a primary key or a unique key in already-created target tables for a CDC-only migration. A lack of a primary key or a unique key can cause full table scans in the target when DMS applies updates and deletes. This can result in performance issues during the CDC migration. This assessment requires the target database to be relational, and the migration type to include CDC.

## Unsupported source primary key types - composite primary keys
<a name="CHAP_Tasks.AssessmentReport.Assessments.All.CompositeNoPrimaryKey"></a>

**API key:** `unsupported-source-pk-type-for-elasticsearch-target`

Checks for the presence of composite primary keys in source tables when migrating to Amazon OpenSearch Service. The primary key of the source table must consist of a single column. This assessment requires the source database to be relational, and the target database to be DynamoDB.

**Note**  
DMS supports migrating a source database to an OpenSearch Service target where the source primary key consists of multiple columns. 

# Oracle assessments
<a name="CHAP_Tasks.AssessmentReport.Oracle"></a>

For more information about permissions when using Oracle as a source, see [User account privileges required on a self-managed Oracle source for AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Self-Managed.Privileges) or [User account privileges required on an AWS-managed Oracle source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Amazon-Managed).

**Note**  
This section describes individual premigration assessments for migration tasks that use Oracle as a source or a target for AWS DMS.  
If you are using self-managed Oracle database as a source for AWS DMS, please use following permission set:  

```
grant select on gv_$parameter to dms_user;
                    grant select on v_$instance to dms_user;
                    grant select on v_$version to dms_user;
                    grant select on gv_$ASM_DISKGROUP to dms_user;
                    grant select on gv_$database to dms_user;
                    grant select on DBA_DB_LINKS to to dms_user;
                    grant select on gv_$log_History to dms_user;
                    grant select on gv_$log to dms_user;
                    grant select on dba_types to dms_user;
                    grant select on dba_users to dms_user;
                    grant select on dba_directories to dms_user;
                    grant execute on SYS.DBMS_XMLGEN to dms_user;
```
Additional permissions is required if you are using a self-managed Oracle database as a source for AWS DMS Serverless:  

```
grant select on dba_segments to dms_user;
                    grant select on v_$tablespace to dms_user;
                    grant select on dba_tab_subpartitions to dms_user;
                    grant select on dba_extents to dms_user;
```
If you are using an AWS-managed Oracle database as a source for AWS DMS, use the following set of permissions:  

```
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('V_$PARAMETER', 'dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('V_$INSTANCE', 'dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('V_$VERSION','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('GV_$ASM_DISKGROUP','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('GV_$DATABASE','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('DBA_DB_LINKS','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('GV_$LOG_HISTORY','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('GV_$LOG','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('DBA_TYPES','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('DBA_USERS','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('DBA_DIRECTORIES','dms_user', 'SELECT');
                    GRANT SELECT ON RDSADMIN.RDS_CONFIGURATION to dms_user;
                    GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```
Additional permissions is required if you are using an AWS-managed Oracle database as a source for AWS DMS Serverless:  

```
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('DBA_SEGMENTS','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('DBA_TAB_SUBPARTITIONS','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('DBA_EXTENTS','dms_user', 'SELECT');
                    EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('V_$TABLESPACE','dms_user', 'SELECT');
```
If you are using a self-managed Oracle database as a target for AWS DMS, use the following set of permissions:  

```
grant select on v_$instance to dms_user;
                    grant execute on SYS.DBMS_XMLGEN to dms_user;
```
If you are using an AWS-managed Oracle database as a target for AWS DMS, use the following set of permissions:  

```
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('V_$INSTANCE', 'dms_user', 'SELECT');
                    GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```

**Topics**
+ [Validate that limited LOB mode only is used when `BatchApplyEnabled` is enabled](#CHAP_Tasks.AssessmentReport.Oracle.LimitedLOBMode)
+ [Validate if tables on the source has columns without scale specified for the Number data type](#CHAP_Tasks.AssessmentReport.Oracle.NumberTypeWithoutScale)
+ [Validate triggers on the target database](#CHAP_Tasks.AssessmentReport.Oracle.TriggersOnTargetDatabase)
+ [Validate if source has archivelog `DEST_ID` set to 0](#CHAP_Tasks.AssessmentReport.Oracle.UseZeroDestIDTrue)
+ [Validate if secondary indexes are enabled on the target database during full-load](#CHAP_Tasks.AssessmentReport.Oracle.SecondaryIndexesEnabled)
+ [Validate if tables used in the DMS task scope with BatchApplyEnabled have more than 999 columns](#CHAP_Tasks.AssessmentReport.Oracle.SetBatchApplyEnabledTrue)
+ [Check supplemental logging on database level](#CHAP_Tasks.AssessmentReport.Oracle.SupplementalLogging)
+ [Validate if required DB link is created for Standby](#CHAP_Tasks.AssessmentReport.Oracle.DbLink)
+ [Oracle validation for LOB datatype and if binary reader is configured](#CHAP_Tasks.AssessmentReport.Oracle.Lob)
+ [Validate if the database is CDB](#CHAP_Tasks.AssessmentReport.Oracle.Cdb)
+ [Check the Oracle Database Edition](#CHAP_Tasks.AssessmentReport.Oracle.Express)
+ [Validate Oracle CDC method for DMS](#CHAP_Tasks.AssessmentReport.Oracle.CdcConfigurations)
+ [Validate Oracle RAC configuration for DMS](#CHAP_Tasks.AssessmentReport.Oracle.Rac)
+ [Validate if DMS user has permissions on target](#CHAP_Tasks.AssessmentReport.Oracle.TargetPermissions)
+ [Validate if supplemental logging is required for all columns](#CHAP_Tasks.AssessmentReport.Oracle.SupplementalLoggingColumns)
+ [Validate if supplemental logging is enabled on tables with Primary or Unique keys](#CHAP_Tasks.AssessmentReport.Oracle.SupplementalLoggingIndexes)
+ [Validate if there are SecureFile LOBs and the task is configured for Full LOB mode](#CHAP_Tasks.AssessmentReport.Oracle.SecureFileLOBs)
+ [Validate whether Function-Based Indexes are being used within the tables included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.FunctionBasedIndexes)
+ [Validate whether global temporary tables are being used on the tables included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.GlobalTemporaryTables)
+ [Validate whether index-organized tables with an overflow segment are being used on the tables included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.IndexOrganizedTables)
+ [Validate if multilevel nesting tables are used on the tables included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.MultilevelNestingTables)
+ [Validate if invisible columns are used on the tables included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.InvisibleColumns)
+ [Validate if materialized views based on a ROWID column are used on the tables included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.RowIDMaterialViews)
+ [Validate if Active Data Guard DML Redirect feature is used.](#CHAP_Tasks.AssessmentReport.Oracle.ActiveDataGuard)
+ [Validate if Hybrid Partitioned Tables are used.](#CHAP_Tasks.AssessmentReport.Oracle.HybridPartitionedTables)
+ [Validate if schema-only Oracle accounts are used](#CHAP_Tasks.AssessmentReport.Oracle.SchemaOnly)
+ [Validate if Virtual Columns are used](#CHAP_Tasks.AssessmentReport.Oracle.VirtualColumns)
+ [Validate whether table names defined in the task scope contain apostrophes.](#CHAP_Tasks.AssessmentReport.Oracle.NamesWithApostrophes)
+ [Validate whether the columns defined in the task scope have `XMLType`, `Long`, or `Long Raw` datatypes and verify the LOB mode configuration in the task settings.](#CHAP_Tasks.AssessmentReport.Oracle.XMLLongRawDatatypes)
+ [Validate whether the source Oracle version is supported by AWS DMS.](#CHAP_Tasks.AssessmentReport.Oracle.SourceOracleVersion)
+ [Validate whether the target Oracle version is supported by AWS DMS.](#CHAP_Tasks.AssessmentReport.Oracle.TargetOracleVersion)
+ [Validate whether the DMS user has the required permissions to use data validation.](#CHAP_Tasks.AssessmentReport.Oracle.DataValidation)
+ [Validate if the DMS user has permissions to use Binary Reader with Oracle ASM](#CHAP_Tasks.AssessmentReport.Oracle.BinaryReaderPrivilegesASM)
+ [Validate if the DMS user has permissions to use Binary Reader with Oracle non-ASM](#CHAP_Tasks.AssessmentReport.Oracle.BinaryReaderPrivilegesNonASM)
+ [Validate if the DMS user has permissions to use Binary Reader with CopyToTempFolder method](#CHAP_Tasks.AssessmentReport.Oracle.BinaryReaderTemp)
+ [Validate if the DMS user has permissions to use Oracle Standby as a Source](#CHAP_Tasks.AssessmentReport.Oracle.StandbySource)
+ [Validate if the DMS source is connected to an application container PDB](#CHAP_Tasks.AssessmentReport.Oracle.AppPdb)
+ [Validate if the table has XML datatypes included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.XmlColumns)
+ [Validate whether archivelog mode is enabled on the source database.](#CHAP_Tasks.AssessmentReport.Oracle.Archivelog)
+ [Validates the archivelog retention for RDS Oracle.](#CHAP_Tasks.AssessmentReport.Oracle.ArchivelogRetention)
+ [Validate if the table has Extended datatypes included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.ExtendedColumns)
+ [Validate the length of the object name included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.30ByteLimit)
+ [Validate if the DMS source is connected to an Oracle PDB](#CHAP_Tasks.AssessmentReport.Oracle.PDBEnabled)
+ [Validate if the table has spatial columns included in the task scope.](#CHAP_Tasks.AssessmentReport.Oracle.SpatialColumns)
+ [Validate if the DMS source is connected to an Oracle standby.](#CHAP_Tasks.AssessmentReport.Oracle.StandbyDB)
+ [Validate if the source database tablespace is encrypted using TDE.](#CHAP_Tasks.AssessmentReport.Oracle.StandbyDB)
+ [Validates if the source database uses Automatic Storage Management (ASM)](#CHAP_Tasks.AssessmentReport.Oracle.ASMSource)
+ [Validate if batch apply is enabled and whether the table on the target Oracle database has parallelism enabled at the table or index level](#CHAP_Tasks.AssessmentReport.Oracle.batchapply)
+ [Recommend “Bulk Array Size” parameter by validating the tables in the task scope](#CHAP_Tasks.AssessmentReport.Oracle.bulkarraysize)
+ [Validate if HandleCollationDiff task setting is Configured](#CHAP_Tasks.AssessmentReport.Oracle.handlecollationdiff)
+ [Validate if table has primary key or unique index and its state is VALID when DMS validation is enabled](#CHAP_Tasks.AssessmentReport.Oracle.pkvalidity)
+ [Validate if Binary Reader is used for Oracle Standby as a source](#CHAP_Tasks.AssessmentReport.Oracle.binaryreader)
+ [Validate if the AWS DMS user has the required directory permissions to replicate data from an Oracle RDS Standby database.](#CHAP_Tasks.AssessmentReport.Oracle.directorypermissions)
+ [Validate the type of Oracle Standby used for replication](#CHAP_Tasks.AssessmentReport.Oracle.physicalstandby)
+ [Validate if required directories are created for RDS Oracle standby](#CHAP_Tasks.AssessmentReport.Oracle.rdsstandby)
+ [Validate if Primary Key or Unique Index exists on target for Batch Apply](#CHAP_Tasks.AssessmentReport.Oracle.batchapplypkui)
+ [Validate if both Primary Key and Unique index exist on target for Batch Apply](#CHAP_Tasks.AssessmentReport.Oracle.batchapplypkuitarget)
+ [Validate if unsupported HCC levels are used for Full Load](#CHAP_Tasks.AssessmentReport.Oracle.hccfullload)
+ [Validate if unsupported HCC levels are used for Full Load with CDC](#CHAP_Tasks.AssessmentReport.Oracle.hccandcdc)
+ [Validate if unsupported HCC compression used for CDC](#CHAP_Tasks.AssessmentReport.Oracle.binaryreaderhcccdc)
+ [CDC Recommendation based on source compression method](#CHAP_Tasks.AssessmentReport.Oracle.cdcmethodbycompression)
+ [Check if batch apply is enabled and validate whether the table has more than 999 columns](#CHAP_Tasks.AssessmentReport.Oracle.batchapplylob)
+ [Check Transformation Rule for Digits Randomize](#CHAP_Tasks.AssessmentReport.Oracle.digits.randomize)
+ [Check Transformation Rule for Digits mask](#CHAP_Tasks.AssessmentReport.Oracle.digits.mask)
+ [Check Transformation Rule for Hashing mask](#CHAP_Tasks.AssessmentReport.Oracle.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.Oracle.all.digit.random)
+ [Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.Oracle.all.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.Oracle.all.digit.mask)
+ [Validate that replication to a streaming target does not include LOBs or extended data type columns](#CHAP_Tasks.AssessmentReport.Oracle.streaming-target)
+ [Validate that CDC-only task is configured to use the `OpenTransactionWindow` endpoint setting](#CHAP_Tasks.AssessmentReport.Oracle.open.tx.window)
+ [Validate that at least one selected object exists in the source database](#CHAP_Tasks.AssessmentReport.Oracle.all.check.source.selection.rules)
+ [Validate that target foreign key constraints are disabled for migration](#CHAP_Tasks.AssessmentReport.Oracle.target.foreign.key.constraints.check)
+ [Validate that the Oracle database and AWS DMS versions are compatible](#CHAP_Tasks.AssessmentReport.Oracle.dms.compatibility.version.check)
+ [Validate that secondary constraints and indexes (non-primary) are present in the source database](#CHAP_Tasks.AssessmentReport.Oracle.all.check.secondary.constraints)
+ [Validate that session timeout settings (`IDLE_TIME`) are set to `UNLIMITED`](#CHAP_Tasks.AssessmentReport.Oracle.check.idle.time)
+ [Validate that the AWS DMS user has all required permissions on the source database](#CHAP_Tasks.AssessmentReport.Oracle.validate.permissions.on.source)
+ [Validate that `XMLTYPE` or LOB columns exist when Oracle LogMiner is used](#CHAP_Tasks.AssessmentReport.Oracle.update.lob.columns)
+ [Validate that the target endpoint is not a read replica](#CHAP_Tasks.AssessmentReport.Oracle.read.replica)
+ [Validate that the Oracle target does not have CONTEXT indexes when using direct path load](#CHAP_Tasks.AssessmentReport.Oracle.directpath.index)
+ [Validate that `FailTasksOnLobTruncation` is enabled when using limited LOB mode with existing LOB columns](#CHAP_Tasks.AssessmentReport.Oracle.FailTasksOnLobTruncation)
+ [Validate that `EnableHomogenousPartitionOps` endpoint setting is enabled](#CHAP_Tasks.AssessmentReport.Oracle.Homogenous.partition)

## Validate that limited LOB mode only is used when `BatchApplyEnabled` is enabled
<a name="CHAP_Tasks.AssessmentReport.Oracle.LimitedLOBMode"></a>

**API key:** `oracle-batch-apply-lob-mode`

This premigration assessment validates whether tables in the DMS task includes LOB columns. If LOB columns are included in the scope of the task, you must use `BatchApplyEnabled` together with limited LOB mode only.

For more information, see [Target metadata task settings](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.TargetMetadata.html).

## Validate if tables on the source has columns without scale specified for the Number data type
<a name="CHAP_Tasks.AssessmentReport.Oracle.NumberTypeWithoutScale"></a>

**API key:** `oracle-number-columns-without-scale`

This premigration assessment validates whether the DMS task includes columns of NUMBER data type without scale specified. We recommend that you set the endpoint setting `NumberDataTypeScale` to the value specified in the assessment report.

For more information, see [ Endpoint settings when using Oracle as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.ConnectionAttrib).

## Validate triggers on the target database
<a name="CHAP_Tasks.AssessmentReport.Oracle.TriggersOnTargetDatabase"></a>

**API key:** `oracle-target-triggers-are-enabled`

This premigration assessment validates whether triggers are enabled on the target database. The assessment will fail if triggers are enabled. We recommend that you disable or remove the triggers during the migration.

For more information, see [ For more information, see DMS best practices](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html).

## Validate if source has archivelog `DEST_ID` set to 0
<a name="CHAP_Tasks.AssessmentReport.Oracle.UseZeroDestIDTrue"></a>

**API key:** `oracle-zero-archive-log-dest-id`

This premigration assessment validates whether endpoint extra connection attribute `useZeroDestid=true` is set for source if archived log `DEST_ID` is set to 0.

For more information, see [ How to handle AWS DMS replication when used with Oracle database in fail-over scenarios](https://aws.amazon.com/blogs/database/how-to-handle-aws-dms-replication-when-used-with-oracle-database-in-fail-over-scenarios/).

## Validate if secondary indexes are enabled on the target database during full-load
<a name="CHAP_Tasks.AssessmentReport.Oracle.SecondaryIndexesEnabled"></a>

**API key:** `oracle-check-secondary-indexes`

This premigration assessment validates whether secondary indexes are enabled during a full-load on the target database. We recommend that you disable or remove the secondary indexes during full-load.

For more information, [ Best practices for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html).

## Validate if tables used in the DMS task scope with BatchApplyEnabled have more than 999 columns
<a name="CHAP_Tasks.AssessmentReport.Oracle.SetBatchApplyEnabledTrue"></a>

**API key:** `oracle-batch-apply-lob-999`

Tables with batch optimized apply mode enabled can't have more than a total of 999 columns. Tables that have more than 999 columns will cause AWS DMS to process the batch one by one, which increases latency. DMS uses the formula **2 \$1 columns\$1in\$1original\$1table \$1 columns\$1in\$1primary\$1key <= 999** to calculate the total number of columns per table supported in batch-optimized apply mode.

For more information, see [ Limitations on Oracle as a target for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html#CHAP_Target.Oracle.Limitations).

## Check supplemental logging on database level
<a name="CHAP_Tasks.AssessmentReport.Oracle.SupplementalLogging"></a>

**API key:** `oracle-supplemental-db-level`

This premigration assessment validates if minimum supplemental logging is enabled at the database level. You must enable supplemental logging to use an Oracle database as a source for migration. 

To enable supplemental logging, use the following query:

```
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
```

For more information, see [Setting up supplemental logging](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

## Validate if required DB link is created for Standby
<a name="CHAP_Tasks.AssessmentReport.Oracle.DbLink"></a>

**API key:** `oracle-validate-standby-dblink`

This premigration assessment validates if Dblink is created for the Oracle standby database source. AWSDMS\$1DBLINK is a prerequisite for using a standby database as a source. When using Oracle Standby as a source, AWS DMS does not validate open transactions by default.

For more information, see [Working with a self-managed Oracle database as a source for AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Self-Managed).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

## Oracle validation for LOB datatype and if binary reader is configured
<a name="CHAP_Tasks.AssessmentReport.Oracle.Lob"></a>

**API key:** `oracle-binary-lob-source-validation`

This premigration assessment validates if Oracle LogMiner is used for an Oracle database endpoint version 12c or later. AWS DMS does not support Oracle LogMiner for migrations of LOB columns from Oracle databases version 12c. This assessment also checks for the presence of LOB columns and provides appropriate recommendations.

To configure your migration to not use Oracle LogMiner, add the following configuration to your source endpoint:

```
useLogMinerReader=N;useBfile=Y;
```

For more information, see [Using Oracle LogMiner or AWS DMS Binary Reader for CDC](CHAP_Source.Oracle.md#CHAP_Source.Oracle.CDC).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

## Validate if the database is CDB
<a name="CHAP_Tasks.AssessmentReport.Oracle.Cdb"></a>

**API key:** `oracle-validate-cdb`

This premigration assessment validates if the database is a container database. AWS DMS doesn't support the multi-tenant container root database (CDB\$1ROOT). 

**Note**  
This assessment is only required for Oracle versions 12.1.0.1 or later. This assessment is not applicable for Oracle versions prior to 12.1.0.1.

For more information, see [Limitations on using Oracle as a source for AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Limitations).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

## Check the Oracle Database Edition
<a name="CHAP_Tasks.AssessmentReport.Oracle.Express"></a>

**API key:** `oracle-check-cdc-support-express-edition`

This premigration assessment validates if the Oracle source database is Express Edition. AWS DMS doesn't support CDC for Oracle Express Edition (Oracle Database XE) version 18.0 and later.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

## Validate Oracle CDC method for DMS
<a name="CHAP_Tasks.AssessmentReport.Oracle.CdcConfigurations"></a>

**API key:** `oracle-recommendation-cdc-method`

This premigration assessment validates redo log generation for the last seven days, and makes a recommendation whether to use AWS DMS Binary Reader or Oracle LogMiner for CDC.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

For more information about deciding which CDC method to use, see [Using Oracle LogMiner or AWS DMS Binary Reader for CDC](CHAP_Source.Oracle.md#CHAP_Source.Oracle.CDC).

## Validate Oracle RAC configuration for DMS
<a name="CHAP_Tasks.AssessmentReport.Oracle.Rac"></a>

**API key:** `oracle-check-rac`

This premigration assessment validates if the oracle database is a Real Application Cluster. Real Application Cluster databases must be configured correctly. If the database is based on RAC, we recommend that you use AWS DMS Binary Reader for CDC rather than Oracle LogMiner.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

For more information, see [Using Oracle LogMiner or AWS DMS Binary Reader for CDC](CHAP_Source.Oracle.md#CHAP_Source.Oracle.CDC).

## Validate if DMS user has permissions on target
<a name="CHAP_Tasks.AssessmentReport.Oracle.TargetPermissions"></a>

**API key:** `oracle-validate-permissions-on-target`

This premigration assessment validates whether DMS users have all the required permissions on the target database. 

## Validate if supplemental logging is required for all columns
<a name="CHAP_Tasks.AssessmentReport.Oracle.SupplementalLoggingColumns"></a>

**API key:** `oracle-validate-supplemental-logging-all-columns`

This premigration assessment validates, for the tables mentioned in the task scope, whether supplemental logging has been added to all columns of tables without a primary or unique key. Without supplemental logging on all columns for a table lacking a primary or unique key, the before-and-after image of the data won't be available in the redo logs. DMS requires supplemental logging for tables without a primary or unique key to generate DML statements. 

## Validate if supplemental logging is enabled on tables with Primary or Unique keys
<a name="CHAP_Tasks.AssessmentReport.Oracle.SupplementalLoggingIndexes"></a>

**API key:** `oracle-validate-supplemental-logging-for-pk`

 This premigration assessment validates whether supplemental logging is enabled for tables with a primary key or unique index and also checks if `AddSupplementalLogging` is enabled at the endpoint level. To ensure DMS can replicate changes, you can either manually add supplemental logging on the table level based on the primary key or unique key or utilize the endpoint setting `AddSupplementalLogging = true` with a DMS user having the ALTER permission on any replicated table. 

## Validate if there are SecureFile LOBs and the task is configured for Full LOB mode
<a name="CHAP_Tasks.AssessmentReport.Oracle.SecureFileLOBs"></a>

**API key:** `oracle-validate-securefile-lobs`

This premigration assessment checks for the presence of SecureFile LOBs in tables within the task scope and verifies their LOB settings. Consider assigning LOB tables to a separate task to enhance performance, as running tasks in full LOB mode may result in slower performance. 

## Validate whether Function-Based Indexes are being used within the tables included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.FunctionBasedIndexes"></a>

**API key:** `oracle-validate-function-based-indexes`

This premigration assessment checks for function-based indexes on tables within the task scope. Note that AWS DMS doesn't support replicating function-based indexes. Consider creating the indexes after your migration on your target database.

## Validate whether global temporary tables are being used on the tables included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.GlobalTemporaryTables"></a>

**API key:** `oracle-validate-global-temporary-tables`

This premigration assessment checks whether global temporary tables are used within the task table-mapping scope. Note that AWS DMS doesn't support migrating or replicating global temporary tables.

## Validate whether index-organized tables with an overflow segment are being used on the tables included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.IndexOrganizedTables"></a>

**API key:** `oracle-validate-iot-overflow-segments`

Validate whether index-organized tables with an overflow segment are being used on the tables included in the task scope. AWS DMS doesn't support CDC for index-organized tables with an overflow segment.

## Validate if multilevel nesting tables are used on the tables included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.MultilevelNestingTables"></a>

**API key:** `oracle-validate-more-than-one-nesting-table-level`

This premigration assessment checks the nesting level of the nested table used on the task scope. AWS DMS supports only one level of table nesting.

## Validate if invisible columns are used on the tables included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.InvisibleColumns"></a>

**API key:** `oracle-validate-invisible-columns`

This premigration assessment validates whether the tables used in the task scope have invisible columns. AWS DMS doesn't migrate data from invisible columns in your source database. To migrate the columns that are invisible, you need to modify them to be visible.

## Validate if materialized views based on a ROWID column are used on the tables included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.RowIDMaterialViews"></a>

**API key:** `oracle-validate-rowid-based-materialized-views`

This premigration assessment validates whether the materialized views used in the migration are created based on the ROWID column. AWS DMS doesn't support the ROWID data type or materialized views based on a ROWID column.

## Validate if Active Data Guard DML Redirect feature is used.
<a name="CHAP_Tasks.AssessmentReport.Oracle.ActiveDataGuard"></a>

**API key:** `oracle-validate-adg-redirect-dml`

This premigration assessment validates whether the Active Data Guard DML Redirect feature is used. When using Oracle 19.0 as the source, AWS DMS doesn't support the Data Guard DML Redirect feature.

## Validate if Hybrid Partitioned Tables are used.
<a name="CHAP_Tasks.AssessmentReport.Oracle.HybridPartitionedTables"></a>

**API key:** `oracle-validate-hybrid-partitioned-tables`

This premigration assessment validates whether hybrid partitioned tables are used for the tables defined in the task scope.

## Validate if schema-only Oracle accounts are used
<a name="CHAP_Tasks.AssessmentReport.Oracle.SchemaOnly"></a>

**API key:** `oracle-validate-schema-only-accounts`

This premigration assessment validates whether Schema-Only Accounts are found within the task scope.

## Validate if Virtual Columns are used
<a name="CHAP_Tasks.AssessmentReport.Oracle.VirtualColumns"></a>

**API key:** `oracle-validate-virtual-columns`

This premigration assessment validates whether the Oracle Instance has Virtual Columns in tables within the task scope.

## Validate whether table names defined in the task scope contain apostrophes.
<a name="CHAP_Tasks.AssessmentReport.Oracle.NamesWithApostrophes"></a>

**API key:** `oracle-validate-names-with-apostrophes`

This premigration assessment validates whether the tables used in the task scope contain apostrophes. AWS DMS doesn't replicate tables with names containing apostrophes. If identified, consider renaming such tables. Alternatively, you could create a view or materialized view without apostrophes to load these tables.

## Validate whether the columns defined in the task scope have `XMLType`, `Long`, or `Long Raw` datatypes and verify the LOB mode configuration in the task settings.
<a name="CHAP_Tasks.AssessmentReport.Oracle.XMLLongRawDatatypes"></a>

**API key:** `oracle-validate-limited-lob-mode-for-longs`

This premigration assessment validates whether the tables defined in the task scope have the datatypes `XMLType`, `Long`, or `Long Raw`, and checks if the task setting is configured to use Limited Size LOB Mode. AWS DMS doesn't support replicating these datatypes using FULL LOB mode. Consider changing the task setting to use Limited Size LOB mode upon identifying tables with such datatypes.

## Validate whether the source Oracle version is supported by AWS DMS.
<a name="CHAP_Tasks.AssessmentReport.Oracle.SourceOracleVersion"></a>

**API key:** `oracle-validate-supported-versions-of-source`

 This premigration assessment validates if the source Oracle instance version is supported by AWS DMS.

## Validate whether the target Oracle version is supported by AWS DMS.
<a name="CHAP_Tasks.AssessmentReport.Oracle.TargetOracleVersion"></a>

**API key:** `oracle-validate-supported-versions-of-target`

This premigration assessment validates if the target Oracle instance version is supported by AWS DMS.

## Validate whether the DMS user has the required permissions to use data validation.
<a name="CHAP_Tasks.AssessmentReport.Oracle.DataValidation"></a>

**API key:** `oracle-prerequisites-privileges-of-validation-feature`

This premigration assessment validates whether the DMS user has the necessary privileges to use DMS Data Validation. You can ignore enabling this validation if you do not intend to use data validation.

## Validate if the DMS user has permissions to use Binary Reader with Oracle ASM
<a name="CHAP_Tasks.AssessmentReport.Oracle.BinaryReaderPrivilegesASM"></a>

**API key:** `oracle-prerequisites-privileges-of-binary-reader-asm`

This premigration assessment validates whether the DMS user has the necessary privileges to use Binary Reader on the Oracle ASM instance. You can ignore enabling this assessment if your source is not an Oracle ASM instance or if you are not using Binary Reader for CDC.

## Validate if the DMS user has permissions to use Binary Reader with Oracle non-ASM
<a name="CHAP_Tasks.AssessmentReport.Oracle.BinaryReaderPrivilegesNonASM"></a>

**API key:** `oracle-prerequisites-privileges-of-binary-reader-non-asm`

This premigration assessment validates whether the DMS user has the necessary privileges to use Binary Reader on the Oracle non-ASM instance. This assessment is only valid if you have an Oracle non-ASM instance.

## Validate if the DMS user has permissions to use Binary Reader with CopyToTempFolder method
<a name="CHAP_Tasks.AssessmentReport.Oracle.BinaryReaderTemp"></a>

**API key:** `oracle-prerequisites-privileges-of-binary-reader-copy-to-temp-folder`

This premigration assessment validates whether the DMS user has the necessary privileges to use the Binary Reader with the 'Copy to Temp Folder' method. This assessment is relevant only if you are planning to use CopyToTempFolder to read CDC changes while using the Binary Reader, and have an ASM instance connected to the source. You can ignore enabling this assessment if you don't intend to use the CopyToTempFolder feature.

We recommend not using the CopyToTempFolder feature because it is deprecated.

## Validate if the DMS user has permissions to use Oracle Standby as a Source
<a name="CHAP_Tasks.AssessmentReport.Oracle.StandbySource"></a>

**API key:** `oracle-prerequisites-privileges-of-standby-as-source`

This premigration assessment validates whether the DMS user has the necessary privileges to use a StandBy Oracle Instance as a source. You can ignore enabling this assessment if you don't intend to use a StandBy Oracle Instance as a source.

## Validate if the DMS source is connected to an application container PDB
<a name="CHAP_Tasks.AssessmentReport.Oracle.AppPdb"></a>

**API key:** `oracle-check-app-pdb`

This premigration assessment validates whether the DMS source is connected to an application container PDB. DMS doesn't support replication from an application container PDB.

## Validate if the table has XML datatypes included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.XmlColumns"></a>

**API key:** `oracle-check-xml-columns`

This premigration assessment validates whether the tables used in the task scope have XML datatypes. It also checks if the task is configured for Limited LOB mode when the table contains an XML datatype. DMS only supports Limited LOB mode for migrating Oracle XML Columns.

## Validate whether archivelog mode is enabled on the source database.
<a name="CHAP_Tasks.AssessmentReport.Oracle.Archivelog"></a>

**API key:** `oracle-check-archivelog-mode`

This premigration assessment validates whether archivelog mode is enabled on the source database. Enabling archive log mode on the source database is necessary for DMS to replicate changes.

## Validates the archivelog retention for RDS Oracle.
<a name="CHAP_Tasks.AssessmentReport.Oracle.ArchivelogRetention"></a>

**API key:** `oracle-check-archivelog-retention-rds`

This premigration assessment validates whether archivelog retention on your RDS Oracle database is configured for at least 24 hours.

## Validate if the table has Extended datatypes included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.ExtendedColumns"></a>

**API key:** `oracle-check-extended-columns`

This premigration assessment validates whether the tables used in the task scope have extended datatypes. Note that extended datatypes are supported only with DMS version 3.5 onwards.

## Validate the length of the object name included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.30ByteLimit"></a>

**API key:** `oracle-check-object-30-bytes-limit`

This premigration assessment validates whether the length of the object name exceeds 30 bytes. DMS doesn't support long object names (over 30 bytes).

## Validate if the DMS source is connected to an Oracle PDB
<a name="CHAP_Tasks.AssessmentReport.Oracle.PDBEnabled"></a>

**API key:** `oracle-check-pdb-enabled`

This premigration assessment validates whether the DMS source is connected to a PDB. DMS supports CDC only when using the Binary Reader with Oracle PDB as the source. The assessment also evaluates if the task is configured to use the binary reader when DMS is connected to Oracle PDB. 

## Validate if the table has spatial columns included in the task scope.
<a name="CHAP_Tasks.AssessmentReport.Oracle.SpatialColumns"></a>

**API key:** `oracle-check-spatial-columns`

This premigration assessment validates whether the table has spatial columns included in the task scope. DMS supports Spatial datatypes only using Full LOB mode. The assessment also evaluates whether the task is configured to use Full LOB mode when DMS identifies spatial columns. 

## Validate if the DMS source is connected to an Oracle standby.
<a name="CHAP_Tasks.AssessmentReport.Oracle.StandbyDB"></a>

**API key:** `oracle-check-standby-db`

This premigration assessment validates whether the source is connected to an Oracle standby. DMS supports CDC only when using the binary reader with Oracle Standby as the source. The assessment also evaluates if the task is configured to use binary reader when DMS is connected to Oracle Standby. 

## Validate if the source database tablespace is encrypted using TDE.
<a name="CHAP_Tasks.AssessmentReport.Oracle.StandbyDB"></a>

**API key:** `oracle-check-tde-enabled`

This premigration assessment validates whether the source has TDE Encryption enabled on the tablespace. DMS supports TDE only with encrypted tablespaces when using Oracle LogMiner for RDS Oracle.

## Validates if the source database uses Automatic Storage Management (ASM)
<a name="CHAP_Tasks.AssessmentReport.Oracle.ASMSource"></a>

**API key:** `oracle-check-asm`

This premigration assessment detects if your source database uses ASM. For optimal performance, configure Binary Reader with `parallelASMReadThreads` and `readAheadBlocks` parameters in your endpoint settings. These settings enhance data extraction performance when working with ASM storage

For more information, see [Using Oracle LogMiner or AWS DMS Binary Reader for CDC](CHAP_Source.Oracle.md#CHAP_Source.Oracle.CDC).

## Validate if batch apply is enabled and whether the table on the target Oracle database has parallelism enabled at the table or index level
<a name="CHAP_Tasks.AssessmentReport.Oracle.batchapply"></a>

**API key:** `oracle-check-degree-of-parallelism`

AWS DMS validates that the table in the target database has any parallelism enabled. Having parallelism enabled on the target database causes the batch process to fail. Therefore, it is required to disable parallelism at the table or index level when using the batch apply feature.

## Recommend “Bulk Array Size” parameter by validating the tables in the task scope
<a name="CHAP_Tasks.AssessmentReport.Oracle.bulkarraysize"></a>

**API key:** `oracle-check-bulk-array-size`

This assessment recommends setting the `BulkArraySize` ECA (Extra Connection Attribute) if there are no tables with LOB (Large Object) data types found within the task scope. Setting the `BulkArraySize` ECA can improve performance of the full load phase of the migration. You can set the bulk array size using the ECA on the Source/Target endpoint to get optimal performance during the full load phase of the migration.

## Validate if HandleCollationDiff task setting is Configured
<a name="CHAP_Tasks.AssessmentReport.Oracle.handlecollationdiff"></a>

**API key:** `oracle-check-handlecollationdiff`

This assessment validates if DMS task is configured for validation and recommend `HandleCollationDiff` task setting to avoid any incorrect validation results while validating data between Oracle and PostgreSQL. 

For more information, see [Data validation task settings](CHAP_Tasks.CustomizingTasks.TaskSettings.DataValidation.md).

## Validate if table has primary key or unique index and its state is VALID when DMS validation is enabled
<a name="CHAP_Tasks.AssessmentReport.Oracle.pkvalidity"></a>

**API key:** `oracle-check-pk-validity`

Data validation requires that the table has a primary key or unique index on both source and target. 

For more information, see [AWS DMS data validation](CHAP_Validating.md).

## Validate if Binary Reader is used for Oracle Standby as a source
<a name="CHAP_Tasks.AssessmentReport.Oracle.binaryreader"></a>

**API key:** `oracle-check-binary-reader`

This assessment validates if the source database is a standby database and is using the Binary Reader for Change Data Capture (CDC). 

For more information, see [Using an Oracle database as a source for AWS DMS](CHAP_Source.Oracle.md).

## Validate if the AWS DMS user has the required directory permissions to replicate data from an Oracle RDS Standby database.
<a name="CHAP_Tasks.AssessmentReport.Oracle.directorypermissions"></a>

**API key:** `oracle-check-directory-permissions`

This assessment validates if the AWS DMS user has the required read privileges on the `ARCHIVELOG_DIR_%` and `ONLINELOG_DIR_%` directories when the source database is an Oracle RDS Standby. 

For more information, see [Working with an AWS-managed Oracle database as a source for AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Amazon-Managed).

## Validate the type of Oracle Standby used for replication
<a name="CHAP_Tasks.AssessmentReport.Oracle.physicalstandby"></a>

**API key:** `oracle-check-physical-standby-with-apply`

This assessment validates the type of Oracle standby database used for the AWS DMS replication. AWS DMS only supports Physical standby databases, which must be opened in Read Only mode with the redo logs being applied automatically. AWS DMS does not support Snapshot or Logical standby databases for replication. 

For more information, see [Using a self-managed Oracle Standby as a source with Binary Reader for CDC in AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Self-Managed.BinaryStandby).

## Validate if required directories are created for RDS Oracle standby
<a name="CHAP_Tasks.AssessmentReport.Oracle.rdsstandby"></a>

**API key:** `oracle-check-rds-standby-directories`

This assessment validates if the required oracle directories are created for archive logs and online logs on the RDS Standby instance.

For more information, see [Using an Amazon RDS Oracle Standby (read replica) as a source with Binary Reader for CDC in AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Amazon-Managed.StandBy).

## Validate if Primary Key or Unique Index exists on target for Batch Apply
<a name="CHAP_Tasks.AssessmentReport.Oracle.batchapplypkui"></a>

**API key:** `oracle-check-batch-apply-target-pk-ui-absence`

Batch apply is only supported on tables with Primary Keys or Unique Indexes on the target table. Tables without Primary Keys or Unique Indexes causes the batch to fail, and changes are processed one by one. It is advisable to move such tables to their own tasks and utilize transactional apply mode instead. Alternatively, you can create a unique key on the target table.

For more information, see [Using an Oracle database as a target for AWS Database Migration Service](CHAP_Target.Oracle.md).

## Validate if both Primary Key and Unique index exist on target for Batch Apply
<a name="CHAP_Tasks.AssessmentReport.Oracle.batchapplypkuitarget"></a>

**API key:** `oracle-check-batch-apply-target-pk-ui-simultaneously`

Batch apply is only supported on tables with Primary Keys or Unique Indexes on the target table. Tables with Primary Keys and Unique Indexes simultaneously causes the batch to fail, and changes are processed one by one. It is advisable to move such tables to their own tasks and utilize transactional apply mode instead. Alternatively, you can drop a unique key(s) or primary key on the target table and rebuild it if you are doing migration.

For more information, see [Using an Oracle database as a target for AWS Database Migration Service](CHAP_Target.Oracle.md).

## Validate if unsupported HCC levels are used for Full Load
<a name="CHAP_Tasks.AssessmentReport.Oracle.hccfullload"></a>

**API key:** `oracle-check-binary-reader-hcc-full-load`

The Oracle source endpoint is configured to use Binary Reader, the Query Low level of the HCC compression method is supported for full-load tasks only.

For more information, see [Supported compression methods for using Oracle as a source for AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Compression).

## Validate if unsupported HCC levels are used for Full Load with CDC
<a name="CHAP_Tasks.AssessmentReport.Oracle.hccandcdc"></a>

**API key:** `oracle-check-binary-reader-hcc-full-load-and-cdc`

The Oracle source endpoint is configured to use Binary Reader, HCC with Query low is supported for Full Load task only.

[Supported compression methods for using Oracle as a source for AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Compression)

## Validate if unsupported HCC compression used for CDC
<a name="CHAP_Tasks.AssessmentReport.Oracle.binaryreaderhcccdc"></a>

**API key:** `oracle-check-binary-reader-hcc-cdc`

The Oracle source endpoint is configured to use Binary Reader. Binary Reader doesn't support Query low for tasks with CDC.

For more information, see [Using Oracle LogMiner or AWS DMS Binary Reader for CDC](CHAP_Source.Oracle.md#CHAP_Source.Oracle.CDC).

## CDC Recommendation based on source compression method
<a name="CHAP_Tasks.AssessmentReport.Oracle.cdcmethodbycompression"></a>

**API key:** `oracle-recommend-cdc-method-by-compression`

Compressed objects are detected. Please navigate into the Result section of the specific assessment for further recommendation.

For more information, see [Using Oracle LogMiner or AWS DMS Binary Reader for CDC](CHAP_Source.Oracle.md#CHAP_Source.Oracle.CDC).

## Check if batch apply is enabled and validate whether the table has more than 999 columns
<a name="CHAP_Tasks.AssessmentReport.Oracle.batchapplylob"></a>

**API key:** `oracle-batch-apply-lob-999`

DMS uses the `2 * columns_in_original_table + columns_in_primary_key` formula to determine the number of columns on customer table. Based on this formula, we have identified tables with more than 999 columns. This impacts the batch process, causing it to fail and switch to one-by-one mode.

For more information, see [Limitations on Oracle as a target for AWS Database Migration Service](CHAP_Target.Oracle.md#CHAP_Target.Oracle.Limitations).

## Check Transformation Rule for Digits Randomize
<a name="CHAP_Tasks.AssessmentReport.Oracle.digits.randomize"></a>

**API key**: `oracle-datamasking-digits-randomize`

This assessment validates whether columns used in table mappings are compatible with the Digits Randomize transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Check Transformation Rule for Digits mask
<a name="CHAP_Tasks.AssessmentReport.Oracle.digits.mask"></a>

**API key**: `oracle-datamasking-digits-mask`

This assessment validates whether any columns used in the table mapping are not supported by the Digits Mask transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying Digits Mask transformations to such columns could cause DMS task failures since uniqueness cannot be guaranteed.

## Check Transformation Rule for Hashing mask
<a name="CHAP_Tasks.AssessmentReport.Oracle.hash.mask"></a>

**API key**: `oracle-datamasking-hash-mask`

This assessment validates whether any of the columns used in the table mapping are not supported by the Hashing Mask transformation rule. It also checks if the length of the source column exceeds 64 characters. Ideally, the target column length should be greater than 64 characters to support hash masking. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.Oracle.all.digit.random"></a>

**API key**: `all-to-all-validation-with-datamasking-digits-randomize`

This premigration assessment verifies that Data Validation setting and Data Masking Digit randomization are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.Oracle.all.hash.mask"></a>

**API key**: `all-to-all-validation-with-datamasking-hash-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Hashing mask are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.Oracle.all.digit.mask"></a>

**API key**: `all-to-all-validation-with-digit-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Digit mask are not simultaneously enabled, as these features are incompatible.

## Validate that replication to a streaming target does not include LOBs or extended data type columns
<a name="CHAP_Tasks.AssessmentReport.Oracle.streaming-target"></a>

**API key**: `oracle-validate-lob-to-streaming-target`

This assessment identifies potential data loss when migrating LOB or extended data types to streaming target endpoints (such as S3, Kinesis, or Kafka). Oracle database does not track changes to these data types in its log files causing DMS to write `NULL` values to the streaming target. To prevent data loss, you can implement a '`before`' trigger on the source database which forces Oracle to log these changes.

## Validate that CDC-only task is configured to use the `OpenTransactionWindow` endpoint setting
<a name="CHAP_Tasks.AssessmentReport.Oracle.open.tx.window"></a>

**API key**: `oracle-check-cdc-open-tx-window`

For CDC-only tasks, use `OpenTransactionWindow` to avoid missing data. For more information, see [Creating tasks for ongoing replication using AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html).

## Validate that at least one selected object exists in the source database
<a name="CHAP_Tasks.AssessmentReport.Oracle.all.check.source.selection.rules"></a>

**API key**: `all-check-source-selection-rules`

This premigration assessment verifies that at least one object specified in the selection rules exists in the source database, including pattern matching for wildcard-based rules.

## Validate that target foreign key constraints are disabled for migration
<a name="CHAP_Tasks.AssessmentReport.Oracle.target.foreign.key.constraints.check"></a>

**API key**: `oracle-target-foreign-key-constraints-check`

This premigration assessment detects active foreign key constraints on the target database that can cause migration failures (ORA-02291).

## Validate that the Oracle database and AWS DMS versions are compatible
<a name="CHAP_Tasks.AssessmentReport.Oracle.dms.compatibility.version.check"></a>

**API key**: `oracle-dms-compatibility-version-check`

This premigration assessment detects if your Oracle database version is incompatible with your AWS DMS version. This mismatch can cause task failures due to unsupported Oracle Redo compatibility settings.

## Validate that secondary constraints and indexes (non-primary) are present in the source database
<a name="CHAP_Tasks.AssessmentReport.Oracle.all.check.secondary.constraints"></a>

**API key**: `all-check-secondary-constraints`

This premigration assessment verifies that secondary constraints and indexes (foreign keys, check constraints, non-clustered indexes) are present in the source database.

## Validate that session timeout settings (`IDLE_TIME`) are set to `UNLIMITED`
<a name="CHAP_Tasks.AssessmentReport.Oracle.check.idle.time"></a>

**API key**: `oracle-check-idle-time`

This premigration assessment verifies that the Oracle database `IDLE_TIME` parameter is set to `UNLIMITED` for the AWS DMS user. Limited session timeout can cause migration task failures due to connection timeouts.

## Validate that the AWS DMS user has all required permissions on the source database
<a name="CHAP_Tasks.AssessmentReport.Oracle.validate.permissions.on.source"></a>

**API key**: `oracle-validate-permissions-on-source`

This premigration assessment verifies that the AWS DMS user has been configured with all required permissions on the source database.

## Validate that `XMLTYPE` or LOB columns exist when Oracle LogMiner is used
<a name="CHAP_Tasks.AssessmentReport.Oracle.update.lob.columns"></a>

**API key**: `oracle-update-lob-columns`

This premigration assessment warns that `XMLTYPE` or LOB columns exist in the source database when Oracle LogMiner is used.

## Validate that the target endpoint is not a read replica
<a name="CHAP_Tasks.AssessmentReport.Oracle.read.replica"></a>

**API key**: `all-check-target-read-replica`

This premigration assessment verifies that the target endpoint is not configured as a read replica. AWS DMS requires write access to the target database and cannot replicate to read-only replicas.

## Validate that the Oracle target does not have CONTEXT indexes when using direct path load
<a name="CHAP_Tasks.AssessmentReport.Oracle.directpath.index"></a>

**API key**: `oracle-check-direct-path-context-indexes`

This premigration assessment validates whether target Oracle tables contain CONTEXT indexes. AWS DMS does not support CONTEXT indexes when using direct path in full-load mode. To avoid failure, disable direct path full-load mode or remove CONTEXT indexes before the load.

For more information, see [Limitations on using Oracle as a source for AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Limitations).

## Validate that `FailTasksOnLobTruncation` is enabled when using limited LOB mode with existing LOB columns
<a name="CHAP_Tasks.AssessmentReport.Oracle.FailTasksOnLobTruncation"></a>

**API key**: `oracle-pg-lobs-with-failtasksonlobtruncation`

This premigration assessment validates whether the `FailTasksOnLobTruncation` extra connection attribute is set to true when LOB columns are present in selected tables and limited LOB mode is specified. This setting fails the task if any LOB data is truncated during migration, preventing silent data loss.

For more information, see [Endpoint settings when using Oracle as a source for AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.ConnectionAttrib).

## Validate that `EnableHomogenousPartitionOps` endpoint setting is enabled
<a name="CHAP_Tasks.AssessmentReport.Oracle.Homogenous.partition"></a>

**API key**: `oracle-homogenous-partition-ops`

This premigration assessment validates that the `EnableHomogenousPartitionOps` endpoint setting is enabled for Oracle homogeneous migrations. This setting is required for AWS DMS to replicate Oracle partition and subpartition DDL operations.

For more information, see [Limitations on using Oracle as a source for AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.Limitations).

# Sql Server assessments
<a name="CHAP_Tasks.AssessmentReport.SqlServer"></a>

This section describes individual premigration assessments for migration tasks that use a Microsoft SQL Server source endpoint.

**Topics**
+ [Validate if secondary indexes are enabled on the target database during full-load](#CHAP_Tasks.AssessmentReport.SqlServer.SecondaryIndexesEnabled)
+ [Validate that limited LOB mode only is used when `BatchApplyEnabled` is set to true](#CHAP_Tasks.AssessmentReport.SqlServer.LimitedLOBMode)
+ [Validate if target database has any triggers enabled on tables in the scope of the task](#CHAP_Tasks.AssessmentReport.SqlServer.TargetDatabaseTriggersEnabled)
+ [Check if tables in task scope contain computed columns](#CHAP_Tasks.AssessmentReport.SqlServer.ComputedColumns)
+ [Check if tables in task scope have column store indexes](#CHAP_Tasks.AssessmentReport.SqlServer.ColumnstoreIndexes)
+ [Check if memory optimized tables are a part of the task scope](#CHAP_Tasks.AssessmentReport.SqlServer.MemoryOptimized)
+ [Check if temporal tables are a part of the task scope](#CHAP_Tasks.AssessmentReport.SqlServer.TemporalTables)
+ [Check if delayed durability is enabled at the database level](#CHAP_Tasks.AssessmentReport.SqlServer.DelayedDurability)
+ [Check if accelerated data recovery is enabled at the database level](#CHAP_Tasks.AssessmentReport.SqlServer.AcceleratedRecovery)
+ [Check if table mapping has more than 10K tables with primary keys](#CHAP_Tasks.AssessmentReport.SqlServer.TableMapping)
+ [Check if the source database has tables or schema names with special characters.](#CHAP_Tasks.AssessmentReport.SqlServer.SpecialCharacters)
+ [Check if the source database has column names with masked data](#CHAP_Tasks.AssessmentReport.SqlServer.MaskedData)
+ [Check if the source database has encrypted backups](#CHAP_Tasks.AssessmentReport.SqlServer.EncryptedBackups)
+ [Check if the source database has backups stored at a URL or on Windows Azure.](#CHAP_Tasks.AssessmentReport.SqlServer.RemoteBackups)
+ [Check if the source database has backups on multiple disks](#CHAP_Tasks.AssessmentReport.SqlServer.MultipleDisks)
+ [Check if the source database has at least one full backup](#CHAP_Tasks.AssessmentReport.SqlServer.FullBackup)
+ [Check if the source database has sparse columns and columnar structure compression.](#CHAP_Tasks.AssessmentReport.SqlServer.SparseOrStructureCompression)
+ [Check if the source database instance has server level auditing for SQL Server 2008 or SQL Server 2008 R2](#CHAP_Tasks.AssessmentReport.SqlServer.Audit)
+ [Check if the source database has geometry columns for full LOB mode](#CHAP_Tasks.AssessmentReport.SqlServer.GeometryColumns)
+ [Check if the source database has columns with the Identity property.](#CHAP_Tasks.AssessmentReport.SqlServer.Identity)
+ [Check if the DMS user has FULL LOAD permissions](#CHAP_Tasks.AssessmentReport.SqlServer.FullLoadPermissions)
+ [Check if the DMS user has FULL LOAD and CDC or CDC only permissions](#CHAP_Tasks.AssessmentReport.SqlServer.FullLoadCDCPermissions)
+ [Check whether MS-Replication is enabled for CDC on on-premises or EC2 databases.](#CHAP_Tasks.AssessmentReport.SqlServer.IgnoreMsReplicationEnablement)
+ [Check if the DMS user has the VIEW DEFINITION permission.](#CHAP_Tasks.AssessmentReport.SqlServer.ViewDefinition)
+ [Check if the DMS user has the VIEW DATABASE STATE permission on the MASTER database for users without the Sysadmin role.](#CHAP_Tasks.AssessmentReport.SqlServer.ViewDatabaseState)
+ [Check if the DMS user has the VIEW SERVER STATE permission.](#CHAP_Tasks.AssessmentReport.SqlServer.)
+ [Validate if text repl size parameter is not unlimited](#CHAP_Tasks.AssessmentReport.Sqlserver.replsizeparameter)
+ [Validate if Primary Key or Unique Index exist on target for Batch Apply](#CHAP_Tasks.AssessmentReport.Sqlserver.batchapply)
+ [Validate if both Primary Key and Unique index exist on target when batch apply enabled](#CHAP_Tasks.AssessmentReport.Sqlserver.batchapplysimultaneously)
+ [Validate if table has primary key or unique index when DMS validation is enabled](#CHAP_Tasks.AssessmentReport.Sqlserver.dmsvalidation)
+ [Validate if AWS DMS user has necessary privileges to the target](#CHAP_Tasks.AssessmentReport.Sqlserver.dmsprivileges)
+ [Recommendation on using MaxFullLoadSubTasks setting](#CHAP_Tasks.AssessmentReport.Sqlserver.maxfullloadsubtask)
+ [Check Transformation Rule for Digits Randomize](#CHAP_Tasks.AssessmentReport.Sqlserver.gigits.randomise)
+ [Check Transformation Rule for Digits mask](#CHAP_Tasks.AssessmentReport.Sqlserver.digits.mask)
+ [Check Transformation Rule for Hashing mask](#CHAP_Tasks.AssessmentReport.Sqlserver.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.Sqlserver.all.digits.random)
+ [Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.Sqlserver.all.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.Sqlserver.all.digit.mask)
+ [Validate that at least one selected object exists in the source database](#CHAP_Tasks.AssessmentReport.Sqlserver.selection.rules)
+ [Validate that secondary constraints and indexes (non-primary) are present in the source database](#CHAP_Tasks.AssessmentReport.Sqlserver.secondary.constraints)
+ [Validate that target endpoint is not a read replica](#CHAP_Tasks.AssessmentReport.Sqlserver.target.replica)
+ [Validate backup chain](#CHAP_Tasks.AssessmentReport.Sqlserver.backup.chain)
+ [Check database user permissions for applying `EXCLUSIVE_AUTOMATIC_TRUNCATION` safeguard policy](#CHAP_Tasks.AssessmentReport.Sqlserver.safeguard.permission)
+ [Validate that secondary node connection and required safeguard attributes for AWS DMS source endpoint](#CHAP_Tasks.AssessmentReport.Sqlserver.node.safeguard.policy)
+ [Validate that endpoint has all required extra connection attributes (ECAs) when AWS DMS is connected to secondary node](#CHAP_Tasks.AssessmentReport.Sqlserver.node.without.eca)

## Validate if secondary indexes are enabled on the target database during full-load
<a name="CHAP_Tasks.AssessmentReport.SqlServer.SecondaryIndexesEnabled"></a>

**API key:** `sqlserver-check-secondary-indexes`

This premigration assessment validates whether secondary indexes are enabled during full-load on the target database. We recommend that you disable or remove secondary indexes.

For more information, [Best practices for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html).

## Validate that limited LOB mode only is used when `BatchApplyEnabled` is set to true
<a name="CHAP_Tasks.AssessmentReport.SqlServer.LimitedLOBMode"></a>

**API key:** `sqlserver-batch-apply-lob-mode`

This premigration assessment validates whether the DMS task includes LOB columns. If LOB columns are included into the scope of the task, you must use `BatchApplyEnabled` together with limited LOB mode only. We recommend that you create separate tasks for such tables and use transactional apply mode instead.

For more information, see [How can I use the DMS batch apply feature to improve CDC replication performance?](https://repost.aws/knowledge-center/dms-batch-apply-cdc-replication).

## Validate if target database has any triggers enabled on tables in the scope of the task
<a name="CHAP_Tasks.AssessmentReport.SqlServer.TargetDatabaseTriggersEnabled"></a>

**API key:** `sqlserver-check-for-triggers`

AWS DMS identified triggers in the target database that can impact the performance of the full-load DMS task and latency on target. Make sure that these triggers are disabled during a task run and enabled during the cut-over period.

## Check if tables in task scope contain computed columns
<a name="CHAP_Tasks.AssessmentReport.SqlServer.ComputedColumns"></a>

**API key:** `sqlserver-check-for-computed-fields`

This premigration assessment checks for the presence of computed columns. AWS DMS doesn't support replicating changes from SQL Server computed columns.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if tables in task scope have column store indexes
<a name="CHAP_Tasks.AssessmentReport.SqlServer.ColumnstoreIndexes"></a>

**API key:** `sqlserver-check-for-columnstore-indexes`

This premigration assessment checks for the presence of tables with columnstore indexes. AWS DMS doesn't support replicating changes from SQL Server tables with columnstore indexes.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if memory optimized tables are a part of the task scope
<a name="CHAP_Tasks.AssessmentReport.SqlServer.MemoryOptimized"></a>

**API key:** `sqlserver-check-for-memory-optimized-tables`

This premigration assessment checks for the presence of memory-optimized tables. AWS DMS doesn't support replicating changes from memory-optimized tables.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if temporal tables are a part of the task scope
<a name="CHAP_Tasks.AssessmentReport.SqlServer.TemporalTables"></a>

**API key:** `sqlserver-check-for-temporal-tables`

This premigration assessment checks for the presence of temporal tables. AWS DMS doesn't support replicating changes from temporal tables.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if delayed durability is enabled at the database level
<a name="CHAP_Tasks.AssessmentReport.SqlServer.DelayedDurability"></a>

**API key:** `sqlserver-check-for-delayed-durability`

This premigration assessment checks for the presence of delayed durability. AWS DMS doesn't support replicating changes from transactions that use delayed durability.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if accelerated data recovery is enabled at the database level
<a name="CHAP_Tasks.AssessmentReport.SqlServer.AcceleratedRecovery"></a>

**API key:** `sqlserver-check-for-accelerated-data-recovery`

This premigration assessment checks for the presence of accelerated data recovery. AWS DMS doesn't support replicating changes from databases with accelerated data recovery.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if table mapping has more than 10K tables with primary keys
<a name="CHAP_Tasks.AssessmentReport.SqlServer.TableMapping"></a>

**API key:** `sqlserver-large-number-of-tables`

This premigration assessment checks for the presence of more than 10,000 tables with primary keys. Databases configured with MS-Replication can experience task failures if there are too many tables with primary keys.

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

For more information about configuring MS-Replication, see [Capturing data changes for ongoing replication from SQL Server](CHAP_Source.SQLServer.CDC.md).

## Check if the source database has tables or schema names with special characters.
<a name="CHAP_Tasks.AssessmentReport.SqlServer.SpecialCharacters"></a>

**API key:** `sqlserver-check-for-special-characters`

This premigration assessment verifies whether the source database has table or schema names that include a character from the following set:

```
\\ -- \n \" \b \r ' \t ;
```

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the source database has column names with masked data
<a name="CHAP_Tasks.AssessmentReport.SqlServer.MaskedData"></a>

**API key:** `sqlserver-check-for-masked-data`

This premigration assessment verifies whether the source database has masked data. AWS DMS migrates masked data without masking.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the source database has encrypted backups
<a name="CHAP_Tasks.AssessmentReport.SqlServer.EncryptedBackups"></a>

**API key:** `sqlserver-check-for-encrypted-backups`

This premigration assessment verifies whether the source database has encrypted backups.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the source database has backups stored at a URL or on Windows Azure.
<a name="CHAP_Tasks.AssessmentReport.SqlServer.RemoteBackups"></a>

**API key:** `sqlserver-check-for-backup-url`

This premigration assessment verifies whether the source database has backups stored at a URL or on Windows Azure.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the source database has backups on multiple disks
<a name="CHAP_Tasks.AssessmentReport.SqlServer.MultipleDisks"></a>

**API key:** `sqlserver-check-for-backup-multiple-stripes`

This premigration assessment verifies whether the source database has backups on multiple disks.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the source database has at least one full backup
<a name="CHAP_Tasks.AssessmentReport.SqlServer.FullBackup"></a>

**API key:** `sqlserver-check-for-full-backup`

This premigration assessment verifies whether the source database has at least one full backup. SQL Server must be configured for full backup, and you must run a backup before replicating data.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the source database has sparse columns and columnar structure compression.
<a name="CHAP_Tasks.AssessmentReport.SqlServer.SparseOrStructureCompression"></a>

**API key:** `sqlserver-check-for-sparse-columns`

This premigration assessment verifies whether the source database has sparse columns and columnar structure compression. DMS doesn't support sparse columns and columnar structure compression.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the source database instance has server level auditing for SQL Server 2008 or SQL Server 2008 R2
<a name="CHAP_Tasks.AssessmentReport.SqlServer.Audit"></a>

**API key:** `sqlserver-check-for-audit-2008`

This premigration assessment verifies whether the source database has enabled server-level auditing for SQL Server 2008 or SQL Server 2008 R2. DMS has a related known issue with SQL Server 2008 and 2008 R2.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the source database has geometry columns for full LOB mode
<a name="CHAP_Tasks.AssessmentReport.SqlServer.GeometryColumns"></a>

**API key:** `sqlserver-check-for-geometry-columns`

This premigration assessment verifies whether the source database has geometry columns for full Large Object (LOB) mode when using SQL Server as a source. We recommend using limited LOB mode or setting the `InlineLobMaxSize` task setting to use inline LOB mode when your database includes geometry columns.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the source database has columns with the Identity property.
<a name="CHAP_Tasks.AssessmentReport.SqlServer.Identity"></a>

**API key:** `sqlserver-check-for-identity-columns`

This premigration assessment verifies whether the source database has a column with the `IDENTITY` property. DMS doesn't migrate this property to the corresponding target database column.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the DMS user has FULL LOAD permissions
<a name="CHAP_Tasks.AssessmentReport.SqlServer.FullLoadPermissions"></a>

**API key:** `sqlserver-check-user-permission-for-full-load-only`

This premigration assessment verifies whether the DMS task's user has permissions to run the task in FULL LOAD mode.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the DMS user has FULL LOAD and CDC or CDC only permissions
<a name="CHAP_Tasks.AssessmentReport.SqlServer.FullLoadCDCPermissions"></a>

**API key:** `sqlserver-check-user-permission-for-cdc`

This premigration assessment verifies whether the DMS User has permissions to run the task in `FULL LOAD and CDC` or `CDC only` modes.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check whether MS-Replication is enabled for CDC on on-premises or EC2 databases.
<a name="CHAP_Tasks.AssessmentReport.SqlServer.IgnoreMsReplicationEnablement"></a>

**API key:** `sqlserver-check-attribute-for-enable-ms-cdc-onprem`

Check whether MS-Replication is enabled for CDC on on-premises or EC2 databases.

For more information about configuring MS-Replication, see [Capturing data changes for self-managed SQL Server on-premises or on Amazon EC2](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.Selfmanaged).

## Check if the DMS user has the VIEW DEFINITION permission.
<a name="CHAP_Tasks.AssessmentReport.SqlServer.ViewDefinition"></a>

**API key:** `sqlserver-check-user-permission-on-view-definition`

This premigration assessment verifies whether the user specified in the endpoint settings has the `VIEW DEFINITION` permission. DMS requires the `VIEW DEFINITION` permission to view object definitions.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the DMS user has the VIEW DATABASE STATE permission on the MASTER database for users without the Sysadmin role.
<a name="CHAP_Tasks.AssessmentReport.SqlServer.ViewDatabaseState"></a>

**API key:** `sqlserver-check-user-permission-on-view-database-state`

This premigration assessment verifies whether the user specified in the endpoint settings has the `VIEW DATABASE STATE` permission. DMS requires this permission to access database objects in the MASTER database. DMS also requires this permission when the user doesn't have sysadmin privileges. DMS requires this permission to create functions, certificates, and logins, and to grant credentials.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Check if the DMS user has the VIEW SERVER STATE permission.
<a name="CHAP_Tasks.AssessmentReport.SqlServer."></a>

**API key:** `sqlserver-check-user-permission-on-view-server-state`

This premigration assessment checks if the user specified in the extra connection attributes (ECA) has the `VIEW SERVER STATE`permission. `VIEW SERVER STATE` is a server-level permission that allows a user to view server-wide information and state. This permission provides access to dynamic management views (DMVs) and dynamic management functions (DMFs) that expose information about the SQL Server instance. This permission is required for the DMS user to have access to CDC resources. This permission is required to run a DMS task in `FULL LOAD and CDC` or `CDC only` modes.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Validate if text repl size parameter is not unlimited
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.replsizeparameter"></a>

**API Key:**`sqlserver-check-for-max-text-repl-size`

Setting Max text repl size parameter on the database could potentially cause data migration error for LOB columns. DMS highly recommends setting it to -1.

For more information, see [Troubleshooting issues with Microsoft SQL Server](CHAP_Troubleshooting.md#CHAP_Troubleshooting.SQLServer).

## Validate if Primary Key or Unique Index exist on target for Batch Apply
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.batchapply"></a>

**API Key:**`sqlserver-check-batch-apply-target-pk-ui-absence`

Batch apply is only supported on tables with Primary Keys or Unique Indexes on the target table. Tables without Primary Keys or Unique Indexes causes the batch to fail, and changes are processed one by one. It is advisable to move such tables to their own tasks and utilize transactional apply mode instead. Alternatively, you can create a unique key on the target table.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Validate if both Primary Key and Unique index exist on target when batch apply enabled
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.batchapplysimultaneously"></a>

**API Key:**`sqlserver-check-batch-apply-target-pk-ui-simultaneously`

Batch apply is only supported on tables with Primary Keys or Unique Indexes on the target table. Tables with Primary Keys and Unique Indexes simultaneously causes the batch to fail, and changes are processed one by one. It is advisable to move such tables to their own tasks and utilize transactional apply mode instead. Alternatively, you can drop unique keys or primary key on the target table and rebuild it when migrating.

For more information, see [Limitations on using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations).

## Validate if table has primary key or unique index when DMS validation is enabled
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.dmsvalidation"></a>

**API Key:**`sqlserver-check-pk-validity`

Data validation requires that the table has a primary key or unique index on both source and target. 

For more information, see [AWS DMS data validation](CHAP_Validating.md).

## Validate if AWS DMS user has necessary privileges to the target
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.dmsprivileges"></a>

**API Key:**`sqlserver-check-target-privileges`

The AWS DMS user must have must have at least the db\$1owner user role on the target database.

For more information, see [Security requirements when using SQL Server as a target for AWS Database Migration Service](CHAP_Target.SQLServer.md#CHAP_Target.SQLServer.Security).

## Recommendation on using MaxFullLoadSubTasks setting
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.maxfullloadsubtask"></a>

**API Key:**`sqlserver-tblnum-for-max-fullload-subtasks`

This assessment checks the number of tables included in the task and recommends increasing the `MaxFullLoadSubTasks` parameter for optimal performance during the full load process. By default, AWS DMS migrates 8 tables simultaneously. Changing the `MaxFullLoadSubTasks` parameter to a higher value improves the full load performance.

For more information, see [Full-load task settings](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

## Check Transformation Rule for Digits Randomize
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.gigits.randomise"></a>

**API key**: `sqlserver-datamasking-digits-randomize`

This assessment validates whether columns used in table mappings are compatible with the Digits Randomize transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Check Transformation Rule for Digits mask
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.digits.mask"></a>

**API key**: `sqlserver-datamasking-digits-mask`

This assessment validates whether any columns used in the table mapping are not supported by the Digits Mask transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying Digits Mask transformations to such columns could cause DMS task failures since uniqueness cannot be guaranteed.

## Check Transformation Rule for Hashing mask
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.hash.mask"></a>

**API key**: `sqlserver-datamasking-hash-mask`

This assessment validates whether any of the columns used in the table mapping are not supported by the Hashing Mask transformation rule. It also checks if the length of the source column exceeds 64 characters. Ideally, the target column length should be greater than 64 characters to support hash masking. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.all.digits.random"></a>

**API key**: `all-to-all-validation-with-datamasking-digits-randomize`

This premigration assessment verifies that Data Validation setting and Data Masking Digit randomization are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.all.hash.mask"></a>

**API key**: `all-to-all-validation-with-datamasking-hash-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Hashing mask are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.all.digit.mask"></a>

**API key**: `all-to-all-validation-with-digit-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Digit mask are not simultaneously enabled, as these features are incompatible.

## Validate that at least one selected object exists in the source database
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.selection.rules"></a>

**API key**: `all-check-source-selection-rules`

This premigration assessment verifies that at least one object specified in the selection rules exists in the source database, including pattern matching for wildcard-based rules.

## Validate that secondary constraints and indexes (non-primary) are present in the source database
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.secondary.constraints"></a>

**API key**: `all-check-secondary-constraints`

This premigration assessment verifies that secondary constraints and indexes (foreign keys, check constraints, non-clustered indexes) are present in the source database.

## Validate that target endpoint is not a read replica
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.target.replica"></a>

**API key**: `all-check-target-read-replica`

This premigration assessment verifies that the target endpoint is not configured as a read replica. AWS DMS requires write access to the target database and cannot replicate to read-only replicas.

## Validate backup chain
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.backup.chain"></a>

**API key**: `sqlserver-check-for-backup-broken-chain`

This premigration assessment verifies that the source database backup chain is not broken. A broken backup chain can prevent AWS DMS from accessing transaction logs required for CDC replication.

## Check database user permissions for applying `EXCLUSIVE_AUTOMATIC_TRUNCATION` safeguard policy
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.safeguard.permission"></a>

**API key**: `sqlserver-safeguard-permissions`

This premigration assessment verifies whether the database user has the required permissions to use the `EXCLUSIVE_AUTOMATIC_TRUNCATION` safeguard policy. The user must grant SELECT permissions on the `dbo.syscategories` and `dbo.sysjobs` system objects to the dmsuser.

For more information, see [Endpoint settings when using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.ConnectionAttrib).

## Validate that secondary node connection and required safeguard attributes for AWS DMS source endpoint
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.node.safeguard.policy"></a>

**API key**: `sqlserver-check-sec-node-sg-policy`

This premigration assessment verifies that the source endpoint has the required extra connection attributes (ECAs) configured when connecting to a secondary node with safeguards enabled.

For more information, see [Endpoint settings when using SQL Server as a source for AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.ConnectionAttrib).

## Validate that endpoint has all required extra connection attributes (ECAs) when AWS DMS is connected to secondary node
<a name="CHAP_Tasks.AssessmentReport.Sqlserver.node.without.eca"></a>

**API key**: `sqlserver-check-sec-node-without-eca`

This premigration assessment verifies that all required extra connection attributes (ECAs) are configured when the source endpoint connects to a secondary node

For more information, see [Working with self-managed SQL Server AlwaysOn availability groups](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.AlwaysOn).

# MySQL assessments
<a name="CHAP_Tasks.AssessmentReport.MySQL"></a>

This section describes individual premigration assessments for migration tasks that use a MySQL, Aurora MySQL-Compatible Edition or Aurora MySQL-Compatible Edition Serverless source endpoint.

**Topics**
+ [Validate if Binary Log transaction compression is disabled](#CHAP_Tasks.AssessmentReport.MySQL.BinaryLogTransaction)
+ [Validate if DMS user has REPLICATION CLIENT and REPLICATION SLAVE permissions for the source database](#CHAP_Tasks.AssessmentReport.MySQL.ReplicationClientPermissions)
+ [Validate if DMS user has SELECT permissions for the source database tables](#CHAP_Tasks.AssessmentReport.MySQL.DMSUserSelectPermissions)
+ [Validate if the server\$1id is set to 1 or greater in the source database](#CHAP_Tasks.AssessmentReport.MySQL.ServerID)
+ [Validate if DMS user has necessary permissions for the MySQL database as a target](#CHAP_Tasks.AssessmentReport.MySQL.UserNecessaryPermissions)
+ [Validate if automatic removal of binary logs is set for the source database](#CHAP_Tasks.AssessmentReport.MySQL.BinaryLogAutomaticRemoval)
+ [Validate that limited LOB mode only is used when `BatchApplyEnabled` is set to true](#CHAP_Tasks.AssessmentReport.MySQL.LimitedLOBMode)
+ [Validate if a table uses a storage engine other than Innodb](#CHAP_Tasks.AssessmentReport.MySQL.Innodb)
+ [Validate if auto-increment is enabled on any tables used for migration](#CHAP_Tasks.AssessmentReport.MySQL.AutoIncrement)
+ [Validate if the database binlog image is set to `FULL` to support DMS CDC](#CHAP_Tasks.AssessmentReport.MySQL.BinlogImage)
+ [Validate if the source database is a MySQL Read-Replica](#CHAP_Tasks.AssessmentReport.MySQL.ReadReplica)
+ [Validate if a table has partitions, and recommend `target_table_prep_mode` for full-load task settings](#CHAP_Tasks.AssessmentReport.MySQL.FullLoadTaskSettings)
+ [Validate if DMS supports the database version](#CHAP_Tasks.AssessmentReport.MySQL.DatabaseVersion)
+ [Validate if the target database is configured to set `local_infile` to 1](#CHAP_Tasks.AssessmentReport.MySQL.LocalInfile)
+ [Validate if target database has tables with foreign keys](#CHAP_Tasks.AssessmentReport.MySQL.ForeignKeys)
+ [Validate if source tables in the task scope have cascade constraints](#CHAP_Tasks.AssessmentReport.MySQL.Cascade)
+ [Validate if the timeout values are appropriate for a MySQL source or target](#CHAP_Tasks.AssessmentReport.MySQL.Timeout)
+ [Validate `max_statement_time` database parameter](#CHAP_Tasks.AssessmentReport.MySQL.max_statement_time)
+ [Validate if Primary Key or Unique Index exist on target for Batch Apply](#CHAP_Tasks.AssessmentReport.MySQL.batchapply_absence)
+ [Validate if both Primary Key and Unique index exist on target for Batch Apply](#CHAP_Tasks.AssessmentReport.MySQL.batchapply_simul)
+ [Validate if secondary indexes are enabled during full load on the target database](#CHAP_Tasks.AssessmentReport.MySQL.secondaryindexes)
+ [Validate if table has primary key or unique index when DMS validation is enabled](#CHAP_Tasks.AssessmentReport.MySQL.pk_validity)
+ [Recommendation on using `MaxFullLoadSubTasks` setting](#CHAP_Tasks.AssessmentReport.MySQL.fullload_subtasks)
+ [Check Transformation Rule for Digits Randomize](#CHAP_Tasks.AssessmentReport.MySQL.digits.randomise)
+ [Check Transformation Rule for Digits mask](#CHAP_Tasks.AssessmentReport.MySQL.digits.mask)
+ [Check Transformation Rule for Hashing mask](#CHAP_Tasks.AssessmentReport.MYSQL.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.MYSQL.all.digits.random)
+ [Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.MYSQL.all.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.MYSQL.all.digit.mask)
+ [Check if source Amazon Aurora MySQL instance is not a read replica](#CHAP_Tasks.AssessmentReport.MYSQL.read.only)
+ [Check if binary log retention time is set properly](#CHAP_Tasks.AssessmentReport.MYSQL.retention.time)
+ [Check if source tables do not have invisible columns.](#CHAP_Tasks.AssessmentReport.MYSQL.invisible.columns)
+ [Validate if the database binlog format is set to ROW to support DMS CDC](#CHAP_Tasks.AssessmentReport.MYSQL.binlog.format)
+ [Validate that at least one selected object exists in the source database](#CHAP_Tasks.AssessmentReport.MYSQL.selection.rules)
+ [Validate that tables with generated columns exist in the source database](#CHAP_Tasks.AssessmentReport.MYSQL.generated.columns)
+ [Validate that skipTableSuspensionForPartitionDdl is enabled for partitioned tables](#CHAP_Tasks.AssessmentReport.MYSQL.tablepartition.ddl)
+ [Validate that max\$1allowed\$1packet size can handle source LOB columns](#CHAP_Tasks.AssessmentReport.MYSQL.maxallowed.packetlob)
+ [Validate that secondary constraints and indexes (non-primary) are present in the source database](#CHAP_Tasks.AssessmentReport.MYSQL.secondary.constraints)

## Validate if Binary Log transaction compression is disabled
<a name="CHAP_Tasks.AssessmentReport.MySQL.BinaryLogTransaction"></a>

**API key:** `mysql-check-binlog-compression`

This premigration assessment validates whether binary Log transaction compression is disabled. AWS DMS doesn't support binary log transaction compression.

For more information, see [ Limitations on using a MySQL database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Limitations).

## Validate if DMS user has REPLICATION CLIENT and REPLICATION SLAVE permissions for the source database
<a name="CHAP_Tasks.AssessmentReport.MySQL.ReplicationClientPermissions"></a>

**API key:** `mysql-check-replication-privileges`

This premigration assessment validates whether the DMS user specified in the source endpoint connection settings has `REPLICATION CLIENT` and `REPLICATION SLAVE` permissions for the source database if the DMS task migration type is CDC or full-load \$1 CDC.

For more information, see [ Using any MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Prerequisites).

## Validate if DMS user has SELECT permissions for the source database tables
<a name="CHAP_Tasks.AssessmentReport.MySQL.DMSUserSelectPermissions"></a>

**API key:** `mysql-check-select-privileges`

This premigration assessment validates whether the DMS user specified in the source endpoint connection settings has SELECT permissions for the source database tables.

For more information, see [ Using any MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Prerequisites).

## Validate if the server\$1id is set to 1 or greater in the source database
<a name="CHAP_Tasks.AssessmentReport.MySQL.ServerID"></a>

**API key:** `mysql-check-server-id`

This premigration assessment validates whether the `server_id` server variable is set to 1 or greater in the source database for CDC migration type.

For more information about sources for AWS DMS, see [ Using a self-managed MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.CustomerManaged).

## Validate if DMS user has necessary permissions for the MySQL database as a target
<a name="CHAP_Tasks.AssessmentReport.MySQL.UserNecessaryPermissions"></a>

**API key:** `mysql-check-target-privileges`

This premigration assessment validates whether the DMS user specified in the target endpoint connection settings has the necessary permissions for the MySQL database as a target.

For more information about MySQL source endpoint prerequisites, see [ Using any MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Prerequisites).

## Validate if automatic removal of binary logs is set for the source database
<a name="CHAP_Tasks.AssessmentReport.MySQL.BinaryLogAutomaticRemoval"></a>

**API key:** `mysql-check-expire-logs-days`

This premigration assessment validates whether your database is configured to automatically remove binary logs. The values of either `EXPIRE_LOGS_DAYS` or `BINLOG_EXPIRE_LOGS_SECONDS` global system variables should be greater than zero to prevent overuse of disk space during migration.

For more information about sources for AWS DMS, see [ Using a self-managed MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.CustomerManaged).

## Validate that limited LOB mode only is used when `BatchApplyEnabled` is set to true
<a name="CHAP_Tasks.AssessmentReport.MySQL.LimitedLOBMode"></a>

**API key:** `mysql-batch-apply-lob-mode`

This premigration assessment validates whether the DMS task includes LOB columns. If LOB columns are included into the scope of the task, you must use `BatchApplyEnabled` together with limited LOB mode only.

For more information about the `BatchApplyEnabled` setting, see [ How can I use the DMS batch apply feature to improve CDC replication performance?](https://repost.aws/knowledge-center/dms-batch-apply-cdc-replication).

## Validate if a table uses a storage engine other than Innodb
<a name="CHAP_Tasks.AssessmentReport.MySQL.Innodb"></a>

**API key:** `mysql-check-table-storage-engine`

This premigration assessment validates whether the storage engine used for any table in the Source MySQL database is an engine other than Innodb. DMS creates target tables with the InnoDB storage engine by default. If you need to use a storage engine other than InnoDB, you must manually create the table on the target database and configure your DMS task to use `TRUNCATE_BEFORE_LOAD` or `DO_NOTHING` as the full-load task setting. For more information about full-load task settings, see [Full-load task settings](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

**Note**  
This premigration assessment is not available for Aurora MySQL-Compatible Edition or Aurora MySQL-Compatible Edition Serverless.

For more information about MySQL endpoint limitations, see [Limitations on using a MySQL database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Limitations).

## Validate if auto-increment is enabled on any tables used for migration
<a name="CHAP_Tasks.AssessmentReport.MySQL.AutoIncrement"></a>

**API key:** `mysql-check-auto-increment`

This premigration assessment validates whether the source tables that are used in the task have auto-increment enabled. DMS doesn't migrate the AUTO\$1INCREMENT attribute on a column to a target database. 

For more information about MySQL endpoint limitations, see [Limitations on using a MySQL database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Limitations). For information about handling identity columns in MySQL, see [ Handle IDENTITY columns in AWS DMS: Part 2](https://aws.amazon.com/blogs/database/handle-identity-columns-in-aws-dms-part-2/).

## Validate if the database binlog image is set to `FULL` to support DMS CDC
<a name="CHAP_Tasks.AssessmentReport.MySQL.BinlogImage"></a>

**API key:** `mysql-check-binlog-image`

This premigration assessment checks whether the source database's binlog image is set to `FULL`. In MySQL, the `binlog_row_image` variable determines how a binary log event is written when using the `ROW` format. To ensure compatibility with DMS and support CDC, set the `binlog_row_image` variable to `FULL`. This setting ensures that DMS receives sufficient information to construct the full Data Manipulation Language (DML) for the target database during migration.

To set the binlog image to `FULL`, do the following:
+ For Amazon RDS, this value is `FULL` by default.
+ For databases hosed on-premises or on Amazon EC2, set the `binlog_row_image` value in `my.ini` (Microsoft Windows) or `my.cnf` (UNIX).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration. 

## Validate if the source database is a MySQL Read-Replica
<a name="CHAP_Tasks.AssessmentReport.MySQL.ReadReplica"></a>

**API key:** `mysql-check-database-role`

This premigration assessment verifies whether the source database is a read replica. To enable CDC support for DMS when connected to a read replica, set the `log_slave_updates` parameter to `True`. For more information about using a self-managed MySQL database, see [Using a self-managed MySQL-compatible database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.CustomerManaged).

To set the `log_slave_updates` value to `True`, do the following:
+ For Amazon RDS, use the database's parameter group. For information about using RDS database parameter groups, see [ Working with parameter groups ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) in the *Amazon RDS User Guide*.
+ For databases hosed on-premises or on Amazon EC2, set the `log_slave_updates` value in `my.ini` (Microsoft Windows) or `my.cnf` (UNIX).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration. 

## Validate if a table has partitions, and recommend `target_table_prep_mode` for full-load task settings
<a name="CHAP_Tasks.AssessmentReport.MySQL.FullLoadTaskSettings"></a>

**API key:** `mysql-check-table-partition`

This premigration assessment checks for the presence of tables with partitions in the source database. DMS creates tables without partitions on the MySQL target. To migrate partitioned tables to a partitioned table on the target, you must do the following:
+ Pre-create the partitioned tables in the target MySQL database.
+ Configure your DMS task to use `TRUNCATE_BEFORE_LOAD` or `DO_NOTHING` as the full-load task setting.

For more information about MySQL endpoint limitations, see [Limitations on using a MySQL database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Limitations).

## Validate if DMS supports the database version
<a name="CHAP_Tasks.AssessmentReport.MySQL.DatabaseVersion"></a>

**API key:** `mysql-check-supported-version`

This premigration assessment verifies whether the source database version is compatible with DMS. For more information about supported MySQL versions, see [Source endpoints for data migration](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.DataMigration).

## Validate if the target database is configured to set `local_infile` to 1
<a name="CHAP_Tasks.AssessmentReport.MySQL.LocalInfile"></a>

**API key:** `mysql-check-target-localinfile-set`

 This premigration assessment checks whether the `local_infile` parameter in the target database is set to 1. DMS requires the 'local\$1infile' parameter to be set to 1 during full load in your target database. For more information, see [Migrating from MySQL to MySQL using AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Homogeneous). 

This assessment is only valid for a full-load or full-load and CDC task.

## Validate if target database has tables with foreign keys
<a name="CHAP_Tasks.AssessmentReport.MySQL.ForeignKeys"></a>

**API key:** `mysql-check-fk-target`

This premigration assessment checks whether a full load or full and CDC task migrating to a MySQL database has tables with foreign keys. The default setting in DMS is to load tables in alphabetical order. Tables with foreign keys and referential integrity constraints can cause the load to fail, as the parent and child tables may not be loaded at the same time.

For more information about referential integrity in DMS, see **Working with indexes, triggers, and referential integrity constraints** in the [Improving the performance of an AWS DMS migration](CHAP_BestPractices.md#CHAP_BestPractices.Performance) topic.

## Validate if source tables in the task scope have cascade constraints
<a name="CHAP_Tasks.AssessmentReport.MySQL.Cascade"></a>

**API key:** `mysql-check-cascade-constraints`

This premigration assessment checks if any of the MySQL source tables have cascade constraints. Cascade constraints are not migrated or replicated by DMS tasks, because MySQL doesn't record the changes for these events in the binlog. While AWS DMS doesn't support these constraints, you can use workarounds for relational database targets.

For information about supporting cascase constrains and other constraints, see [Indexes, Foreign Keys, or Cascade Updates or Deletes Not Migrated](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.FKsAndIndexes) in the **Troubleshooting migration tasks in AWS DMS** topic.

## Validate if the timeout values are appropriate for a MySQL source or target
<a name="CHAP_Tasks.AssessmentReport.MySQL.Timeout"></a>

**API key:** `mysql-check-target-network-parameter`

This premigration assessment checks whether a task’s MySQL endpoint has the `net_read_timeout`, `net_write_timeout` and `wait_timeout` settings set to at least 300 seconds. This is needed to prevent disconnects during the migration.

For more information, see [Connections to a target MySQL instance are disconnected during a task](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.ConnectionDisconnect).

## Validate `max_statement_time` database parameter
<a name="CHAP_Tasks.AssessmentReport.MySQL.max_statement_time"></a>

**API key:** `mysql-check-max-statement-time`

Check source parameter - `max_Statement_time` for MySQL based sources. If there are tables larger than 1 billion, validate the value `max_Statement_time` and recommend setting to higher value to avoid any potential data loss.

## Validate if Primary Key or Unique Index exist on target for Batch Apply
<a name="CHAP_Tasks.AssessmentReport.MySQL.batchapply_absence"></a>

**API key:** `mysql-check-batch-apply-target-pk-ui-absence`

Batch apply is only supported on tables with Primary Keys or Unique Indexes on the target table. Tables without Primary Keys or Unique Indexes causes the batch to fail, and changes are processed one by one. It is advisable to move such tables to their own tasks and utilize transactional apply mode instead. Alternatively, you can create a unique key on the target table.

For more information, see [Using a MySQL-compatible database as a target for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html).

## Validate if both Primary Key and Unique index exist on target for Batch Apply
<a name="CHAP_Tasks.AssessmentReport.MySQL.batchapply_simul"></a>

**API key:** `mysql-check-batch-apply-target-pk-ui-simultaneously`

Batch apply is only supported on tables with Primary Keys or Unique Indexes on the target table. Tables with Primary Keys and Unique Indexes simultaneously causes the batch to fail, and changes are processed one by one. It is advisable to move such tables to their own tasks and utilize transactional apply mode instead. Alternatively, you can drop a unique key(s) or primary key on the target table and rebuild it if you are doing migration.

For more information, see [Using a MySQL-compatible database as a target for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html).

## Validate if secondary indexes are enabled during full load on the target database
<a name="CHAP_Tasks.AssessmentReport.MySQL.secondaryindexes"></a>

**API key:** `mysql-check-secondary-indexes`

Consider disabling or removing the secondary indexes from the target database. Secondary indexes can affect your migration performance during full load. It is advisable to enable secondary indexes before applying the cached changes.

For more information, see [Best practices for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html).

## Validate if table has primary key or unique index when DMS validation is enabled
<a name="CHAP_Tasks.AssessmentReport.MySQL.pk_validity"></a>

**API key:** `mysql-check-pk-validity`

Data validation requires that the table has a primary key or unique index.

For more information, see [AWS DMS data validation](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html).

## Recommendation on using `MaxFullLoadSubTasks` setting
<a name="CHAP_Tasks.AssessmentReport.MySQL.fullload_subtasks"></a>

**API key:** `mysql-tblnum-for-max-fullload-subtasks`

This assessment checks the number of tables included in the task and recommends increasing the `MaxFullLoadSubTasks` parameter for optimal performance during the full load process. By default, AWS DMS migrates 8 tables simultaneously. Changing the `MaxFullLoadSubTasks` parameter to a higher value improves the full load performance.

For more information, see [Full-load task settings](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.html).

## Check Transformation Rule for Digits Randomize
<a name="CHAP_Tasks.AssessmentReport.MySQL.digits.randomise"></a>

**API key**: `mysql-datamasking-digits-randomize`

This assessment validates whether columns used in table mappings are compatible with the Digits Randomize transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Check Transformation Rule for Digits mask
<a name="CHAP_Tasks.AssessmentReport.MySQL.digits.mask"></a>

**API key**: `mysql-datamasking-digits-mask`

This assessment validates whether any columns used in the table mapping are not supported by the Digits Mask transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying Digits Mask transformations to such columns could cause DMS task failures since uniqueness cannot be guaranteed.

## Check Transformation Rule for Hashing mask
<a name="CHAP_Tasks.AssessmentReport.MYSQL.hash.mask"></a>

**API key**: `mysql-datamasking-hash-mask`

This assessment validates whether any of the columns used in the table mapping are not supported by the Hashing Mask transformation rule. It also checks if the length of the source column exceeds 64 characters. Ideally, the target column length should be greater than 64 characters to support hash masking. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.MYSQL.all.digits.random"></a>

**API key**: `all-to-all-validation-with-datamasking-digits-randomize`

This premigration assessment verifies that Data Validation setting and Data Masking Digit randomization are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.MYSQL.all.hash.mask"></a>

**API key**: `all-to-all-validation-with-datamasking-hash-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Hashing mask are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.MYSQL.all.digit.mask"></a>

**API key**: `all-to-all-validation-with-digit-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Digit mask are not simultaneously enabled, as these features are incompatible.

## Check if source Amazon Aurora MySQL instance is not a read replica
<a name="CHAP_Tasks.AssessmentReport.MYSQL.read.only"></a>

**API key**: `mysql-check-aurora-read-only`

This premigration assessment validates whether migrating between two Amazon Aurora MySQL clusters, the source endpoint must be a read/write instance, not a replica instance.

## Check if binary log retention time is set properly
<a name="CHAP_Tasks.AssessmentReport.MYSQL.retention.time"></a>

**API key**: `mysql-check-binlog-retention-time`

This premigration assessment validates whether the value of 'binlog retention hours' is larger than 24 hours.

## Check if source tables do not have invisible columns.
<a name="CHAP_Tasks.AssessmentReport.MYSQL.invisible.columns"></a>

**API key**: `mysql-check-invisible-columns`

This premigration assessment validates whether source tables do not have invisible columns. AWS DMS does not migrate data from invisible columns in your source database.

## Validate if the database binlog format is set to ROW to support DMS CDC
<a name="CHAP_Tasks.AssessmentReport.MYSQL.binlog.format"></a>

**API key**: `mysql-check-binlog-format`

This premigration assessment validates whether the source database binlog format is configured to ROW to support Change Data Capture (CDC). To set the binlog format to ROW, do the following:
+ For Amazon RDS, use the database's parameter group. For information, see [Configuring MySQL binary logging for Single-AZ databases](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html) in the Amazon Relational Database Service User Guide. 
+ For databases hosed on-premises or on Amazon EC2, set the `binlog_format` value in `my.ini` (Microsoft Windows) or `my.cnf `(UNIX).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration. For more information about self-hosted MySQL servers, see [Using a self-managed MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.CustomerManaged).

## Validate that at least one selected object exists in the source database
<a name="CHAP_Tasks.AssessmentReport.MYSQL.selection.rules"></a>

**API key**: `all-check-source-selection-rules`

This premigration assessment verifies that at least one object specified in the selection rules exists in the source database, including pattern matching for wildcard-based rules.

## Validate that tables with generated columns exist in the source database
<a name="CHAP_Tasks.AssessmentReport.MYSQL.generated.columns"></a>

**API key**: `mysql-check-generated-columns`

This premigration assessment checks whether any of the MySQL source tables have generated columns. AWS DMS tasks don't migrate or replicate generated columns. For information about how to migrate generated columns, see [Limitations on using a MySQL database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Limitations).

## Validate that skipTableSuspensionForPartitionDdl is enabled for partitioned tables
<a name="CHAP_Tasks.AssessmentReport.MYSQL.tablepartition.ddl"></a>

**API key**: `mysql-check-skip-table-suspension-partition-ddl`

This premigration assessment detects partitioned tables in the source database and verifies the `skipTableSuspensionForPartitionDdl` parameter setting. Failure to set this parameter may result in unnecessary table suspensions during migration. For more details, refer to the following link: [Limitations on using a MySQL database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Limitations).

## Validate that max\$1allowed\$1packet size can handle source LOB columns
<a name="CHAP_Tasks.AssessmentReport.MYSQL.maxallowed.packetlob"></a>

**API key**: `mysql-check-max-allowed-packet-lob`

AWS DMS detects LOB columns in source tables that exceed your current `max_allowed_packet` setting. This mismatch can cause replication failures during data migration. For more information, see [Troubleshooting issues with MySQL](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL).

## Validate that secondary constraints and indexes (non-primary) are present in the source database
<a name="CHAP_Tasks.AssessmentReport.MYSQL.secondary.constraints"></a>

**API key**: `all-check-secondary-constraints`

This premigration assessment verifies that secondary constraints and indexes (foreign keys, check constraints, non-clustered indexes) are present in the source database.

# MariaDB assessments
<a name="CHAP_Tasks.AssessmentReport.MariaDB"></a>

This section describes individual premigration assessments for migration tasks that use a MariaDB source endpoint.

To create an individual premigration assessment using the AWS DMS API, use the listed API key for the `Include` parameter of the [ StartReplicationTaskAssessmentRun](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTaskAssessmentRun.html) action.

**Topics**
+ [Validate if the `server_id` is set to 1 or greater in the source database](#CHAP_Tasks.AssessmentReport.MariaDB.ServerID)
+ [Validate if automatic removal of binary logs is set for the source database](#CHAP_Tasks.AssessmentReport.MariaDB.AutomaticRemovalBinaryLogs)
+ [Validate that limited LOB mode only is used when BatchApplyEnabled is set to true](#CHAP_Tasks.AssessmentReport.MariaDB.LimitedLOBMode)
+ [Validate if Binary Log transaction compression is disabled](#CHAP_Tasks.AssessmentReport.MariaDB.BinaryLogTransactionCompression)
+ [Validate if DMS user has REPLICATION CLIENT and REPLICATION SLAVE privileges for the source database](#CHAP_Tasks.AssessmentReport.MariaDB.ReplicationClientSlavePrivileges)
+ [Validate if DMS user has SELECT permissions for the source database tables](#CHAP_Tasks.AssessmentReport.MariaDB.DMSUserSELECTPermissions)
+ [Validate if DMS user has necessary privileges for the MySQL-compatible database as a target](#CHAP_Tasks.AssessmentReport.MariaDB.DMSUserNecessaryPermissions)
+ [Validate if a table uses a storage engine other than Innodb](#CHAP_Tasks.AssessmentReport.MariaDB.Innodb)
+ [Validate if auto-increment is enabled on any tables used for migration](#CHAP_Tasks.AssessmentReport.MariaDB.AutoIncrement)
+ [Validate if the database binlog format is set to `ROW` to support DMS CDC](#CHAP_Tasks.AssessmentReport.MariaDB.BinlogFormat)
+ [Validate if the database binlog image is set to `FULL` to support DMS CDC](#CHAP_Tasks.AssessmentReport.MariaDB.BinlogImage)
+ [Validate if the source database is a MariaDB Read-Replica](#CHAP_Tasks.AssessmentReport.MariaDB.ReadReplica)
+ [Validate if a table has partitions, and recommend `TRUNCATE_BEFORE_LOAD` or `DO_NOTHING` for full-load task settings](#CHAP_Tasks.AssessmentReport.MariaDB.FullLoadTaskSettings)
+ [Validate if DMS supports the database version](#CHAP_Tasks.AssessmentReport.MariaDB.DatabaseVersion)
+ [Validate if the target database is configured to set `local_infile` to 1](#CHAP_Tasks.AssessmentReport.MariaDB.LocalInfile)
+ [Validate if target database has tables with foreign keys](#CHAP_Tasks.AssessmentReport.MariaDB.ForeignKeys)
+ [Validate if source tables in the task scope have cascade constraints](#CHAP_Tasks.AssessmentReport.MariaDB.Cascade)
+ [Validate if source tables in the task scope have generated columns](#CHAP_Tasks.AssessmentReport.MariaDB.GeneratedColumns)
+ [Validate if the timeout values are appropriate for a MariaDB source](#CHAP_Tasks.AssessmentReport.MariaDB.Timeout.Source)
+ [Validate if the timeout values are appropriate for a MariaDB target](#CHAP_Tasks.AssessmentReport.MariaDB.Timeout.Target)
+ [Validate `max_statement_time` database parameter](#CHAP_Tasks.AssessmentReport.MariaDB.database.parameter)
+ [Validate if Primary Key or Unique Index exist on target for Batch Apply](#CHAP_Tasks.AssessmentReport.MariaDB.batchapply)
+ [Validate if both Primary Key and Unique index exist on target for Batch Apply](#CHAP_Tasks.AssessmentReport.MariaDB.batchapply.simultaneous)
+ [Validate if secondary indexes are enabled during full load on the target database](#CHAP_Tasks.AssessmentReport.MariaDB.secondary.indexes)
+ [Validate if table has primary key or unique index when DMS validation is enabled](#CHAP_Tasks.AssessmentReport.MariaDB.dmsvalidation)
+ [Recommendation on using `MaxFullLoadSubTasks` setting](#CHAP_Tasks.AssessmentReport.MariaDB.maxfullload)
+ [Check Transformation Rule for Digits Randomize](#CHAP_Tasks.AssessmentReport.MariaDB.digits.randomize)
+ [Check Transformation Rule for Digits mask](#CHAP_Tasks.AssessmentReport.MariaDB.digits.mask)
+ [Check Transformation Rule for Hashing mask](#CHAP_Tasks.AssessmentReport.MariaDB.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.MariaDB.all.digits.random)
+ [Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.MariaDB.all.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.MariaDB.all.digit.mask)
+ [Check if binary log retention time is set properly](#CHAP_Tasks.AssessmentReport.MariaDB.retention.time)
+ [Check if source tables do not have invisible columns](#CHAP_Tasks.AssessmentReport.MariaDB.invisible.columns)
+ [Validate that at least one selected object exists in the source database](#CHAP_Tasks.AssessmentReport.MariaDB.selection.rules)
+ [Validate that `skipTableSuspensionForPartitionDdl` is enabled for partitioned tables](#CHAP_Tasks.AssessmentReport.MariaDB.suspension.ddl)
+ [Validate that secondary constraints and indexes (non-primary) are present in the source database](#CHAP_Tasks.AssessmentReport.MariaDB.secondary.constraints)

## Validate if the `server_id` is set to 1 or greater in the source database
<a name="CHAP_Tasks.AssessmentReport.MariaDB.ServerID"></a>

**API key:** `mariadb-check-server-id`

This premigration assessment validates whether the `server_id` server variable is set to 1 or greater in the source database for CDC migration type.

For more information about MariaDB endpoint limitations, see [ Using a self-managed MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.CustomerManaged).

## Validate if automatic removal of binary logs is set for the source database
<a name="CHAP_Tasks.AssessmentReport.MariaDB.AutomaticRemovalBinaryLogs"></a>

**API key:** `mariadb-check-expire-logs-days`

This premigration assessment validates whether your database is configured to automatically remove binary logs. The values of either `EXPIRE_LOGS_DAYS` or `BINLOG_EXPIRE_LOGS_SECONDS` global system variables should be greater than zero to prevent overuse of disk space during migration.

For more information about MariaDB endpoint limitations, see [ Using a self-managed MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.CustomerManaged).

## Validate that limited LOB mode only is used when BatchApplyEnabled is set to true
<a name="CHAP_Tasks.AssessmentReport.MariaDB.LimitedLOBMode"></a>

**API key:** `mariadb-batch-apply-lob-mode`

When LOB columns are included in the replication, you can use `BatchApplyEnabled` in limited LOB mode only. Using other options of the LOB mode will cause the batch to fail, and AWS DMS will process the changes one by one. We recommend that you move these tables to their own tasks and use transactional apply mode instead.

For more information about the `BatchApplyEnabled` setting, see [ How can I use the DMS batch apply feature to improve CDC replication performance?](https://repost.aws/knowledge-center/dms-batch-apply-cdc-replication).

## Validate if Binary Log transaction compression is disabled
<a name="CHAP_Tasks.AssessmentReport.MariaDB.BinaryLogTransactionCompression"></a>

**API key:** `mariadb-check-binlog-compression`

This premigration assessment validates whether Binary Log transaction compression is disabled. AWS DMS doesn't support binary log transaction compression.

For more information, see [ Limitations on using a MySQL database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Limitations).

## Validate if DMS user has REPLICATION CLIENT and REPLICATION SLAVE privileges for the source database
<a name="CHAP_Tasks.AssessmentReport.MariaDB.ReplicationClientSlavePrivileges"></a>

**API key:** `mariadb-check-replication-privileges`

This premigration assessment validates whether the DMS user specified in the source endpoint connection settings has `REPLICATION CLIENT` and `REPLICATION SLAVE` privileges for the source database, if the DMS task migration type is CDC or full-load \$1 CDC.

For more information, see [ Using any MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Prerequisites).

## Validate if DMS user has SELECT permissions for the source database tables
<a name="CHAP_Tasks.AssessmentReport.MariaDB.DMSUserSELECTPermissions"></a>

**API key:** `mariadb-check-select-privileges`

This premigration assessment validates whether the DMS user specified in the source endpoint connection settings has `SELECT` permissions for the source database tables.

For more information, see [ Using any MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Prerequisites).

## Validate if DMS user has necessary privileges for the MySQL-compatible database as a target
<a name="CHAP_Tasks.AssessmentReport.MariaDB.DMSUserNecessaryPermissions"></a>

**API key:** `mariadb-check-target-privileges`

This premigration assessment validates whether the DMS user specified in the target endpoint connection settings has necessary privileges for the MySQL-compatible database as a target.

For more information, see [ Using any MySQL-compatible database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Prerequisites).

## Validate if a table uses a storage engine other than Innodb
<a name="CHAP_Tasks.AssessmentReport.MariaDB.Innodb"></a>

**API key:** `mariadb-check-table-storage-engine`

This premigration assessment validates whether the storage engine used for any table in the Source MariaDB database is an engine other than Innodb. DMS creates target tables with the InnoDB storage engine by default. If you need to use a storage engine other than InnoDB, you must manually create the table on the target database and configure your DMS task to use `TRUNCATE_BEFORE_LOAD` or `DO_NOTHING` as the full-load task setting. For more information about full-load task settings, see [Full-load task settings](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

For more information about MariaDB endpoint limitations, see [Limitations on using a MySQL database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Limitations).

## Validate if auto-increment is enabled on any tables used for migration
<a name="CHAP_Tasks.AssessmentReport.MariaDB.AutoIncrement"></a>

**API key:** `mariadb-check-auto-increment`

This premigration assessment validates whether the source tables that are used in the task have auto-increment enabled. DMS doesn't migrate the AUTO\$1INCREMENT attribute on a column to a target database. 

For more information about MariaDB endpoint limitations, see [Limitations on using a MySQL database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Limitations). For information about handling identity columns in MariaDB, see [ Handle IDENTITY columns in AWS DMS: Part 2](https://aws.amazon.com/blogs/database/handle-identity-columns-in-aws-dms-part-2/).

## Validate if the database binlog format is set to `ROW` to support DMS CDC
<a name="CHAP_Tasks.AssessmentReport.MariaDB.BinlogFormat"></a>

**API key:** `mariadb-check-binlog-format`

This premigration assessment validates whether the source database binlog format is set to `ROW` to support DMS Change Data Capture (CDC). 

To set the binlog format to `ROW`, do the following:
+ For Amazon RDS, use the database's parameter group. For information about using an RDS parameter group, see [ Configuring MySQL binary logging](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html) in the *Amazon RDS User Guide*.
+ For databases hosed on-premises or on Amazon EC2, set the `binlog_format` value in `my.ini` (Microsoft Windows) or `my.cnf` (UNIX).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration. 

For more information about self-hosted MariaDB servers, see [Using a self-managed MySQL-compatible database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.CustomerManaged).

## Validate if the database binlog image is set to `FULL` to support DMS CDC
<a name="CHAP_Tasks.AssessmentReport.MariaDB.BinlogImage"></a>

**API key:** `mariadb-check-binlog-image`

This premigration assessment checks whether the source database's binlog image is set to `FULL`. In MariaDB, the `binlog_row_image` variable determines how a binary log event is written when using the `ROW` format. To ensure compatibility with DMS and support CDC, set the `binlog_row_image` variable to `FULL`. This setting ensures that DMS receives sufficient information to construct the full Data Manipulation Language (DML) for the target database during migration.

To set the binlog image to `FULL`, do the following:
+ For Amazon RDS, this value is `FULL` by default.
+ For databases hosed on-premises or on Amazon EC2, set the `binlog_row_image` value in `my.ini` (Microsoft Windows) or `my.cnf` (UNIX).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration. 

For more information about self-hosted MariaDB servers, see [Using a self-managed MySQL-compatible database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.CustomerManaged).

## Validate if the source database is a MariaDB Read-Replica
<a name="CHAP_Tasks.AssessmentReport.MariaDB.ReadReplica"></a>

**API key:** `mariadb-check-database-role`

This premigration assessment verifies whether the source database is a read replica. To enable CDC support for DMS when connected to a read replica, set the `log_slave_updates` parameter to `True`. For more information about using a self-managed MySQL database, see [Using a self-managed MySQL-compatible database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.CustomerManaged).

To set the `log_slave_updates` value to `True`, do the following:
+ For Amazon RDS, use the database's parameter group. For information about using RDS database parameter groups, see [ Working with parameter groups ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) in the *Amazon RDS User Guide*.
+ For databases hosed on-premises or on Amazon EC2, set the `log_slave_updates` value in `my.ini` (Microsoft Windows) or `my.cnf` (UNIX).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration. 

## Validate if a table has partitions, and recommend `TRUNCATE_BEFORE_LOAD` or `DO_NOTHING` for full-load task settings
<a name="CHAP_Tasks.AssessmentReport.MariaDB.FullLoadTaskSettings"></a>

**API key:** `mariadb-check-table-partition`

This premigration assessment checks for the presence of tables with partitions in the source database. DMS creates tables without partitions on the MariaDB target. To migrate partitioned tables to a partitioned table on the target, you must do the following:
+ Pre-create the partitioned tables in the target MariaDB database.
+ Configure your DMS task to use `TRUNCATE_BEFORE_LOAD` or `DO_NOTHING` as the full-load task setting.

For more information about MariaDB endpoint limitations, see [Limitations on using a MySQL database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Limitations).

## Validate if DMS supports the database version
<a name="CHAP_Tasks.AssessmentReport.MariaDB.DatabaseVersion"></a>

**API key:** `mariadb-check-supported-version`

This premigration assessment verifies whether the source database version is compatible with DMS. CDC is not supported with Amazon RDS MariaDB versions 10.4 or lower, or MySQL versions greater than 10.11. For more information about supported MariaDB versions, see [Source endpoints for data migration](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.DataMigration).

## Validate if the target database is configured to set `local_infile` to 1
<a name="CHAP_Tasks.AssessmentReport.MariaDB.LocalInfile"></a>

**API key:** `mariadb-check-target-localinfile-set`

 This premigration assessment checks whether the `local_infile` parameter in the target database is set to 1. DMS requires the 'local\$1infile' parameter to be set to 1 during full load in your target database. For more information, see [Migrating from MySQL to MySQL using AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Homogeneous). 

This assessment is only valid for a full-load task.

## Validate if target database has tables with foreign keys
<a name="CHAP_Tasks.AssessmentReport.MariaDB.ForeignKeys"></a>

**API key:** `mariadb-check-fk-target`

This premigration assessment checks whether a full load or full and CDC task migrating to a MariaDB database has tables with foreign keys. The default setting in DMS is to load tables in alphabetical order. Tables with foreign keys and referential integrity constraints can cause the load to fail, as the parent and child tables may not be loaded at the same time.

For more information about referential integrity in DMS, see **Working with indexes, triggers, and referential integrity constraints** in the [Improving the performance of an AWS DMS migration](CHAP_BestPractices.md#CHAP_BestPractices.Performance) topic.

## Validate if source tables in the task scope have cascade constraints
<a name="CHAP_Tasks.AssessmentReport.MariaDB.Cascade"></a>

**API key:** `mariadb-check-cascade-constraints`

This premigration assessment checks if any of the MariaDB source tables have cascade constraints. Cascade constraints are not migrated or replicated by DMS tasks, because MariaDB doesn't record the changes for these events in the binlog. While AWS DMS doesn't support these constraints, you can use workarounds for relational database targets.

For information about supporting cascase constrains and other constraints, see [Indexes, Foreign Keys, or Cascade Updates or Deletes Not Migrated](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.FKsAndIndexes) in the **Troubleshooting migration tasks in AWS DMS** topic.

## Validate if source tables in the task scope have generated columns
<a name="CHAP_Tasks.AssessmentReport.MariaDB.GeneratedColumns"></a>

**API key:** `mariadb-check-generated-columns`

This premigration assessment checks whether any of the MariaDB source tables have generated columns. DMS tasks don't migrate or replicate generated columns.

For information about how to migrate generated columns, see [Connections to a target MySQL instance are disconnected during a task](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.ConnectionDisconnect).

## Validate if the timeout values are appropriate for a MariaDB source
<a name="CHAP_Tasks.AssessmentReport.MariaDB.Timeout.Source"></a>

**API key:** `mariadb-check-source-network-parameter`

This premigration assessment checks whether a task’s MariaDB source endpoint has the `net_read_timeout`, `net_write_timeout` and `wait_timeout` settings set to at least 300 seconds. This is needed to prevent disconnects during the migration.

For more information, see [Connections to a target MySQL instance are disconnected during a task](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.ConnectionDisconnect).

## Validate if the timeout values are appropriate for a MariaDB target
<a name="CHAP_Tasks.AssessmentReport.MariaDB.Timeout.Target"></a>

**API key:** `mariadb-check-target-network-parameter`

This premigration assessment checks whether a task’s MariaDB target endpoint has the `net_read_timeout`, `net_write_timeout` and `wait_timeout` settings set to at least 300 seconds. This is needed to prevent disconnects during the migration.

For more information, see [Connections to a target MySQL instance are disconnected during a task](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.ConnectionDisconnect).

## Validate `max_statement_time` database parameter
<a name="CHAP_Tasks.AssessmentReport.MariaDB.database.parameter"></a>

**API key:**`mariadb-check-max-statement-time`

AWS DMS validates that the database source parameter `max_statement_time` is set to a value other than 0. It is required to set this parameter to 0 to accommodate the DMS full load process. You can consider changing the parameter value after the full load is completed, as setting it to a value other than 0 may result is loss of data.

## Validate if Primary Key or Unique Index exist on target for Batch Apply
<a name="CHAP_Tasks.AssessmentReport.MariaDB.batchapply"></a>

**API key:** `mariadb-check-batch-apply-target-pk-ui-absence`

Batch apply is only supported on tables with Primary Keys or Unique Indexes on the target table. Tables without Primary Keys or Unique Indexes will cause the batch to fail, and changes will be processed one by one. It is advisable to move such tables to their own tasks and utilize transactional apply mode instead. Alternatively, you can create a unique key on the target table. 

For more information, see [Using a MySQL-compatible database as a target for AWS Database Migration Service](CHAP_Target.MySQL.md).

## Validate if both Primary Key and Unique index exist on target for Batch Apply
<a name="CHAP_Tasks.AssessmentReport.MariaDB.batchapply.simultaneous"></a>

**API key:** `mariadb-check-batch-apply-target-pk-ui-simultaneously`

Batch apply is only supported on tables with Primary Keys or Unique Indexes on the target table. Tables with Primary Keys and Unique Indexes simultaneously cause the batch to fail, and changes are processed one by one. It is advisable to move such tables to their own tasks and utilize transactional apply mode instead. Alternatively, you can drop a unique key(s) or primary key on the target table and rebuild it if you are doing migration.

For more information, see [Using a MySQL-compatible database as a target for AWS Database Migration Service](CHAP_Target.MySQL.md).

## Validate if secondary indexes are enabled during full load on the target database
<a name="CHAP_Tasks.AssessmentReport.MariaDB.secondary.indexes"></a>

**API key:** `mariadb-check-secondary-indexes`

You must consider disabling or removing the secondary indexes from the target database. Secondary indexes can affect your migration performance during full load. It is advisable to enable secondary indexes before applying the cached changes.

For more information, see [Best practices for AWS Database Migration Service](CHAP_BestPractices.md).

## Validate if table has primary key or unique index when DMS validation is enabled
<a name="CHAP_Tasks.AssessmentReport.MariaDB.dmsvalidation"></a>

**API key:** `mariadb-check-pk-validity`

Data validation requires that the table has a primary key or unique index on both source and target.

For more information, see [AWS DMS data validation](CHAP_Validating.md).

## Recommendation on using `MaxFullLoadSubTasks` setting
<a name="CHAP_Tasks.AssessmentReport.MariaDB.maxfullload"></a>

This assessment checks the number of tables included in the task and recommends increasing the `MaxFullLoadSubTasks` parameter for optimal performance during the full load process. By default, AWS DMS migrates 8 tables simultaneously. Changing the `MaxFullLoadSubTasks` parameter to a higher value will improve the full load performance.

For more information, see [Full-load task settings](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

## Check Transformation Rule for Digits Randomize
<a name="CHAP_Tasks.AssessmentReport.MariaDB.digits.randomize"></a>

**API key**: `mariadb-datamasking-digits-randomize`

This assessment validates whether columns used in table mappings are compatible with the Digits Randomize transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Check Transformation Rule for Digits mask
<a name="CHAP_Tasks.AssessmentReport.MariaDB.digits.mask"></a>

**API key**: `mariadb-datamasking-digits-mask`

This assessment validates whether any columns used in the table mapping are not supported by the Digits Mask transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying Digits Mask transformations to such columns could cause DMS task failures since uniqueness cannot be guaranteed.

## Check Transformation Rule for Hashing mask
<a name="CHAP_Tasks.AssessmentReport.MariaDB.hash.mask"></a>

**API key**: `mariadb-datamasking-hash-mask`

This assessment validates whether any of the columns used in the table mapping are not supported by the Hashing Mask transformation rule. It also checks if the length of the source column exceeds 64 characters. Ideally, the target column length should be greater than 64 characters to support hash masking. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.MariaDB.all.digits.random"></a>

**API key**: `all-to-all-validation-with-datamasking-digits-randomize`

This premigration assessment verifies that Data Validation setting and Data Masking Digit randomization are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.MariaDB.all.hash.mask"></a>

**API key**: `all-to-all-validation-with-datamasking-hash-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Hashing mask are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.MariaDB.all.digit.mask"></a>

**API key**: `all-to-all-validation-with-digit-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Digit mask are not simultaneously enabled, as these features are incompatible.

## Check if binary log retention time is set properly
<a name="CHAP_Tasks.AssessmentReport.MariaDB.retention.time"></a>

**API key**: `mariadb-check-binlog-retention-time`

This premigration assessment validates whether the value of '`binlog retention hours`' is larger than 24 hours.

## Check if source tables do not have invisible columns
<a name="CHAP_Tasks.AssessmentReport.MariaDB.invisible.columns"></a>

**API key**: `mariadb-check-invisible-columns`

This premigration assessment validates whether source tables do not have invisible columns. AWS DMS does not migrate data from invisible columns in your source database.

## Validate that at least one selected object exists in the source database
<a name="CHAP_Tasks.AssessmentReport.MariaDB.selection.rules"></a>

**API key**: `all-check-source-selection-rules`

This premigration assessment verifies that at least one object specified in the selection rules exists in the source database, including pattern matching for wildcard-based rules.

## Validate that `skipTableSuspensionForPartitionDdl` is enabled for partitioned tables
<a name="CHAP_Tasks.AssessmentReport.MariaDB.suspension.ddl"></a>

**API key**: `mariadb-check-skip-table-suspension-partition-ddl`

This premigration assessment detects partitioned tables in the source database and verifies the `skipTableSuspensionForPartitionDdl` parameter setting. Failure to set this parameter may result in unnecessary table suspensions during migration. 

For more information, see [Limitations on using a MySQL database as a source for AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.Limitations).

## Validate that secondary constraints and indexes (non-primary) are present in the source database
<a name="CHAP_Tasks.AssessmentReport.MariaDB.secondary.constraints"></a>

**API key**: `all-check-secondary-constraints`

This premigration assessment verifies that secondary constraints and indexes (foreign keys, check constraints, non-clustered indexes) are present in the source database.

# PostgreSQL assessments
<a name="CHAP_Tasks.AssessmentReport.PG"></a>

This section describes individual premigration assessments for migration tasks that use a PostgreSQL source endpoint.

**Topics**
+ [Validate if DDL event trigger is set to ENABLE ALWAYS](#CHAP_Tasks.AssessmentReport.PG.DDLEventTrigger)
+ [Validate if PostGIS columns exist in the source database](#CHAP_Tasks.AssessmentReport.PG.PostGISColumns)
+ [Validate if foreign key constraint is disabled on the target tables during the full-load process](#CHAP_Tasks.AssessmentReport.PG.ForeignKeyConstraintDisabled)
+ [Validate if tables with similar names exist](#CHAP_Tasks.AssessmentReport.PG.ValidateSimilarNames)
+ [Validate if there are tables with ARRAY data type without a primary key](#CHAP_Tasks.AssessmentReport.PG.ValidateArrayWithoutPrimaryKey)
+ [Validate if primary keys or unique indexes exist on the target tables when BatchApplyEnabled is enabled](#CHAP_Tasks.AssessmentReport.PG.PrimaryKeysUniqueIndexes)
+ [Validate if any table of the target database has secondary indexes for the full-load migration task](#CHAP_Tasks.AssessmentReport.PG.TargetDatabaseSecondaryIndexes)
+ [Validate that limited LOB mode only is used when BatchApplyEnabled is set to true](#CHAP_Tasks.AssessmentReport.PG.LimitedLOBMode)
+ [Validate if source database version is supported by DMS for migration](#CHAP_Tasks.AssessmentReport.PG.SourceVersion)
+ [Validate the `logical_decoding_work_mem` parameter on the source database](#CHAP_Tasks.AssessmentReport.PG.LogicalDecoding)
+ [Validate whether the source database has any long running transactions](#CHAP_Tasks.AssessmentReport.PG.LongRunning)
+ [Validate the source database parameter `max_slot_wal_keep_size`](#CHAP_Tasks.AssessmentReport.PG.)
+ [Check if the source database parameter `postgres-check-maxwalsenders` is set to support CDC.](#CHAP_Tasks.AssessmentReport.PG.MaxWalSenders)
+ [Check if the source database is configured for `PGLOGICAL`](#CHAP_Tasks.AssessmentReport.PG.pglogical)
+ [Validate if the source table primary key is of LOB Datatype](#CHAP_Tasks.AssessmentReport.PG.pklob)
+ [Validate if the source table has a primary key](#CHAP_Tasks.AssessmentReport.PG.pk)
+ [Validate if prepared transactions are present on the source database](#CHAP_Tasks.AssessmentReport.PG.preparedtransactions)
+ [Validate if `wal_sender_timeout` is set to a minimum required value to support DMS CDC](#CHAP_Tasks.AssessmentReport.PG.waltime)
+ [Validate if `wal_level` is set to logical on the source database](#CHAP_Tasks.AssessmentReport.PG.wallevel)
+ [Validate if both Primary Key and Unique index exist on target for Batch Apply](#CHAP_Tasks.AssessmentReport.PG.batchapply)
+ [Recommend Max LOB setting when LOB objects are found](#CHAP_Tasks.AssessmentReport.PG.lobsize)
+ [Validate if table has primary key or unique index and its state is well when DMS validation is enabled](#CHAP_Tasks.AssessmentReport.PG.pkvalidity)
+ [Validate if AWS DMS user has necessary privileges to the target](#CHAP_Tasks.AssessmentReport.PG.targetprivileges)
+ [Validates availability of free replication slots for CDC](#CHAP_Tasks.AssessmentReport.PG.slotscount)
+ [Verify DMS User Full Load Permissions](#CHAP_Tasks.AssessmentReport.PG.object.privileges)
+ [Check Transformation Rule for Digits Randomize](#CHAP_Tasks.AssessmentReport.PG.digits.randomize)
+ [Check Transformation Rule for Digits mask](#CHAP_Tasks.AssessmentReport.PG.digits.mask)
+ [Check Transformation Rule for Hashing mask](#CHAP_Tasks.AssessmentReport.PG.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.PG.all.digit.random)
+ [Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.PG.all.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.PG.all.digit.mask)
+ [Validate that at least one selected object exists in the source database](#CHAP_Tasks.AssessmentReport.PG.selection.rules)
+ [Validate that target PostgreSQL database contains generated columns](#CHAP_Tasks.AssessmentReport.PG.target.generatedcol)
+ [Validate that materialized views exist in homogeneous PostgreSQL migrations](#CHAP_Tasks.AssessmentReport.PG.mat.views)
+ [Validate that REPLICA IDENTITY FULL conflicts with pglogical plugin usage](#CHAP_Tasks.AssessmentReport.PG.repl.identity.full)
+ [Validate that secondary constraints and indexes (non-primary) are present in the source database](#CHAP_Tasks.AssessmentReport.PG.secondary.constraints)
+ [Validate CHAR/VARCHAR columns compatibility for migration to Oracle](#CHAP_Tasks.AssessmentReport.PG.varchar.columns)
+ [Validate that `idle_in_transaction_session_timeout` setting is configured on the source database](#CHAP_Tasks.AssessmentReport.PG.transaction.session)
+ [Validate that AWS DMS user has required roles for AWS-managed PostgreSQL databases](#CHAP_Tasks.AssessmentReport.PG.rds.roles)
+ [Validate that the target endpoint is not a read replica](#CHAP_Tasks.AssessmentReport.PG.read.replica)
+ [Verify source Aurora PostgreSQL read replica version](#CHAP_Tasks.AssessmentReport.PG.Aurorasource.replica.version)
+ [Verify source PostgreSQL read replica version](#CHAP_Tasks.AssessmentReport.PG.source.replica.version)

## Validate if DDL event trigger is set to ENABLE ALWAYS
<a name="CHAP_Tasks.AssessmentReport.PG.DDLEventTrigger"></a>

 **API key:** `postgres-check-ddl-event-trigger` 

 This premigration assessment validates whether the DDL event trigger is set to `ENABLE ALWAYS`. When your source database is also a target for another third–party replication system, DDL changes might not migrate during CDC. This situation can prevent DMS from triggering the the `awsdms_intercept_ddl` event. To work around the situation, modify the trigger on your source database like in the follwoing example: 

```
alter event trigger awsdms_intercept_ddl enable always;
```

For more information, see [ Limitations on using a PostgreSQL database as a DMS source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.Limitations).

## Validate if PostGIS columns exist in the source database
<a name="CHAP_Tasks.AssessmentReport.PG.PostGISColumns"></a>

 **API key:** `postgres-check-postgis-data-type` 

 This premigration assessment validates whether the columns of PostGIS data type that exist in case source and target engines are different. AWS DMS supports the PostGIS data type only for homogeneous (like-to-like) migrations. 

For more information, see [ Limitations on using a PostgreSQL database as a DMS source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.Limitations).

## Validate if foreign key constraint is disabled on the target tables during the full-load process
<a name="CHAP_Tasks.AssessmentReport.PG.ForeignKeyConstraintDisabled"></a>

 **API key:** `postgres-check-session-replication-role` 

 This premigration assessment validates whether the `session_replication_role parameter` is set to `REPLICA` on the target to disable foreign key constraints during full-load phase. For full-load migration types, you should disabled foreign key constraints. 

For more information about PostgreSQL endpoint limitations, see [ Using a PostgreSQL database as a target for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html).

## Validate if tables with similar names exist
<a name="CHAP_Tasks.AssessmentReport.PG.ValidateSimilarNames"></a>

 **API key:** `postgres-check-similar-table-name` 

 This premigration assessment validates whether there are tables with similar names on the source. Having multiple tables with the same name written in different case can cause unpredictable behaviors during replication. 

For more information about PostgreSQL endpoint limitations, see [ Limitations on using a PostgreSQL database as a DMS source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.Limitations).

## Validate if there are tables with ARRAY data type without a primary key
<a name="CHAP_Tasks.AssessmentReport.PG.ValidateArrayWithoutPrimaryKey"></a>

 **API key:** `postgres-check-table-with-array` 

 This premigration assessment validates whether there are tables with array data type without a primary key. A table with an `ARRAY` data type missing a primary key is ignored during the full-load. 

For more information about PostgreSQL endpoint limitations, see [ Limitations on using a PostgreSQL database as a DMS source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.Limitations).

## Validate if primary keys or unique indexes exist on the target tables when BatchApplyEnabled is enabled
<a name="CHAP_Tasks.AssessmentReport.PG.PrimaryKeysUniqueIndexes"></a>

 **API key:** `postgres-check-batch-apply-target-pk-ui-absence` 

 Batch apply is only supported on tables with primary keys or unique indexes on the target table. Tables without primary keys or unique indexes will cause the batch to fail, and AWS DMS will process the changes one by one. We recommend that you create separate tasks for such tables and use transactional apply mode instead. Alternatively, you can create a unique key on the target table. 

For more information, see [ Using a PostgreSQL database as a target for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html).

## Validate if any table of the target database has secondary indexes for the full-load migration task
<a name="CHAP_Tasks.AssessmentReport.PG.TargetDatabaseSecondaryIndexes"></a>

 **API key:** `postgres-check-target-secondary-indexes` 

 This premigration assessment validates whether there are tables with secondary indexes in the scope of the full-load migration task. We recommend that you drop the secondary indexes for the duration of the full-load task. 

For more information, see [ Using a PostgreSQL database as a target for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html).

## Validate that limited LOB mode only is used when BatchApplyEnabled is set to true
<a name="CHAP_Tasks.AssessmentReport.PG.LimitedLOBMode"></a>

 **API key:** `postgres-batch-apply-lob-mode` 

 When LOB columns are included in the replication, you can use `BatchApplyEnabled` in limited LOB mode only. Using other options of the LOB mode will cause the batch to fail, and AWS DMS will process changes one by one. We recommend that you move these tables to their own tasks and use transactional apply mode instead. 

For more information about the `BatchApplyEnabled` setting, see [ How can I use the DMS batch apply feature to improve CDC replication performance?](https://repost.aws/knowledge-center/dms-batch-apply-cdc-replication).

## Validate if source database version is supported by DMS for migration
<a name="CHAP_Tasks.AssessmentReport.PG.SourceVersion"></a>

**API key:** `postgres-check-dbversion`

This premigration assessment verifies whether the source database version is compatible with AWS DMS.

## Validate the `logical_decoding_work_mem` parameter on the source database
<a name="CHAP_Tasks.AssessmentReport.PG.LogicalDecoding"></a>

**API key:** `postgres-check-for-logical-decoding-work-mem` 

This premigration assessment recommends tuning the `logical_decoding_work_mem` parameter on the source database. On a highly transactional database where you might have long running transactions or many sub-transactions, it may result in increased logical decoding memory consumption and the need to spill to disk. This results in high DMS source latency during replication. In such scenarios, you might need to tune `logical_decoding_work_mem`. This parameter is supported in PostgreSQL versions 13 and greater.

## Validate whether the source database has any long running transactions
<a name="CHAP_Tasks.AssessmentReport.PG.LongRunning"></a>

**API key:** `postgres-check-longrunningtxn` 

This premigration assessment verifies whether the source database has any long running transactions which lasted more than 10 minutes. Starting the task might fail, because by default, DMS checks for any open transactions while starting the task.

## Validate the source database parameter `max_slot_wal_keep_size`
<a name="CHAP_Tasks.AssessmentReport.PG."></a>

**API key:** `postgres-check-maxslot-wal-keep-size` 

This premigration assessment verifies the value configured for `max_slot_wal_keep_size`. When `max_slot_wal_keep_size` is set to a non-default value, the DMS task may fail due to the removal of required WAL files.

## Check if the source database parameter `postgres-check-maxwalsenders` is set to support CDC.
<a name="CHAP_Tasks.AssessmentReport.PG.MaxWalSenders"></a>

**API key:** `postgres-check-maxwalsenders` 

This premigration assessment verifies the value configured for `max_wal_senders` on the source database. DMS requires `max_wal_senders` to be set greater than 1 to support Change Data Capture (CDC).

## Check if the source database is configured for `PGLOGICAL`
<a name="CHAP_Tasks.AssessmentReport.PG.pglogical"></a>

**API key:** `postgres-check-pglogical` 

 This premigration assessment verifies if the `shared_preload_libraries` value is set to `pglogical` to support `PGLOGICAL` for CDC. Note that you can ignore this assessment if you are planning to use test decoding for logical replication.

## Validate if the source table primary key is of LOB Datatype
<a name="CHAP_Tasks.AssessmentReport.PG.pklob"></a>

**API key:** `postgres-check-pk-lob` 

This premigration assessment verifies if a table's primary key is of Large Object (LOB) datatype. DMS does not support replication if the source table has an LOB column as a primary key. 

## Validate if the source table has a primary key
<a name="CHAP_Tasks.AssessmentReport.PG.pk"></a>

**API key:** `postgres-check-pk` 

This premigration assessment verifies if primary keys exist for the tables used in the task scope. DMS doesn’t support replication for tables without primary keys, unless the replica identity is set to `full` on the source table. 

## Validate if prepared transactions are present on the source database
<a name="CHAP_Tasks.AssessmentReport.PG.preparedtransactions"></a>

**API key:** `postgres-check-preparedtxn` 

This premigration assessment verifies if there are any prepared transactions present on the source database. Replication slot creation might stop responding if there are any prepared transactions on the source database.

## Validate if `wal_sender_timeout` is set to a minimum required value to support DMS CDC
<a name="CHAP_Tasks.AssessmentReport.PG.waltime"></a>

**API key:** `postgres-check-walsenderstimeout` 

This premigration assessment verifies if `wal_sender_timeout` is set to a minimum of 10000 milliseconds (10 seconds). A DMS task with CDC requires a minimum of 10000 milliseconds (10 seconds), and fails if the value is less than 10000. 

## Validate if `wal_level` is set to logical on the source database
<a name="CHAP_Tasks.AssessmentReport.PG.wallevel"></a>

**API key:** `postgres-check-wallevel`

 This premigration assessment verifies if `wal_level` is set to logical. For DMS CDC to work, this parameter needs to be enabled on the source database.

## Validate if both Primary Key and Unique index exist on target for Batch Apply
<a name="CHAP_Tasks.AssessmentReport.PG.batchapply"></a>

**API key:** `postgres-check-batch-apply-target-pk-ui-simultaneously`

Batch apply is only supported on tables with Primary Keys or Unique Indexes on the target table. Tables with Primary Keys and Unique Indexes simultaneously cause the batch to fail, and changes are processed one by one. It is advisable to move such tables to their own tasks and utilize transactional apply mode instead. Alternatively, you can drop a unique key(s) or primary key on the target table and rebuild it if you are doing migration.

For more information, see [Enabling CDC using a self-managed PostgreSQL database as a AWS DMS source](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Prerequisites.CDC).

## Recommend Max LOB setting when LOB objects are found
<a name="CHAP_Tasks.AssessmentReport.PG.lobsize"></a>

**API key:** `postgres-check-limited-lob-size`

The LOB Size Calculation for PostgreSQL is different from other Engine. Ensure you are setting the right Maximum LOB size on your task setting to avoid any data truncation.

For more information, see [AWS DMS data validation](CHAP_Validating.md).

## Validate if table has primary key or unique index and its state is well when DMS validation is enabled
<a name="CHAP_Tasks.AssessmentReport.PG.pkvalidity"></a>

**API key:** `postgres-check-pk-validity`

Data validation requires that the table has a primary key or unique index.

For more information, see [AWS DMS data validation](CHAP_Validating.md).

## Validate if AWS DMS user has necessary privileges to the target
<a name="CHAP_Tasks.AssessmentReport.PG.targetprivileges"></a>

**API key:** `postgres-check-target-privileges`

The AWS DMS user must have at least the db\$1owner user role on the target database.

For more information, see [Security requirements when using a PostgreSQL database as a target for AWS Database Migration Service](CHAP_Target.PostgreSQL.md#CHAP_Target.PostgreSQL.Security).

## Validates availability of free replication slots for CDC
<a name="CHAP_Tasks.AssessmentReport.PG.slotscount"></a>

**API key**: `postgres-check-replication-slots-count`

This assessment validates whether replication slots are available for CDC to replicate changes.

## Verify DMS User Full Load Permissions
<a name="CHAP_Tasks.AssessmentReport.PG.object.privileges"></a>

**API key**: `postgres-check-select-object-privileges`

This assessment validates whether the DMS user has the necessary SELECT privileges on tables required for Full Load operations.

## Check Transformation Rule for Digits Randomize
<a name="CHAP_Tasks.AssessmentReport.PG.digits.randomize"></a>

**API key**: `postgres-datamasking-digits-randomize`

This assessment validates whether columns used in table mappings are compatible with the Digits Randomize transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Check Transformation Rule for Digits mask
<a name="CHAP_Tasks.AssessmentReport.PG.digits.mask"></a>

**API key**: `postgres-datamasking-digits-mask`

This assessment validates whether any columns used in the table mapping are not supported by the Digits Mask transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying Digits Mask transformations to such columns could cause DMS task failures since uniqueness cannot be guaranteed.

## Check Transformation Rule for Hashing mask
<a name="CHAP_Tasks.AssessmentReport.PG.hash.mask"></a>

**API key**: `postgres-datamasking-hash-mask`

This assessment validates whether any of the columns used in the table mapping are not supported by the Hashing Mask transformation rule. It also checks if the length of the source column exceeds 64 characters. Ideally, the target column length should be greater than 64 characters to support hash masking. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.PG.all.digit.random"></a>

**API key**: `all-to-all-validation-with-datamasking-digits-randomize`

This premigration assessment verifies that Data Validation setting and Data Masking Digit randomization are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.PG.all.hash.mask"></a>

**API key**: `all-to-all-validation-with-datamasking-hash-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Hashing mask are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.PG.all.digit.mask"></a>

**API key**: `all-to-all-validation-with-digit-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Digit mask are not simultaneously enabled, as these features are incompatible.

## Validate that at least one selected object exists in the source database
<a name="CHAP_Tasks.AssessmentReport.PG.selection.rules"></a>

**API key**: `all-check-source-selection-rules`

This premigration assessment verifies that at least one object specified in the selection rules exists in the source database, including pattern matching for wildcard-based rules.

## Validate that target PostgreSQL database contains generated columns
<a name="CHAP_Tasks.AssessmentReport.PG.target.generatedcol"></a>

**API key**: `postgres-check-target-generated-cols`

This premigration assessment validates whether the target PostgreSQL database contains any generated columns (including both STORED and VIRTUAL types) that may require special handling during migration. Generated columns, which compute their values from other columns, need specific verification to ensure compatibility with the target PostgreSQL version and proper data consistency after migration. 

## Validate that materialized views exist in homogeneous PostgreSQL migrations
<a name="CHAP_Tasks.AssessmentReport.PG.mat.views"></a>

**API key**: `postgres-check-materialized-views`

When migrating between PostgreSQL databases, AWS DMS cannot migrate materialized views. Materialized views must be manually created on your target database after migration.

For more information, see [Limitations on using a PostgreSQL database as a DMS source](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Limitations).

## Validate that REPLICA IDENTITY FULL conflicts with pglogical plugin usage
<a name="CHAP_Tasks.AssessmentReport.PG.repl.identity.full"></a>

**API key**: `postgres-check-pglogical-replica-identity-full`

This premigration assessment detects tables using REPLICA IDENTITY FULL. While REPLICA IDENTITY FULL is supported using the test\$1decoding plugin, using it with pglogical will prevent updates from being replicated correctly. Either change the REPLICA IDENTITY setting to DEFAULT/INDEX, or switch to a test\$1decoding plugin to maintain REPLICA IDENTITY FULL

For more information, see [Enabling change data capture (CDC) using logical replication](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Security).

## Validate that secondary constraints and indexes (non-primary) are present in the source database
<a name="CHAP_Tasks.AssessmentReport.PG.secondary.constraints"></a>

**API key**: `all-check-secondary-constraints`

This premigration assessment verifies that secondary constraints and indexes (foreign keys, check constraints, non-clustered indexes) are present in the source database.

## Validate CHAR/VARCHAR columns compatibility for migration to Oracle
<a name="CHAP_Tasks.AssessmentReport.PG.varchar.columns"></a>

**API key**: `postgres-to-oracle-check-varchar-columns`

This premigration assessment verifies that NCHAR/NVARCHAR2 data type columns used in the target database are compatible with CHAR/VARCHAR columns in the source database.

## Validate that `idle_in_transaction_session_timeout` setting is configured on the source database
<a name="CHAP_Tasks.AssessmentReport.PG.transaction.session"></a>

**API key**: `postgres-check-idle-in-transaction-session-timeout`

This premigration assessment verifies that the `idle_in_transaction_session_timeout` parameter is not set to 0 on the source database.

## Validate that AWS DMS user has required roles for AWS-managed PostgreSQL databases
<a name="CHAP_Tasks.AssessmentReport.PG.rds.roles"></a>

**API key**: `postgres-check-rds-roles`

This premigration assessment verifies that the AWS DMS user has been configured with all required roles for AWS-managed PostgreSQL databases. Insufficient roles can cause migration task failures.

## Validate that the target endpoint is not a read replica
<a name="CHAP_Tasks.AssessmentReport.PG.read.replica"></a>

**API key**: `all-check-target-read-replica`

This premigration assessment verifies that the target endpoint is not configured as a read replica. AWS DMS requires write access to the target database and cannot replicate to read-only replicas.

## Verify source Aurora PostgreSQL read replica version
<a name="CHAP_Tasks.AssessmentReport.PG.Aurorasource.replica.version"></a>

**API key**: `postgres-aurora-check-source-replica-role-cdc`

This premigration assessment verifies that the source endpoint uses an Aurora PostgreSQL read replica running version 16 or later. CDC operations require replication slots, which Aurora PostgreSQL does not support on read-only nodes in versions earlier than 16.

For more information, see [Read replica as a source for PostgreSQL](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.ReadReplica).

## Verify source PostgreSQL read replica version
<a name="CHAP_Tasks.AssessmentReport.PG.source.replica.version"></a>

**API key**: `postgres-check-source-replica-role-cdc`

This premigration assessment verifies that the source endpoint uses a PostgreSQL read replica running version 16 or later. CDC operations require replication slots, which PostgreSQL does not support on read-only nodes in versions earlier than 16.

For more information, see [Read replica as a source for PostgreSQL](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.ReadReplica).

# Db2 LUW Assessments
<a name="CHAP_Tasks.AssessmentReport.Db2"></a>

This section describes individual premigration assessments for migration tasks that use a Db2 LUW source endpoint.

**Topics**
+ [Validate if the IBM Db2 LUW database is configured to be recoverable.](#CHAP_Tasks.AssessmentReport.Db2.config.param)
+ [Validate if the DMS user has the required permissions on the source database to perform a full-load](#CHAP_Tasks.AssessmentReport.Db2.load.privileges)
+ [Validate if the DMS user has the required permissions on the source database to perform CDC](#CHAP_Tasks.AssessmentReport.Db2.cdc.privileges)
+ [Validate if the source IBM Db2 LUW source table has Db2 XML data type](#CHAP_Tasks.AssessmentReport.Db2.xml.data.type)
+ [Validate if the source IBM Db2 LUW version is supported by AWS DMS](#CHAP_Tasks.AssessmentReport.Db2.supported.version.source)
+ [Validate if the target IBM Db2 LUW version is supported by AWS DMS](#CHAP_Tasks.AssessmentReport.Db2.supported.version.target)
+ [Check Transformation Rule for Digits Randomize](#CHAP_Tasks.AssessmentReport.Db2.digits.randomise)
+ [Check Transformation Rule for Digits mask](#CHAP_Tasks.AssessmentReport.Db2.digits.mask)
+ [Check Transformation Rule for Hashing mask](#CHAP_Tasks.AssessmentReport.Db2.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.Db2.all.digits.random)
+ [Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.Db2.all.hash.mask)
+ [Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously](#CHAP_Tasks.AssessmentReport.Db2.all.digit.mask)
+ [Verify that target tables have the correct index configuration (Primary Key or Unique Index, not both) for Batch Apply compatibility](#CHAP_Tasks.AssessmentReport.Db2.pk.absence)
+ [Validate that only ‘Limited LOB mode’ is used when `BatchApplyEnabled` is set to true](#CHAP_Tasks.AssessmentReport.Db2.lob.mode)
+ [Validate if secondary indexes are disabled on the target database during full-load](#CHAP_Tasks.AssessmentReport.secondary.indexes)
+ [Validate that at least one selected object exists in the source database](#CHAP_Tasks.AssessmentReport.Db2.selection.rules)
+ [Validate that secondary constraints and indexes (non-primary) are present in the source database](#CHAP_Tasks.AssessmentReport.Db2.secondary.constraints)

## Validate if the IBM Db2 LUW database is configured to be recoverable.
<a name="CHAP_Tasks.AssessmentReport.Db2.config.param"></a>

**API key**: `db2-check-archive-config-param`

This premigration assessment validates whether the Db2 LUW database has either or both of the database configuration parameters `LOGARCHMETH1` and `LOGARCHMETH2` set to **ON**.

## Validate if the DMS user has the required permissions on the source database to perform a full-load
<a name="CHAP_Tasks.AssessmentReport.Db2.load.privileges"></a>

**API key**: `db2-check-full-load-privileges`

This premigration assessment validates whether DMS user has all the required permissions on the source database for full-load operations.

## Validate if the DMS user has the required permissions on the source database to perform CDC
<a name="CHAP_Tasks.AssessmentReport.Db2.cdc.privileges"></a>

**API key**: `db2-check-cdc-privileges`

This premigration assessment validates whether DMS user has all the required permissions on the source database for CDC operations.

## Validate if the source IBM Db2 LUW source table has Db2 XML data type
<a name="CHAP_Tasks.AssessmentReport.Db2.xml.data.type"></a>

**API key**: `db2-check-xml-data-type`

This premigration assessment validates if the source IBM Db2 LUW table has Db2 XML data type.

## Validate if the source IBM Db2 LUW version is supported by AWS DMS
<a name="CHAP_Tasks.AssessmentReport.Db2.supported.version.source"></a>

**API key**: `db2-validate-supported-versions-source`

This premigration assessment validates if the source IBM Db2 LUW version is supported by AWS DMS.

## Validate if the target IBM Db2 LUW version is supported by AWS DMS
<a name="CHAP_Tasks.AssessmentReport.Db2.supported.version.target"></a>

**API key**: `db2-validate-supported-versions-target`

This premigration assessment validates if the target IBM Db2 LUW version is supported by AWS DMS.

## Check Transformation Rule for Digits Randomize
<a name="CHAP_Tasks.AssessmentReport.Db2.digits.randomise"></a>

**API key**: `db2-datamasking-digits-randomize`

This assessment validates whether columns used in table mappings are compatible with the Digits Randomize transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Check Transformation Rule for Digits mask
<a name="CHAP_Tasks.AssessmentReport.Db2.digits.mask"></a>

**API key**: `db2-datamasking-digits-mask`

This assessment validates whether any columns used in the table mapping are not supported by the Digits Mask transformation rule. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying Digits Mask transformations to such columns could cause DMS task failures since uniqueness cannot be guaranteed.

## Check Transformation Rule for Hashing mask
<a name="CHAP_Tasks.AssessmentReport.Db2.hash.mask"></a>

**API key**: `db2-datamasking-hash-mask`

This assessment validates whether any of the columns used in the table mapping are not supported by the Hashing Mask transformation rule. It also checks if the length of the source column exceeds 64 characters. Ideally, the target column length should be greater than 64 characters to support hash masking. Additionally, the assessment checks if any columns selected for transformation are part of primary keys, unique constraints, or foreign keys, as applying digits randomize transformations does not guarantee any uniqueness.

## Verify that Data Validation task settings and Data Masking Digit randomization are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.Db2.all.digits.random"></a>

**API key**: `all-to-all-validation-with-datamasking-digits-randomize`

This premigration assessment verifies that Data Validation setting and Data Masking Digit randomization are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Hashing mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.Db2.all.hash.mask"></a>

**API key**: `all-to-all-validation-with-datamasking-hash-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Hashing mask are not simultaneously enabled, as these features are incompatible.

## Verify that Data Validation task settings and Data Masking Digit mask are not enabled simultaneously
<a name="CHAP_Tasks.AssessmentReport.Db2.all.digit.mask"></a>

**API key**: `all-to-all-validation-with-digit-mask`

This premigration assessment verifies that Data Validation setting and Data Masking Digit mask are not simultaneously enabled, as these features are incompatible.

## Verify that target tables have the correct index configuration (Primary Key or Unique Index, not both) for Batch Apply compatibility
<a name="CHAP_Tasks.AssessmentReport.Db2.pk.absence"></a>

**API key**: `db2-check-batch-apply-target-pk-ui-absence`

Batch Apply requires the target tables to have either Primary or Unique keys, but not both. If a table contains both Primary and Unique Key, the apply mode changes from batch to transactional.

## Validate that only ‘Limited LOB mode’ is used when `BatchApplyEnabled` is set to true
<a name="CHAP_Tasks.AssessmentReport.Db2.lob.mode"></a>

**API key**: `db2-check-for-batch-apply-lob-mode`

This premigration assessment validates whether DMS task includes LOB columns. If LOB columns are included in the scope of the task, you must use ‘Limited LOB mode’ in order to be able to use `BatchApplyEnabled=true`.

## Validate if secondary indexes are disabled on the target database during full-load
<a name="CHAP_Tasks.AssessmentReport.secondary.indexes"></a>

**API key**: `db2-check-secondary-indexes`

This premigration assessment validates whether secondary indexes are disabled during a full-load on the target database. You must disable or remove the secondary indexes during full-load.

## Validate that at least one selected object exists in the source database
<a name="CHAP_Tasks.AssessmentReport.Db2.selection.rules"></a>

**API key**: `all-check-source-selection-rules`

This premigration assessment verifies that at least one object specified in the selection rules exists in the source database, including pattern matching for wildcard-based rules.

## Validate that secondary constraints and indexes (non-primary) are present in the source database
<a name="CHAP_Tasks.AssessmentReport.Db2.secondary.constraints"></a>

**API key**: `all-check-secondary-constraints`

This premigration assessment verifies that secondary constraints and indexes (foreign keys, check constraints, non-clustered indexes) are present in the source database.

# Starting and viewing data type assessments (Legacy)
<a name="CHAP_Tasks.DataTypeAssessments"></a>

**Note**  
This section describes legacy content. We recommend that you use premigration assessment runs, described prior in [Specifying, starting, and viewing premigration assessment runs](CHAP_Tasks.PremigrationAssessmentRuns.md).  
Data type assessments are not available in the console. You can only run data type assessments using the API or CLI, and you can only view the results of a data type assessment in the task's S3 bucket.  
 The Pre-migration Assessment will automatically run under these conditions:   
 During Start Task: If you haven't manually run the assessment during task creation. 
 During Resume Task: If no completed assessment exists within the past 7 days. 

A data type assessment identifies data types in a source database that might not get migrated correctly because the target doesn't support them. During this assessment, AWS DMS reads the source database schemas for a migration task and creates a list of the column data types. It then compares this list to a predefined list of data types supported by AWS DMS. If your migration task has unsupported data types, AWS DMS creates a report that you can look at to see if your migration task has any unsupported data types. AWS DMS doesn't create a report if your migration task doesn't have any unsupported data types.

AWS DMS supports creating data type assessment reports for the following relational databases:
+ Oracle
+ SQL Server 
+ PostgreSQL
+ MySQL
+ MariaDB
+ Amazon Aurora

You can start and view a data type assessment report using the CLI and SDKs to access the AWS DMS API:
+ The CLI uses the [https://docs.aws.amazon.com/cli/latest/reference/dms/start-replication-task-assessment](https://docs.aws.amazon.com/cli/latest/reference/dms/start-replication-task-assessment) command to start a data type assessment and uses the [https://docs.aws.amazon.com/cli/latest/reference/dms/describe-replication-task-assessment-results](https://docs.aws.amazon.com/cli/latest/reference/dms/describe-replication-task-assessment-results) command to view the latest data type assessment report in JSON format.
+ The AWS DMS API uses the [https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTaskAssessment.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTaskAssessment.html) operation to start a data type assessment and uses the [https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeReplicationTaskAssessmentResults.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeReplicationTaskAssessmentResults.html) operation to view the latest data type assessment report in JSON format.

The data type assessment report is a single JSON file that includes a summary that lists the unsupported data types and the column count for each one. It includes a list of data structures for each unsupported data type including the schemas, tables, and columns that have the unsupported data type. You can use the report to modify the source data types and improve the migration success.

There are two levels of unsupported data types. Data types that appear on the report as not supported can't be migrated. Data types that appear on the report as partially supported might be converted to another data type, but not migrate as you expect.

The following example shows a sample data type assessment report that you might view.

```
{
            "summary":{
            "task-name":"test15",
            "not-supported":{
            "data-type": [
            "sql-variant"
            ],
            "column-count":3
            },
            "partially-supported":{
            "data-type":[
            "float8",
            "jsonb"
            ],
            "column-count":2
            }
            },
            "types":[
            {
            "data-type":"float8",
            "support-level":"partially-supported",
            "schemas":[
            {
            "schema-name":"schema1",
            "tables":[
            {
            "table-name":"table1",
            "columns":[
            "column1",
            "column2"
            ]
            },
            {
            "table-name":"table2",
            "columns":[
            "column3",
            "column4"
            ]
            }
            ]
            },
            {
            "schema-name":"schema2",
            "tables":[
            {
            "table-name":"table3",
            "columns":[
            "column5",
            "column6"
            ]
            },
            {
            "table-name":"table4",
            "columns":[
            "column7",
            "column8"
            ]
            }
            ]
            }
            ]
            },
            {
            "datatype":"int8",
            "support-level":"partially-supported",
            "schemas":[
            {
            "schema-name":"schema1",
            "tables":[
            {
            "table-name":"table1",
            "columns":[
            "column9",
            "column10"
            ]
            },
            {
            "table-name":"table2",
            "columns":[
            "column11",
            "column12"
            ]
            }
            ]
            }
            ]
            }
            ]
            }
```

AWS DMS stores the latest and all previous data type assessments in an Amazon S3 bucket created by AWS DMS in your account. The Amazon S3 bucket name has the following format, where *customerId* is your customer ID and *customerDNS* is an internal identifier.

```
dms-customerId-customerDNS
```

**Note**  
By default, you can create up to 100 Amazon S3 buckets in each of your AWS accounts. Because AWS DMS creates a bucket in your account, make sure that it doesn't exceed your bucket limit. Otherwise, the data type assessment fails.

All data type assessment reports for a given migration task are stored in a bucket folder named with the task identifier. Each report's file name is the date of the data type assessment in the format yyyy-mm-dd-hh-mm. You can view and compare previous data type assessment reports from the Amazon S3 Management Console.

AWS DMS also creates an AWS Identity and Access Management (IAM) role to allow access to the S3 bucket created for these reports. The role name is `dms-access-for-tasks`. The role uses the `AmazonDMSRedshiftS3Role` policy. If a **ResourceNotFoundFault** error occurs when you run `StartReplicationTaskAssessment`, see [ResourceNotFoundFault](CHAP_Tasks.AssessmentReport.Troubleshooting.md#CHAP_Tasks.AssessmentReport.Troubleshooting.ResourceNotFoundFault) in the Troubleshooting section for information about creating the `dms-access-for-tasks` role manually.

# Troubleshooting assessment runs
<a name="CHAP_Tasks.AssessmentReport.Troubleshooting"></a>

Following, you can find topics about troubleshooting issues with running assessment reports with AWS Database Migration Service. These topics can help you to resolve common issues.

**Topics**
+ [ResourceNotFoundFault when running StartReplicationTaskAssessment](#CHAP_Tasks.AssessmentReport.Troubleshooting.ResourceNotFoundFault)

## ResourceNotFoundFault when running StartReplicationTaskAssessment
<a name="CHAP_Tasks.AssessmentReport.Troubleshooting.ResourceNotFoundFault"></a>

You may encounter the following exception when running the [StartReplicationTaskAssessment](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTaskAssessment.html) action.

```
An error occurred (ResourceNotFoundFault) when calling the StartReplicationTaskAssessment operation: Task assessment has not been run or dms-access-for-tasks IAM Role not configured correctly
```

If you encounter this exception, create the **dms-access-for-tasks** role by doing the following:

1. Open the IAM console at [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. In the navigation pane, choose **Roles**.

1. Choose **Create role**.

1. On the **Select trusted entity** page, for **Trusted entity type**, choose **Custom trust policy**. 

1. Paste the following JSON in the editor, replacing the existing text.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "1",
               "Effect": "Allow",
               "Principal": {
                   "Service": "dms.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

   The preceding policy grants the `sts:AssumeRole` permission to AWS DMS. When you add the **AmazonDMSRedshiftS3Role** policy, DMS can to create the S3 bucket in your account, and put the data type assessment results into this S3 bucket.

1. Choose **Next**.

1. On the **Add permissions** page, search for and add the **AmazonDMSRedshiftS3Role** policy. Choose **Next**.

1. On the **Name, review, and create** page, name the role **dms-access-for-tasks**. Choose **Create role**.