

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Trabajar con puntos finales AWS de DMS
<a name="CHAP_Endpoints"></a>

Un punto final proporciona información sobre la conexión, el tipo de almacén de datos y la ubicación del almacén de datos. AWS Database Migration Service utiliza esta información para conectarse a un almacén de datos y migrar los datos de un punto final de origen a un punto final de destino. Puede especificar atributos de conexión adicionales para un punto de conexión mediante la configuración del punto de conexión. Esta configuración puede controlar el inicio de sesión, el tamaño del archivo y otros parámetros. Para obtener más información sobre la configuración del punto de conexión, consulte la sección de la documentación relacionada con el almacén de datos. 

A continuación, encontrará más detalles acerca de los puntos de enlace.

**Topics**
+ [Creación de puntos de enlace de origen y destino](CHAP_Endpoints.Creating.md)
+ [Orígenes para la migración de datos](CHAP_Source.md)
+ [Destinos para la migración de datos](CHAP_Target.md)
+ [Configuración de puntos finales de VPC para AWS DMS](CHAP_VPC_Endpoints.md)
+ [Declaraciones de DDL respaldadas por AWS DMS](CHAP_Introduction.SupportedDDL.md)
+ [Configuración avanzada de puntos de conexión](CHAP_Advanced.Endpoints.md)

# Creación de puntos de enlace de origen y destino
<a name="CHAP_Endpoints.Creating"></a>

Puede crear puntos de enlace de origen y de destino al crear su instancia de replicación o puede crear puntos de enlace después de que su instancia de replicación se haya creado. Los almacenes de datos de origen y de destino pueden residir en una instancia de Amazon Elastic Compute Cloud (Amazon EC2), una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) o en una base de datos local. (Tenga en cuenta que uno de sus puntos finales debe estar en un AWS servicio. No puede usar el AWS DMS para migrar de una base de datos local a otra base de datos local).

En el siguiente procedimiento se supone que ha elegido el asistente de la consola de AWS DMS. Tenga en cuenta que también puede efectuar este paso si selecciona **Puntos de conexión** en el panel de navegación de la consola de AWS DMS y, a continuación, selecciona **Crear punto de conexión**. Cuando se utiliza el asistente de la consola, debe crear los puntos de enlace de origen y de destino en la misma página. Si no utiliza el asistente de la consola, debe crear cada uno de los puntos de enlace por separado.

**Para especificar los puntos finales de la base de datos de origen o destino mediante la consola AWS**

1. En la página **Connect source and target database endpoints**, especifique la información de conexión para la base de datos de origen o destino. La tabla siguiente describe la configuración.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Endpoints.Creating.html)

   En la siguiente tabla se enumeran los caracteres no admitidos en las contraseñas de punto de conexión y los secretos de Secrets Manager de los motores de bases de datos mostrados. Si desea utilizar comas (,) en las contraseñas de sus terminales, utilice el soporte de Secrets Manager que se proporciona en AWS DMS para autenticar el acceso a sus AWS DMS instancias. Para obtener más información, consulte [Uso de secretos para acceder a los puntos AWS Database Migration Service finales](security_iam_secretsmanager.md).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Endpoints.Creating.html)

1. Elija la **configuración del punto de conexión** y **AWS KMS key ** si la necesita. Puede probar la conexión del punto de enlace si selecciona **Run test**. La tabla siguiente describe la configuración.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Endpoints.Creating.html)

# Uso de la autenticación de IAM para el punto final de Amazon RDS en AWS DMS
<a name="CHAP_Endpoints.Creating.IAMRDS"></a>

AWS La autenticación de bases de datos Identity and Access Management (IAM) proporciona una seguridad mejorada para sus bases de datos de Amazon RDS al administrar el acceso a las bases de datos mediante credenciales de IAM. AWS En lugar de utilizar las contraseñas de bases de datos tradicionales, la autenticación de IAM genera tokens de autenticación de corta duración, válidos durante 15 minutos, con credenciales de AWS . Este enfoque mejora considerablemente la seguridad al eliminar la necesidad de almacenar las contraseñas de las bases de datos en el código de la aplicación, reducir el riesgo de exposición de las credenciales y proporcionar una administración de acceso centralizada mediante la IAM. También simplifica la administración del acceso al aprovechar las funciones y políticas de AWS IAM existentes, lo que le permite controlar el acceso a las bases de datos mediante el mismo marco de IAM que utiliza para otros servicios. AWS 

AWS DMS ahora admite la autenticación de IAM para instancias de replicación que ejecutan la versión 3.6.1 o posterior de DMS cuando se conectan a puntos de conexión MySQL, PostgreSQL, Aurora PostgreSQL, Aurora MySQL o MariaDB en Amazon RDS. Al crear un nuevo punto de conexión para estos motores, puede seleccionar la autenticación de IAM y especificar un rol de IAM en lugar de proporcionar las credenciales de la base de datos. Esta integración mejora la seguridad al eliminar la necesidad de administrar y almacenar las contraseñas de las bases de datos para las tareas de migración.

## Configuración de la autenticación de IAM para el punto final de Amazon RDS en AWS DMS
<a name="CHAP_Endpoints.Creating.IAMRDS.config"></a>

Al crear un punto de conexión, puede configurar la autenticación de IAM para su base de datos de Amazon RDS. Para configurar la autenticación de IAM, haga lo siguiente:

### Consola de DMS
<a name="CHAP_Endpoints.Creating.IAMRDS.console"></a>

1. Asegúrese de que Amazon RDS y el usuario de la base de datos tengan habilitada la autenticación de IAM. Para obtener más información, consulte [Activación y desactivación de la autenticación de bases de datos de IAM](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Enabling.html) en la *Guía del usuario de Amazon Relational Database Service*. 

1. Vaya a la consola de IAM y cree un rol de IAM con las siguientes políticas:

   Política

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "rds-db:connect"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Política de confianza:

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

****  

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

------

1. Durante la configuración del punto de conexión en la [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2), vaya a la sección **Acceder a la base de datos de punto de conexión** y seleccione **Autenticación de IAM**.

1. En el menú desplegable **Rol de IAM para la autenticación de bases de datos de RDS**, seleccione el rol de IAM con los permisos adecuados para acceder a la base de datos.

    Para obtener más información, consulte [Creación de puntos de conexión de origen y de destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html).

### AWS CLI
<a name="CHAP_Endpoints.Creating.IAMRDS.awscli"></a>

1. Asegúrese de que Amazon RDS y el usuario de la base de datos tengan habilitada la autenticación de IAM. Para obtener más información, consulte [Activación y desactivación de la autenticación de bases de datos de IAM](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Enabling.html) en la *Guía del usuario de Amazon Relational Database Service*. 

1. Navegue hasta la AWS CLI, cree una función de IAM y permita que DMS la asuma:

   Política:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "rds-db:connect"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Política de confianza:

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

****  

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

------

1. Ejecute el siguiente comando para importar el certificado y descargar el archivo PEM. Para obtener más información, consulte [Descarga de agrupaciones de certificados para Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.CertificatesDownload) en la *Guía del usuario de Amazon Relational Database Service*. 

   ```
   aws dms import-certificate --certificate-identifier rdsglobal --certificate-pem file://~/global-bundle.pem
   ```

1. Ejecute los siguientes comandos para crear el punto de conexión de IAM.
   + Para los puntos finales de PostgreSQL/Aurora PostgreSQL (`sslmode`cuando está establecido en`--certificate-arn`, no es `required` necesario marcar): 

     ```
     aws dms create-endpoint --endpoint-identifier <endpoint-name> --endpoint-type <source/target> --engine-name <postgres/aurora-postgres> --username <db username with iam auth privileges> --server-name <db server name> --port <port number> --ssl-mode <required/verify-ca/verify-full> --postgre-sql-settings "{\"ServiceAccessRoleArn\": \"role arn created from step 2 providing permissions for iam authentication\", \"AuthenticationMethod\": \"iam\", \"DatabaseName\": \"database name\"}" --certificate-arn <if sslmode is verify-ca/verify full use cert arn generated in step 3, otherwise this parameter is not required>
     ```
   + Para los puntos de conexión de MySQL, MariaDB o Aurora MySQL, haga lo siguiente: 

     ```
     aws dms create-endpoint --endpoint-identifier <endpoint-name> --endpoint-type <source/target> --engine-name <mysql/mariadb/aurora> --username <db username with iam auth privileges> --server-name <db server name> --port <port number> --ssl-mode <verify-ca/verify-full> --my-sql-settings "{\"ServiceAccessRoleArn\": \"role arn created from step 2 providing permissions for iam authentication\", \"AuthenticationMethod\": \"iam\", \"DatabaseName\": \"database name\"}" --certificate-arn <cert arn from previously imported cert in step 3>
     ```

1. Ejecute una conexión de prueba con la instancia de replicación que desee para crear la asociación de puntos de conexión de la instancia y comprobar que todo está configurado correctamente: 

   ```
   aws dms test-connection --replication-instance-arn <replication instance arn> --endpoint-arn <endpoint arn from previously created endpoint in step 4>
   ```
**nota**  
Al utilizar la autenticación de IAM, la instancia de replicación proporcionada en test-connection debe estar en la versión 3.6.1 o posterior. AWS DMS 

## Limitaciones
<a name="CHAP_Endpoints.Creating.IAMRDS.Limitations"></a>

AWS DMS presenta las siguientes limitaciones al utilizar la autenticación de IAM con el punto de conexión de Amazon RDS:
+ Actualmente, las instancias de Amazon RDS PostgreSQL y Amazon Aurora PostgreSQL no admiten conexiones CDC con la autenticación de IAM. Para obtener más información, consulte [Restricciones a la autenticación de bases de datos de IAM](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html#UsingWithRDS.IAMDBAuth.Limitations) en la *Guía del usuario de Amazon Relational Database Service*.

# Orígenes para la migración de datos
<a name="CHAP_Source"></a>

AWS Database Migration Service (AWS DMS) puede utilizar muchos de los motores de datos más populares como fuente de replicación de datos. El origen de la base de datos puede hallarse en un motor autoadministrado en ejecución en una instancia de Amazon EC2 o en una base de datos en las instalaciones. O puede ser una fuente de datos de un AWS servicio como Amazon RDS o Amazon S3.

Para obtener una lista completa de orígenes válidos, consulte [Orígenes de AWS DMS](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.title).

**Topics**
+ [Uso de una base de datos Oracle como fuente para AWS DMS](CHAP_Source.Oracle.md)
+ [Uso de una base de datos de Microsoft SQL Server como fuente para AWS DMS](CHAP_Source.SQLServer.md)
+ [Uso de la base de datos SQL de Microsoft Azure como fuente para AWS DMS](CHAP_Source.AzureSQL.md)
+ [Uso de Microsoft Azure SQL Managed Instance como fuente para AWS DMS](CHAP_Source.AzureMgd.md)
+ [Uso del servidor flexible Microsoft Azure Database para PostgreSQL como fuente para AWS DMS](CHAP_Source.AzureDBPostgreSQL.md)
+ [Uso del servidor flexible Microsoft Azure Database for MySQL como fuente para AWS DMS](CHAP_Source.AzureDBMySQL.md)
+ [Uso de OCI MySQL Heatwave como fuente para AWS DMS](CHAP_Source.heatwave.md)
+ [Uso de Google Cloud para MySQL como fuente de AWS DMS](CHAP_Source.GC.md)
+ [Uso de Google Cloud para PostgreSQL como fuente para AWS DMS](CHAP_Source.GCPostgres.md)
+ [Uso de una base de datos PostgreSQL como fuente AWS DMS](CHAP_Source.PostgreSQL.md)
+ [Uso de una base de datos compatible con MySQL como fuente para AWS DMS](CHAP_Source.MySQL.md)
+ [Uso de una base de datos SAP ASE como fuente para AWS DMS](CHAP_Source.SAP.md)
+ [Uso de MongoDB como fuente para AWS DMS](CHAP_Source.MongoDB.md)
+ [Uso de Amazon DocumentDB (compatible con MongoDB) como fuente para AWS DMS](CHAP_Source.DocumentDB.md)
+ [Uso de Amazon S3 como fuente de AWS DMS](CHAP_Source.S3.md)
+ [Uso de la base de datos IBM Db2 para Linux, Unix, Windows y Amazon RDS (Db2 LUW) como fuente para AWS DMS](CHAP_Source.DB2.md)
+ [Uso de IBM Db2 para z/OS bases de datos como fuente para AWS DMS](CHAP_Source.DB2zOS.md)

# Uso de una base de datos Oracle como fuente para AWS DMS
<a name="CHAP_Source.Oracle"></a>

Puede migrar datos de una o varias bases de datos Oracle utilizando AWS DMS. Con una base de datos de Oracle como origen, podrá migrar datos a cualquiera de los destinos compatibles con AWS DMS.

AWS DMS admite las siguientes ediciones de bases de datos Oracle:
+ Oracle Enterprise Edition
+ Oracle Standard Edition
+ Oracle Express Edition
+ Oracle Personal Edition

Para obtener información sobre las versiones de las bases de datos Oracle que AWS DMS admiten como fuente, consulte[Fuentes de AWS DMS](CHAP_Introduction.Sources.md).

Puede utilizar la Capa de conexión segura (SSL) para cifrar las conexiones entre el punto de enlace de Oracle y la instancia de replicación. Para obtener más información acerca de cómo usar SSL con un punto de enlace de Oracle, consulte [Compatibilidad con SSL para un punto de enlace de Oracle](#CHAP_Security.SSL.Oracle).

AWS DMS admite el uso del cifrado de datos transparente (TDE) de Oracle para cifrar los datos en reposo en la base de datos de origen. Para obtener más información sobre el uso de Oracle TDE con un punto de enlace de origen de Oracle, consulte [Métodos de cifrado compatibles para utilizar Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.Encryption).

AWS admite el uso de la versión 1.2 y posteriores de TLS con los puntos de conexión de Oracle (y todos los demás tipos de puntos de conexión) y recomienda utilizar la versión 1.3 o posterior de TLS.

Siga estos pasos para configurar una base de datos Oracle como punto final de origen: AWS DMS 

1. Cree un usuario de Oracle con los permisos adecuados para acceder AWS DMS a su base de datos de origen de Oracle.

1. Cree un punto de conexión de origen de Oracle que se ajuste a la configuración de base de datos de Oracle que haya elegido. Para crear una full-load-only tarea, no es necesaria ninguna configuración adicional.

1. Para crear una tarea que gestione la captura de datos de cambios (una tarea de CDC exclusiva o completa), elija Oracle LogMiner o AWS DMS Binary Reader para capturar los cambios en los datos. Si elige LogMiner Binary Reader, se determinan algunos de los permisos y opciones de configuración posteriores. Para ver una comparación entre un lector binario LogMiner y un lector binario, consulte la siguiente sección.

**nota**  
Para obtener más información sobre las tareas de carga completa, las tareas exclusivas de CDC y las tareas de carga completa y de CDC, consulte [Creación de una tarea](CHAP_Tasks.Creating.md)

Para obtener más información sobre cómo trabajar con bases de datos fuente de Oracle AWS DMS, consulte las siguientes secciones. 

**Topics**
+ [Uso de Oracle LogMiner o AWS DMS Binary Reader para CDC](#CHAP_Source.Oracle.CDC)
+ [Flujos de trabajo para configurar una base de datos fuente Oracle AWS autogestionada o gestionada para AWS DMSConfiguración de una base de datos de origen de Oracle](#CHAP_Source.Oracle.Workflows)
+ [Trabajar con una base de datos Oracle autogestionada como fuente de AWS DMS](#CHAP_Source.Oracle.Self-Managed)
+ [Trabajar con una base AWS de datos Oracle gestionada como fuente de AWS DMS](#CHAP_Source.Oracle.Amazon-Managed)
+ [Limitaciones del uso de Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.Limitations)
+ [Compatibilidad con SSL para un punto de enlace de Oracle](#CHAP_Security.SSL.Oracle)
+ [Métodos de cifrado compatibles para utilizar Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.Encryption)
+ [Métodos de compresión compatibles para utilizar Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.Compression)
+ [Replicación de tablas anidadas utilizando Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.NestedTables)
+ [Almacenar REDO en Oracle ASM cuando se utiliza Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.REDOonASM)
+ [Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)
+ [Tipos de datos de origen para Oracle](#CHAP_Source.Oracle.DataTypes)

## Uso de Oracle LogMiner o AWS DMS Binary Reader para CDC
<a name="CHAP_Source.Oracle.CDC"></a>

En AWS DMS, hay dos métodos para leer los registros rehechos al realizar la captura de datos de cambios (CDC) para Oracle como fuente: Oracle LogMiner y AWS DMS Binary Reader. LogMiner es una API de Oracle para leer los redo logs en línea y los archivos redo log archivados. El lector binario es un AWS DMS método que lee y analiza directamente los archivos redo log sin procesar. Estos métodos tienen las características siguientes.


| Característica | LogMiner | Binary Reader | 
| --- | --- | --- | 
| Fácil de configurar | Sí | No | 
| Menor impacto en el sistema fuente I/O y la CPU | No | Sí | 
| Mejor rendimiento de CDC | No | Sí | 
| Compatible con clústeres de tablas de Oracle | Sí | No | 
| Compatible con todos los tipos de compresión en columnas híbrida (HCC) de Oracle | Sí |  Parcialmente Binary Reader no admite QUERY LOW para realizar tareas con CDC. Todos los demás tipos de HCC son totalmente compatibles.  | 
| Solo se admiten columnas de LOB en Oracle 12c | No (el soporte LOB no está disponible LogMiner en Oracle 12c). | Sí | 
| Admite instrucciones UPDATE que afectan solo a las columnas de LOB | No | Sí | 
| Compatible con el cifrado de datos transparente (TDE) de Oracle |  Parcialmente Cuando se utiliza Oracle LogMiner, AWS DMS no admite el cifrado TDE a nivel de columna para Amazon RDS for Oracle.  |  Parcialmente Binary Reader admite TDE solo para bases de datos de Oracle autoadministradas.  | 
| Admite todos los métodos de compresión de Oracle | Sí | No | 
| Compatible con transacciones XA | No | Sí | 
| RAC |  Sí No se recomienda, debido a motivos de rendimiento y a algunas limitaciones internas de DMS.  |  Sí Altamente recomendado  | 

**nota**  
De forma predeterminada, AWS DMS utiliza Oracle LogMiner para (CDC).   
AWS DMS admite métodos de cifrado de datos transparente (TDE) cuando se trabaja con una base de datos fuente de Oracle. Si las credenciales de TDE que especifique son incorrectas, la tarea de migración de AWS DMS no genera ningún error, lo que puede afectar a la replicación continua de las tablas cifradas. Para obtener más información acerca de la especificación de credenciales de TDE, consulte [Métodos de cifrado compatibles para utilizar Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.Encryption).

Entre las principales ventajas de utilizarlos LogMiner con se AWS DMS incluyen las siguientes:
+ LogMiner es compatible con la mayoría de las opciones de Oracle, como las opciones de cifrado y compresión. Binary Reader no admite todas las opciones de Oracle, especialmente la compresión y la mayoría de las opciones de cifrado.
+ LogMiner ofrece una configuración más sencilla, especialmente en comparación con la configuración de acceso directo de Binary Reader o cuando los registros rehechos se gestionan mediante Oracle Automatic Storage Management (ASM).
+ LogMiner admite clústeres de tablas para su uso por parte de. AWS DMS Binary Reader no.

Entre las principales ventajas de utilizar Binary Reader se AWS DMS incluyen las siguientes:
+ En el caso de las migraciones con un gran volumen de cambios, LogMiner es posible que esto afecte en parte I/O o en la CPU al ordenador que aloja la base de datos de origen de Oracle. Binary Reader tiene menos probabilidades de tener un I/O impacto en la CPU, ya que los registros se extraen directamente en lugar de realizar múltiples consultas a la base de datos.
+ En el caso de las migraciones con un gran volumen de cambios, el rendimiento de CDC suele ser mucho mejor cuando se utiliza Binary Reader en comparación con Oracle LogMiner.
+ Binary Reader es compatible con CDC LOBs en la versión 12c de Oracle. LogMiner no lo hace.

En general, utilice Oracle LogMiner para migrar su base de datos Oracle, a menos que se dé una de las siguientes situaciones:
+ Necesita ejecutar varias tareas de migración en la base de datos de origen de Oracle.
+ El volumen de cambios o el volumen de registros REDO en la base de datos de Oracle de origen es alto o tiene cambios y también está utilizando Oracle ASM.

**nota**  
Si cambia entre el uso de Oracle LogMiner y el de AWS DMS Binary Reader, asegúrese de reiniciar la tarea de CDC. 

### Configuración para CDC en una base de datos de origen de Oracle
<a name="CHAP_Source.Oracle.CDC.Configuration"></a>

Para que un punto de conexión de origen de Oracle se conecte a la base de datos para realizar una tarea de captura de datos de cambios (CDC), es posible que deba especificar atributos de conexión adicionales. Esto puede ser válido para una tarea de carga completa y de CDC o para una tarea exclusiva de CDC. Los atributos de conexión adicionales que especifique dependen del método que utilice para acceder a los redo logs: Oracle LogMiner o AWS DMS Binary Reader. 

Debe especificar atributos de conexión adicionales al crear un punto de conexión de origen. Si tiene varios valores de atributos de conexión, sepárelos entre sí mediante punto y coma sin espacios en blanco adicionales (por ejemplo, `oneSetting;thenAnother`).

AWS DMS utiliza LogMiner de forma predeterminada. No es necesario que especifique más atributos de conexión para utilizarla. 

Para usar Binary Reader para acceder a los registros de REDO, agregue los siguientes atributos de conexión adicional.

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

Utilice el siguiente formato para que los atributos de conexión adicionales obtengan acceso a un servidor que utiliza ASM con Binary Reader.

```
useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;
```

Establezca el parámetro de solicitud de punto de enlace de origen `Password` en la contraseña de usuario de Oracle y la contraseña de ASM, separadas por una coma de la siguiente manera.

```
oracle_user_password,asm_user_password
```

Cuando el origen de Oracle utiliza ASM, se puede trabajar con opciones de alto rendimiento en Binary Reader para el procesamiento de transacciones a escala. Estas opciones incluyen atributos de conexión adicionales para especificar el número de subprocesos paralelos (`parallelASMReadThreads`) y el número de búferes de lectura anticipada (`readAheadBlocks`). Configurar de estos atributos de forma conjunta puede mejorar significativamente el rendimiento de la tarea de CDC. La configuración siguiente proporciona buenos resultados para la mayoría de las configuraciones de ASM.

```
useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;
    parallelASMReadThreads=6;readAheadBlocks=150000;
```

Para obtener más información sobre los valores que se admiten en los atributos de conexión adicionales, consulte [Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

Además, el rendimiento de una tarea de CDC con un origen de Oracle que usa ASM depende de otros ajustes que elija. Estas configuraciones incluyen sus atributos de conexión adicionales de AWS DMS y las configuraciones de SQL para configurar el origen de Oracle. Para obtener más información sobre los atributos de conexión adicionales para un origen de Oracle con ASM, consulte [Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)

También debe elegir un punto de partida de CDC adecuado. Por lo general, al hacer esto, querrá identificar el punto de procesamiento de la transacción que captura la primera transacción abierta desde la que se inició la CDC. De lo contrario, la tarea de CDC puede omitir las transacciones abiertas anteriormente. Para una base de datos de origen de Oracle, puede elegir un punto de partida nativo de CDC en función del número de cambio del sistema (SCN) de Oracle para identificar la primera transacción abierta. Para obtener más información, consulte [Realizar la replicación comenzando desde un punto de inicio de CDC](CHAP_Task.CDC.md#CHAP_Task.CDC.StartPoint).

Para obtener más información sobre cómo configurar CDC para una base de datos de Oracle autoadministrada como origen, consulte [Se requieren privilegios de cuenta cuando se utiliza Oracle LogMiner para acceder a los redo logs](#CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges), [Se requieren privilegios de cuenta cuando se utiliza AWS DMS Binary Reader para acceder a los redo logs](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges) y [Privilegios de cuenta adicionales necesarios al utilizar Binary Reader con Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges).

Para obtener más información sobre cómo configurar CDC para una base AWS de datos Oracle gestionada como fuente, consulte [Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC) y[Uso de un Amazon RDS Oracle Standby (leer réplica) como fuente con Binary Reader for CDC en AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy).

## Flujos de trabajo para configurar una base de datos fuente Oracle AWS autogestionada o gestionada para AWS DMS


## Configuración de una base de datos de origen de Oracle
<a name="CHAP_Source.Oracle.Workflows"></a>

Para configurar una instancia de base de datos de origen autoadministrada, siga los siguientes pasos del flujo de trabajo, en función de cómo realice la CDC. 


| Para este paso del flujo de trabajo | Si utiliza CDC, haga LogMiner lo siguiente | Si realiza la CDC con Binary Reader, haga lo siguiente | 
| --- | --- | --- | 
| Conceda privilegios de cuenta de Oracle. | Consulte [Se requieren privilegios de cuenta de usuario en una fuente de Oracle autogestionada para AWS DMS](#CHAP_Source.Oracle.Self-Managed.Privileges). | Consulte [Se requieren privilegios de cuenta de usuario en una fuente de Oracle autogestionada para AWS DMS](#CHAP_Source.Oracle.Self-Managed.Privileges). | 
| Prepare la base de datos de origen para la replicación mediante CDC. | Consulte [Preparar una base de datos fuente autogestionada de Oracle para los CDC mediante AWS DMS](#CHAP_Source.Oracle.Self-Managed.Configuration). | Consulte [Preparar una base de datos fuente autogestionada de Oracle para los CDC mediante AWS DMS](#CHAP_Source.Oracle.Self-Managed.Configuration). | 
| Conceda los privilegios de usuario de Oracle adicionales necesarios para CDC. | Consulte [Se requieren privilegios de cuenta cuando se utiliza Oracle LogMiner para acceder a los redo logs](#CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges). | Consulte [Se requieren privilegios de cuenta cuando se utiliza AWS DMS Binary Reader para acceder a los redo logs](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges). | 
| Para una instancia de Oracle con ASM, conceda los privilegios de cuenta de usuario adicionales necesarios para acceder a ASM para CDC. | Sin acción adicional. AWS DMS admite Oracle ASM sin privilegios de cuenta adicionales. | Consulte [Privilegios de cuenta adicionales necesarios al utilizar Binary Reader con Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges). | 
| Si aún no lo ha hecho, configure la tarea para utilizar LogMiner nuestro Binary Reader for CDC. | Consulte [Uso de Oracle LogMiner o AWS DMS Binary Reader para CDC](#CHAP_Source.Oracle.CDC). | Consulte [Uso de Oracle LogMiner o AWS DMS Binary Reader para CDC](#CHAP_Source.Oracle.CDC). | 
| Configure Oracle Standby como origen para la CDC. | AWS DMS no admite Oracle Standby como fuente. | Consulte [Uso de un Oracle Standby autogestionado como fuente con Binary Reader para CDC en AWS DMS](#CHAP_Source.Oracle.Self-Managed.BinaryStandby). | 

Utilice los siguientes pasos del flujo de trabajo para configurar una instancia de base AWS de datos fuente de Oracle gestionada.


| Para este paso del flujo de trabajo | Si utiliza CDC LogMiner, haga lo siguiente | Si realiza la CDC con Binary Reader, haga lo siguiente | 
| --- | --- | --- | 
| Conceda privilegios de cuenta de Oracle. | Para obtener más información, consulte [Se requieren privilegios de cuenta de usuario en una fuente de Oracle AWS gestionada por Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges). | Para obtener más información, consulte [Se requieren privilegios de cuenta de usuario en una fuente de Oracle AWS gestionada por Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges). | 
| Prepare la base de datos de origen para la replicación mediante CDC. | Para obtener más información, consulte [Configuración de una fuente de Oracle AWS gestionada por Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration). | Para obtener más información, consulte [Configuración de una fuente de Oracle AWS gestionada por Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration). | 
| Conceda los privilegios de usuario de Oracle adicionales necesarios para CDC. | No se requieren privilegios de cuenta adicionales. | Para obtener más información, consulte [Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). | 
| Si aún no lo ha hecho, configure la tarea para utilizar nuestro LogMiner lector binario para los CDC. | Para obtener más información, consulte [Uso de Oracle LogMiner o AWS DMS Binary Reader para CDC](#CHAP_Source.Oracle.CDC). | Para obtener más información, consulte [Uso de Oracle LogMiner o AWS DMS Binary Reader para CDC](#CHAP_Source.Oracle.CDC). | 
| Configure Oracle Standby como origen para la CDC. | AWS DMS no admite Oracle Standby como fuente. | Para obtener más información, consulte [Uso de un Amazon RDS Oracle Standby (leer réplica) como fuente con Binary Reader for CDC en AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy). | 

## Trabajar con una base de datos Oracle autogestionada como fuente de AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed"></a>

Una *base de datos autoadministrada* es una base de datos que configura y controla, ya sea una instancia de base de datos en las instalaciones o una base de datos en Amazon EC2. A continuación, puede obtener información sobre los privilegios y las configuraciones que necesita para utilizar una base de datos Oracle autogestionada con. AWS DMS

### Se requieren privilegios de cuenta de usuario en una fuente de Oracle autogestionada para AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.Privileges"></a>

Para utilizar una base de datos Oracle como fuente AWS DMS, conceda los siguientes privilegios al usuario de Oracle especificado en la configuración de conexión del punto final de Oracle.

**nota**  
Al conceder privilegios, utilice el nombre real de los objetos, no el sinónimo de cada uno de ellos. Por ejemplo, utilice `V_$OBJECT` con el guion bajo, no `V$OBJECT` sin el guion bajo.

```
GRANT CREATE SESSION TO dms_user;
GRANT SELECT ANY TRANSACTION TO dms_user;
GRANT SELECT ON V_$ARCHIVED_LOG TO dms_user;
GRANT SELECT ON V_$LOG TO dms_user;
GRANT SELECT ON V_$LOGFILE TO dms_user;
GRANT SELECT ON V_$LOGMNR_LOGS TO dms_user;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO dms_user;
GRANT SELECT ON V_$DATABASE TO dms_user;
GRANT SELECT ON V_$THREAD TO dms_user;
GRANT SELECT ON V_$PARAMETER TO dms_user;
GRANT SELECT ON V_$NLS_PARAMETERS TO dms_user;
GRANT SELECT ON V_$TIMEZONE_NAMES TO dms_user;
GRANT SELECT ON V_$TRANSACTION TO dms_user;
GRANT SELECT ON V_$CONTAINERS TO dms_user;                   
GRANT SELECT ON ALL_INDEXES TO dms_user;
GRANT SELECT ON ALL_OBJECTS TO dms_user;
GRANT SELECT ON ALL_TABLES TO dms_user;
GRANT SELECT ON ALL_USERS TO dms_user;
GRANT SELECT ON ALL_CATALOG TO dms_user;
GRANT SELECT ON ALL_CONSTRAINTS TO dms_user;
GRANT SELECT ON ALL_CONS_COLUMNS TO dms_user;
GRANT SELECT ON ALL_TAB_COLS TO dms_user;
GRANT SELECT ON ALL_IND_COLUMNS TO dms_user;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO dms_user;
GRANT SELECT ON ALL_LOG_GROUPS TO dms_user;
GRANT SELECT ON ALL_TAB_PARTITIONS TO dms_user;
GRANT SELECT ON SYS.DBA_REGISTRY TO dms_user;
GRANT SELECT ON SYS.OBJ$ TO dms_user;
GRANT SELECT ON DBA_TABLESPACES TO dms_user;
GRANT SELECT ON DBA_OBJECTS TO dms_user; -– Required if the Oracle version is earlier than 11.2.0.3.
GRANT SELECT ON SYS.ENC$ TO dms_user; -– Required if transparent data encryption (TDE) is enabled. For more information on using Oracle TDE with AWS DMS, see Métodos de cifrado compatibles para utilizar Oracle como fuente de AWS DMS.
GRANT SELECT ON GV_$TRANSACTION TO dms_user; -– Required if the source database is Oracle RAC in AWS DMS versions 3.4.6 and higher.
GRANT SELECT ON V_$DATAGUARD_STATS TO dms_user; -- Required if the source database is Oracle Data Guard and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher.
GRANT SELECT ON V_$DATABASE_INCARNATION TO dms_user;
```

Conceda el privilegio adicional siguiente a cada tabla replicada cuando utilice una lista de tablas específica.

```
GRANT SELECT on any-replicated-table to dms_user;
```

Conceda el siguiente privilegio adicional para utilizar la característica de validación.

```
GRANT EXECUTE ON SYS.DBMS_CRYPTO TO dms_user;
```

Otorgue el siguiente privilegio adicional si utiliza un lector binario en lugar de LogMiner.

```
GRANT SELECT ON SYS.DBA_DIRECTORIES TO dms_user;
```

Conceda el siguiente privilegio adicional para exponer las vistas.

```
GRANT SELECT on ALL_VIEWS to dms_user;
```

Para exponer las vistas, también debe agregar el atributo de conexión adicional `exposeViews=true` al punto de conexión de origen.

Conceda el siguiente privilegio adicional cuando utilice replicaciones sin servidor.

```
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;
```

Para obtener información acerca de las replicaciones sin servidor, consulte [Trabajando con AWS DMS Serverless](CHAP_Serverless.md).

Conceda los siguientes privilegios adicionales cuando utilice las evaluaciones previas a la migración específicas de Oracle.

```
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 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;
```

Para obtener información sobre las evaluaciones previas a la migración específicas de Oracle, consulte [Evaluaciones de Oracle](CHAP_Tasks.AssessmentReport.Oracle.md).

#### Requisitos previos para gestionar las transacciones abiertas en Oracle Standby
<a name="CHAP_Source.Oracle.Self-Managed.Privileges.Standby"></a>

Cuando utilice AWS DMS las versiones 3.4.6 y posteriores, lleve a cabo los siguientes pasos para gestionar las transacciones abiertas de Oracle Standby. 

1. Cree un enlace de base de datos denominado `AWSDMS_DBLINK` en la base de datos principal. `DMS_USER` utilizará el enlace de la base de datos para conectarse a la base de datos principal. Tenga en cuenta que el enlace de la base de datos se ejecuta desde la instancia en espera para consultar las transacciones abiertas que se ejecutan en la base de datos principal. Consulte el siguiente ejemplo. 

   ```
   CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK 
      CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD
      USING '(DESCRIPTION=
               (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT))
               (CONNECT_DATA=(SERVICE_NAME=SID))
             )';
   ```

1. Compruebe que se ha establecido la conexión con el enlace de base de datos mediante `DMS_USER`, como se muestra en el siguiente ejemplo.

   ```
   select 1 from dual@AWSDMS_DBLINK
   ```

### Preparar una base de datos fuente autogestionada de Oracle para los CDC mediante AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.Configuration"></a>

Prepare la base de datos de Oracle autoadministrada como origen para ejecutar una tarea de CDC de la siguiente manera: 
+ [Verificar que sea AWS DMS compatible con la versión de la base de datos fuente](#CHAP_Source.Oracle.Self-Managed.Configuration.DbVersion).
+ [Asegurarse de que el modo ARCHIVELOG esté activado](#CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode).
+ [Configuración del registro complementario](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).

#### Verificar que sea AWS DMS compatible con la versión de la base de datos fuente
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.DbVersion"></a>

Ejecute una consulta como la siguiente para comprobar que la versión actual de la base de datos de origen de Oracle es compatible con AWS DMS.

```
SELECT name, value, description FROM v$parameter WHERE name = 'compatible';
```

Aquí, `name`, `value` y `description` son columnas presentes en algún lugar de la base de datos que se están consultando en función del valor de `name`. Si esta consulta se ejecuta sin errores, AWS DMS es compatible con la versión actual de la base de datos y puede continuar con la migración. Si la consulta genera un error, AWS DMS no es compatible con la versión actual de la base de datos. Para continuar con la migración, primero convierta la base de datos Oracle a una versión compatible con AWS DMS.

#### Asegurarse de que el modo ARCHIVELOG esté activado
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode"></a>

Puede ejecutar Oracle en dos modos diferentes: `ARCHIVELOG` y `NOARCHIVELOG`. Para ejecutar una tarea de CDC, ejecute la base de datos en modo `ARCHIVELOG`. Para saber si la base de datos está en modo `ARCHIVELOG`, ejecute la siguiente consulta.

```
SQL> SELECT log_mode FROM v$database;
```

Si se devuelve el modo `NOARCHIVELOG`, establezca la base de datos en `ARCHIVELOG` según las instrucciones de Oracle. 

#### Configuración del registro complementario
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging"></a>

Para capturar los cambios en curso, es AWS DMS necesario que habilite un registro adicional mínimo en la base de datos de origen de Oracle. Además, debe habilitar el registro adicional en cada tabla replicada de la base de datos.

De forma predeterminada, AWS DMS agrega un registro `PRIMARY KEY` suplementario en todas las tablas replicadas. Para permitir AWS DMS agregar registros `PRIMARY KEY` adicionales, otorgue el siguiente privilegio para cada tabla replicada.

```
ALTER on any-replicated-table;
```

Puede deshabilitar el registro `PRIMARY KEY` suplementario predeterminado agregado AWS DMS mediante el atributo de conexión adicional. `addSupplementalLogging` Para obtener más información, consulte [Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

Asegúrese de activar el registro suplementario si la tarea de replicación actualiza una tabla mediante una cláusula `WHERE` que no hace referencia a una columna de clave principal.

**Configuración manual del registro suplementario**

1. Ejecute la siguiente consulta para comprobar si el registro suplementario está habilitado para la base de datos.

   ```
   SELECT supplemental_log_data_min FROM v$database;
   ```

   Si el resultado devuelto es `YES` o `IMPLICIT`, el registro suplementario está habilitado para la base de datos.

   De lo contrario, habilite el registro suplementario para la base de datos ejecutando el siguiente comando.

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

1. Asegúrese de que se agrega el registro suplementario requerido se agrega para cada tabla replicada.

   Considere lo siguiente:
   + Si se agrega un registro complementario de `ALL COLUMNS` a la tabla, no necesita agregar más registros.
   + Si existe una clave principal, agregue un registro suplementario para la clave principal. Puede hacerlo utilizando el formato para agregar un registro suplementario en la clave principal misma o agregando un registro suplementario en las columnas de la clave principal en la base de datos.

     ```
     ALTER TABLE Tablename ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
     ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
     ```
   + Si no hay una clave principal y la tabla tiene un solo índice único, agregue todas las columnas del índice único al registro suplementario.

     ```
     ALTER TABLE TableName ADD SUPPLEMENTAL LOG GROUP LogGroupName (UniqueIndexColumn1[, UniqueIndexColumn2] ...) ALWAYS;
     ```

     Usar `SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS` no añade las columnas de índice único al registro.
   + Si no existe ninguna clave principal y la tabla tiene varios índices únicos, AWS DMS selecciona el primer índice único de una lista ascendente ordenada alfabéticamente. Debe agregar un registro complementario en las columnas del índice seleccionado, como en el elemento anterior.

     Usar `SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS` no añade las columnas de índice único al registro.
   + Si no existe ninguna clave principal y no hay un índice único, agregue el registro suplementario en todas las columnas.

     ```
     ALTER TABLE TableName ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
     ```

     En algunos casos, el índice único o la clave primaria de la tabla de destino son diferentes del índice único o la clave primaria de la tabla de origen. En dichos casos, agregue manualmente el registro suplementario en las columnas de la tabla de origen que componen el índice único o la clave principal de la tabla de destino.

     Si cambia la clave principal de la tabla de destino, debe agregar el registro suplementario en las columnas del índice seleccionadas, en lugar de en las columnas de la clave principal o el índice único originales.

Si se define un filtro o una transformación para una tabla, es posible que deba habilitar el registro adicional.

Considere lo siguiente:
+ Si se agrega un registro complementario de `ALL COLUMNS` a la tabla, no necesita agregar más registros.
+ Si la tabla contiene un índice único o una clave principal, agregue registros suplementarios en cada columna con un filtro o transformación. Sin embargo, hágalo solo si esas columnas son diferentes de la clave principal o de las columnas de índice únicas.
+ Si una transformación incluye tan solo una columna, no agregue esta columna a un grupo de registro suplementario. Por ejemplo, para una transformación `A+B`, agregue un registro suplementario en ambas columnas `A` y `B`. Sin embargo, para una transformación `substring(A,10)` no agregue un registro suplementario en la columna `A`.
+ Para configurar el registro suplementario en columnas de clave principal o de índice único y en otras columnas específicas que se filtran o transforman, puede configurar el registro suplementario `USER_LOG_GROUP`. Agregue este registro en las columnas de clave principal o índice único y cualquier otra columna específica que se filtre o transforme.

  Por ejemplo, para replicar una tabla denominada `TEST.LOGGING` con la clave principal `ID` y un filtro según la columna `NAME`, puede ejecutar un comando similar al siguiente para crear el registro suplementario del grupo de registros.

  ```
  ALTER TABLE TEST.LOGGING ADD SUPPLEMENTAL LOG GROUP TEST_LOG_GROUP (ID, NAME) ALWAYS;
  ```

### Se requieren privilegios de cuenta cuando se utiliza Oracle LogMiner para acceder a los redo logs
<a name="CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges"></a>

Para acceder a los redo logs mediante Oracle LogMiner, conceda los siguientes privilegios al usuario de Oracle especificado en la configuración de conexión del punto final de Oracle.

```
GRANT EXECUTE on DBMS_LOGMNR to dms_user;
GRANT SELECT on V_$LOGMNR_LOGS to dms_user;
GRANT SELECT on V_$LOGMNR_CONTENTS to dms_user;
GRANT LOGMINING to dms_user; -– Required only if the Oracle version is 12c or higher.
```

### Se requieren privilegios de cuenta cuando se utiliza AWS DMS Binary Reader para acceder a los redo logs
<a name="CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges"></a>

Para acceder a los redo logs mediante el lector AWS DMS binario, conceda los siguientes privilegios al usuario de Oracle especificado en la configuración de conexión del punto final de Oracle.

```
GRANT SELECT on v_$transportable_platform to dms_user;   -– Grant this privilege if the redo logs are stored in Oracle Automatic Storage Management (ASM) and AWS DMS accesses them from ASM.
GRANT CREATE ANY DIRECTORY to dms_user;                  -– Grant this privilege to allow AWS DMS to use Oracle BFILE read file access in certain cases. This access is required when the replication instance does not have file-level access to the redo logs and the redo logs are on non-ASM storage.
GRANT EXECUTE on DBMS_FILE_TRANSFER to dms_user;         -– Grant this privilege to copy the redo log files to a temporary folder using the CopyToTempFolder method.
GRANT EXECUTE on DBMS_FILE_GROUP to dms_user;
```

Binary Reader funciona con características de archivos de Oracle que incluyen los directorios de Oracle. Cada objeto de directorio de Oracle incluye el nombre de la carpeta que contiene los archivos de registros REDO que se van a procesar. Estos directorios de Oracle no están representados en el nivel del sistema de archivos. En cambio, se trata de directorios lógicos que se crean en el nivel de bases de datos de Oracle. Puede verlos en la vista `ALL_DIRECTORIES` de Oracle.

Si desea AWS DMS crear estos directorios de Oracle, otorgue el `CREATE ANY DIRECTORY` privilegio especificado anteriormente. AWS DMS crea los nombres de los directorios con el `DMS_` prefijo. Si no concede el privilegio `CREATE ANY DIRECTORY`, cree manualmente los directorios correspondientes. En algunos casos, cuando se crean manualmente los directorios de Oracle, el usuario de Oracle especificado en el punto de enlace de origen de Oracle no es el usuario que creó estos directorios. En estos casos, otorgue también el privilegio `READ on DIRECTORY`.

**nota**  
AWS DMS Los CDC no admiten Active Dataguard Standby si no está configurado para utilizar el servicio de retransporte automático.

En algunos casos, puede utilizar Oracle Managed Files (OMF) para almacenar los registros. O bien, el punto de conexión de origen está en ADG y no se puede conceder el privilegio CREATE ANY DIRECTORY. En estos casos, cree manualmente los directorios con todas las ubicaciones de registro posibles antes de iniciar la tarea de AWS DMS replicación. Si AWS DMS no encuentra el directorio creado previamente que espera, la tarea se detiene. Además, AWS DMS no elimina las entradas que ha creado en la `ALL_DIRECTORIES` vista, por lo que las elimina manualmente.

### Privilegios de cuenta adicionales necesarios al utilizar Binary Reader con Oracle ASM
<a name="CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges"></a>

Para acceder a los registros REDO en Automatic Storage Management (ASM) mediante Binary Reader, otorgue los siguientes privilegios al usuario de Oracle especificado en la configuración de conexión del punto de conexión de Oracle.

```
SELECT ON v_$transportable_platform
SYSASM -– To access the ASM account with Oracle 11g Release 2 (version 11.2.0.2) and higher, grant the Oracle endpoint user the SYSASM privilege. For older supported Oracle versions, it's typically sufficient to grant the Oracle endpoint user the SYSDBA privilege.
```

Puede validar el acceso a la cuenta de ASM abriendo un símbolo del sistema e invocando una de las instrucciones siguientes, en función de la versión de Oracle especificada anteriormente.

Si necesita el privilegio `SYSDBA`, utilice lo siguiente.

```
sqlplus asmuser/asmpassword@+asmserver as sysdba
```

Si necesita el privilegio `SYSASM`, utilice lo siguiente. 

```
sqlplus asmuser/asmpassword@+asmserver as sysasm
```

### Uso de un Oracle Standby autogestionado como fuente con Binary Reader para CDC en AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.BinaryStandby"></a>

Para configurar una instancia de Oracle Standby como origen al utilizar Binary Reader para CDC, comience con los siguientes requisitos previos:
+ AWS DMS actualmente solo es compatible con Oracle Active Data Guard Standby.
+ Asegúrese de que la configuración de Oracle Data Guard utilice:
  + Servicios de transporte REDO para transferencias automatizadas de datos REDO.
  + Aplique los servicios para aplicar REDO automáticamente a la base de datos en espera.

Para confirmar que se cumplen esos requisitos, ejecute la siguiente consulta.

```
SQL> select open_mode, database_role from v$database;
```

A partir del resultado de esa consulta, confirme que la base de datos en espera está abierta en modo SOLO LECTURA y que la función REDO se aplica automáticamente. Por ejemplo:

```
OPEN_MODE             DATABASE_ROLE
--------------------  ----------------
READ ONLY WITH APPLY  PHYSICAL STANDBY
```

**Configuración de una instancia de Oracle Standby como origen al utilizar Binary Reader para CDC**

1. Conceda los privilegios adicionales necesarios para acceder a los archivos de registro en espera.

   ```
   GRANT SELECT ON v_$standby_log TO dms_user;
   ```

1. Cree un punto de conexión de origen para Oracle Standby mediante Consola de administración de AWS o AWS CLI. Al crear el punto de conexión, especifique los siguientes atributos de conexión adicionales.

   ```
   useLogminerReader=N;useBfile=Y;
   ```
**nota**  
En AWS DMS, puede utilizar atributos de conexión adicionales para especificar si desea migrar desde los registros archivados en lugar de hacerlo desde los redo registros. Para obtener más información, consulte [Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

1. Configure el destino de los registros archivados.

   Binary Reader de DMS para el origen de Oracle sin ASM utiliza los directorios de Oracle para acceder a los registros REDO archivados. Si la base de datos está configurada para utilizar el área de recuperación rápida (FRA) como destino de los registros de archivado, la ubicación de los archivos REDO archivados no es constante. Cada día que se generan archivos REDO archivados, se crea un nuevo directorio en el FRA con el formato de nombre de directorio YYYY\$1MM\$1DD. Por ejemplo: 

   ```
   DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD
   ```

   Cuando DMS necesita acceder a los archivos REDO archivados en el directorio FRA recién creado y se utiliza la base de datos principal de lectura y escritura como origen, DMS crea un directorio de Oracle nuevo o sustituye uno existente, de la siguiente manera. 

   ```
   CREATE OR REPLACE DIRECTORY dmsrep_taskid AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD’;
   ```

   Cuando la base de datos en espera se utiliza como origen, DMS no puede crear ni sustituir el directorio de Oracle porque la base de datos está en modo de solo lectura. Sin embargo, tiene la opción de realizar uno de estos pasos adicionales: 

   1. Modifique `log_archive_dest_id_1` para usar una ruta real en lugar de un FRA en una configuración tal que Oracle no cree subdirectorios diarios:

      ```
      ALTER SYSTEM SET log_archive_dest_1=’LOCATION=full directory path’
      ```

      A continuación, cree un objeto de directorio de Oracle para que lo utilice DMS:

      ```
      CREATE OR REPLACE DIRECTORY dms_archived_logs AS ‘full directory path’;
      ```

   1. Cree un destino de registro de archivo adicional y un objeto de directorio de Oracle dirigido a ese destino. Por ejemplo:

      ```
      ALTER SYSTEM SET log_archive_dest_3=’LOCATION=full directory path’; 
      CREATE DIRECTORY dms_archived_log AS ‘full directory path’;
      ```

      A continuación, agregue un atributo de conexión adicional al punto de conexión de origen de la tarea:

      ```
      archivedLogDestId=3
      ```

   1. Cree previamente de forma manual objetos de directorio de Oracle para que los utilice DMS.

      ```
      CREATE DIRECTORY dms_archived_log_20210301 AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/2021_03_01’;
      CREATE DIRECTORY dms_archived_log_20210302 AS ‘DB_RECOVERY_FILE_DEST>/SID>/archivelog/2021_03_02’; 
      ...
      ```

   1. Cree un trabajo de programador de Oracle que se ejecute a diario y cree el directorio necesario.

1. Configure el destino del registro en línea. 

   Cree un directorio de Oracle que apunte hacia el directorio del sistema operativo con los registros redo en espera:

   ```
   CREATE OR REPLACE DIRECTORY STANDBY_REDO_DIR AS '<full directory path>';
   GRANT READ ON DIRECTORY STANDBY_REDO_DIR TO <dms_user>;
   ```

### Uso de una base de datos gestionada por los usuarios en Oracle Cloud Infrastructure (OCI) como fuente para los CDC en AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.OCI"></a>

Una base de datos administrada por el usuario es una base de datos que configura y controla, como una base de datos de Oracle creada en una máquina virtual (VM), bare metal o un servidor Exadata. O bien, bases de datos que configura y controla y que se ejecutan en una infraestructura dedicada, como Oracle Cloud Infrastructure (OCI). La siguiente información describe los privilegios y las configuraciones que necesita para utilizar una base de datos administrada por los usuarios de Oracle en OCI como origen de captura de datos de cambios (CDC) en AWS DMS.

**Configuración de una base de datos de Oracle administrada por los usuarios alojada en OCI como origen de captura de datos de cambios**

1. Conceda privilegios de cuenta de usuario necesarios para una base de datos de origen de Oracle administrada por usuarios en OCI. Para obtener más información, consulte [Privilegios de cuenta para un punto de conexión de origen de Oracle autoadministrado](#CHAP_Source.Oracle.Self-Managed.Privileges).

1. Conceda privilegios de cuenta necesarios al utilizar Binary Reader para acceder a los registros de REDO. Para obtener más información, consulte [Privilegios de cuenta necesarios al utilizar Binary Reader](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges).

1. Agregue privilegios de cuenta necesarios al utilizar Binary Reader con Oracle Automatic Storage Management (ASM). Para obtener más información, consulte [Privilegios de cuenta adicionales necesarios al utilizar Binary Reader con Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges).

1. Configure el registro suplementario. Para obtener más información, consulte [Configuración de un registro suplementario](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).

1. Configure el cifrado de TDE. Para obtener más información, consulte [Métodos de cifrado cuando se utiliza una base de datos de Oracle como punto de conexión de origen](#CHAP_Source.Oracle.Encryption).

Las siguientes limitaciones se aplican al replicar datos de una base de datos de origen de Oracle en Oracle Cloud Infrastructure (OCI).

**Limitaciones**
+ DMS no admite el uso de Oracle LogMiner para acceder a los redo logs.
+ DMS no es compatible con una base de datos autónoma.

## Trabajar con una base AWS de datos Oracle gestionada como fuente de AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed"></a>

Una base AWS de datos gestionada es una base de datos que se encuentra en un servicio de Amazon, como Amazon RDS, Amazon Aurora o Amazon S3. A continuación, encontrará los privilegios y las configuraciones que debe configurar al utilizar una base de datos Oracle AWS gestionada con. AWS DMS

### Se requieren privilegios de cuenta de usuario en una fuente de Oracle AWS gestionada por Oracle para AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.Privileges"></a>

Conceda los siguientes privilegios a la cuenta de usuario de Oracle especificada en la definición del punto de conexión de origen de Oracle.

**importante**  
Para todos los valores de parámetros, como `dms_user` y `any-replicated-table`, Oracle supone que el valor está todo en mayúsculas a no ser que especifique el valor con un identificador que distingue entre mayúsculas y minúsculas. Por ejemplo, supongamos que crea un valor de `dms_user` sin usar comillas, como en `CREATE USER myuser` o `CREATE USER MYUSER`. En este caso, Oracle identifica y almacena el valor todo en mayúsculas (`MYUSER`). Si utiliza comillas, como en `CREATE USER "MyUser"` o `CREATE USER 'MyUser'`, Oracle identifica y almacena el valor que distingue entre mayúsculas y minúsculas que especifique (`MyUser`).

```
GRANT CREATE SESSION to dms_user;
GRANT SELECT ANY TRANSACTION to dms_user;
GRANT SELECT on DBA_TABLESPACES to dms_user;
GRANT SELECT ON any-replicated-table to dms_user;
GRANT EXECUTE on rdsadmin.rdsadmin_util to dms_user;
 -- For Oracle 12c or higher:
GRANT LOGMINING to dms_user; – Required only if the Oracle version is 12c or higher.
```

Además, conceda permisos `SELECT` y `EXECUTE` sobre los objetos `SYS` mediante el procedimiento de Amazon RDS `rdsadmin.rdsadmin_util.grant_sys_object` como se muestra. Para obtener más información, consulte [Concesión de privilegios SELECT o EXECUTE a objetos SYS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html#Appendix.Oracle.CommonDBATasks.TransferPrivileges).

```
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_VIEWS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','dms_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'dms_user', 'EXECUTE');

-- (as of Oracle versions 12.1 and higher)
exec rdsadmin.rdsadmin_util.grant_sys_object('REGISTRY$SQLPATCH', 'dms_user', 'SELECT');

-- (for Amazon RDS Active Dataguard Standby (ADG))
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$STANDBY_LOG', 'dms_user', 'SELECT'); 

-- (for transparent data encryption (TDE))

exec rdsadmin.rdsadmin_util.grant_sys_object('ENC$', 'dms_user', 'SELECT'); 
               
-- (for validation with LOB columns)
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'dms_user', 'EXECUTE');
                    
-- (for binary reader)
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DIRECTORIES','dms_user','SELECT'); 
                    
-- Required when the source database is Oracle Data guard, and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher.

exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAGUARD_STATS', 'dms_user', 'SELECT');
```

Para obtener más información sobre el uso de Amazon RDS Active Dataguard Standby (ADG) con AWS DMS , consulte [Uso de un Amazon RDS Oracle Standby (leer réplica) como fuente con Binary Reader for CDC en AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy).

Para obtener más información sobre el uso de Oracle TDE con AWS DMS, consulte. [Métodos de cifrado compatibles para utilizar Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.Encryption)

#### Requisitos previos para gestionar las transacciones abiertas en Oracle Standby
<a name="CHAP_Source.Oracle.Amazon-Managed.Privileges.Standby"></a>

Cuando utilice AWS DMS las versiones 3.4.6 y posteriores, lleve a cabo los siguientes pasos para gestionar las transacciones abiertas de Oracle Standby. 

1. Cree un enlace de base de datos denominado `AWSDMS_DBLINK` en la base de datos principal. `DMS_USER` utilizará el enlace de la base de datos para conectarse a la base de datos principal. Tenga en cuenta que el enlace de la base de datos se ejecuta desde la instancia en espera para consultar las transacciones abiertas que se ejecutan en la base de datos principal. Consulte el siguiente ejemplo. 

   ```
   CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK 
      CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD
      USING '(DESCRIPTION=
               (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT))
               (CONNECT_DATA=(SERVICE_NAME=SID))
             )';
   ```

1. Compruebe que se ha establecido la conexión con el enlace de base de datos mediante `DMS_USER`, como se muestra en el siguiente ejemplo.

   ```
   select 1 from dual@AWSDMS_DBLINK
   ```

### Configuración de una fuente de Oracle AWS gestionada por Oracle para AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.Configuration"></a>

Antes de utilizar una base AWS de datos Oracle gestionada como fuente AWS DMS, lleve a cabo las siguientes tareas para la base de datos Oracle:
+ Habilitar copias de seguridad automáticas. Para obtener más información sobre la habilitación de copias de seguridad automáticas, consulte [Habilitación de copias de seguridad automáticas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.Enabling) en la *Guía del usuario de Amazon RDS*.
+ Configure el registro suplementario.
+ Configure el archivado. El archivado de los redo logs de su instancia de base de datos Amazon RDS for Oracle AWS DMS permite recuperar la información del registro mediante LogMiner Oracle o Binary Reader. 

**Para configurar el archivado**

1. Ejecute el comando `rdsadmin.rdsadmin_util.set_configuration` para configurar el archivado.

   Por ejemplo, para retener los registros REDO archivados durante 24 horas, ejecute el siguiente comando.

   ```
   exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);
   commit;
   ```
**nota**  
La confirmación es necesaria para que un cambio surta efecto.

1. Asegúrese de que el almacenamiento dispone de espacio suficiente para los registros REDO archivados durante el periodo de retención especificado. Por ejemplo, si el periodo de retención es de 24 horas, calcule el tamaño total de los registros REDO archivados acumulados durante una hora normal de procesamiento de transacciones y multiplique ese total por 24. Compare este total calculado de 24 horas con el espacio de almacenamiento disponible y decida si tiene suficiente espacio de almacenamiento para gestionar el procesamiento de las transacciones durante 24 horas.

**Para configurar el registro suplementario**

1. Para habilitar el registro suplementario en el nivel de base de datos, ejecute el siguiente comando.

   ```
   exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
   ```

1. Ejecute el siguiente comando para habilitar el registro suplementario de claves principales.

   ```
   exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
   ```

1. (Opcional) Habilite el registro complementario en el nivel de clave en el nivel de tabla.

   La base de datos de origen incurre en pequeños gastos adicionales si el registro suplementario del nivel de la clave está habilitado. Por lo tanto, si migra solo un subconjunto de tablas, es posible que le interese habilitar el registro suplementario del nivel de la clave en el nivel de la tabla. Para habilitar el registro suplementario del nivel de la clave en el nivel de la tabla, ejecute el siguiente comando.

   ```
   alter table table_name add supplemental log data (PRIMARY KEY) columns;
   ```

### Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.CDC"></a>

Puede configurar el acceso AWS DMS a los registros de redo de instancias de Amazon RDS for Oracle de origen mediante Binary Reader for CDC. 

**nota**  
Para utilizar Oracle LogMiner, basta con los privilegios de cuenta de usuario mínimos requeridos. Para obtener más información, consulte [Se requieren privilegios de cuenta de usuario en una fuente de Oracle AWS gestionada por Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges).

Para utilizar AWS DMS Binary Reader, especifique ajustes y atributos de conexión adicionales para el punto final de origen de Oracle, según su AWS DMS versión.

La compatibilidad con Binary Reader está disponible en las siguientes versiones de Amazon RDS para Oracle:
+ Oracle 11.2: versiones 11.2.0.4V11 y superiores
+ Oracle 12.1: versiones 12.1.0.2V7 y superiores
+ Oracle 12.2: todas las versiones
+ Oracle 18.0: todas las versiones
+ Oracle 19.0: todas las versiones

**Para configurar la CDC mediante Binary Reader de**

1. Inicie sesión en la base de datos de origen de Amazon RDS para Oracle como usuario principal y ejecute los siguientes procedimientos almacenados para crear los directorios en el nivel de servidor.

   ```
   exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
   exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
   ```

1. Conceda los siguientes privilegios a la cuenta de usuario de Oracle que se utiliza para acceder al punto de conexión de origen de Oracle.

   ```
   GRANT READ ON DIRECTORY ONLINELOG_DIR TO dms_user;
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO dms_user;
   ```

1. Configure los atributos de conexión adicionales siguientes en el punto de conexión de origen de Oracle en Amazon RDS:
   + Para las versiones 11.2 y 12.1 de Oracle de RDS, configure lo siguiente.

     ```
     useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true;
     oraclePathPrefix=/rdsdbdata/db/{$DATABASE_NAME}_A/;usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true;
     ```
   + Para las versiones 12.2, 18.0 y 19.0 de Oracle de RDS, configure lo siguiente.

     ```
     useLogminerReader=N;useBfile=Y;
     ```

**nota**  
Asegúrese de que no haya espacios en blanco tras el separador de punto y coma (;) para varias configuraciones de atributos, por ejemplo, `oneSetting;thenAnother`.

Para obtener más información sobre la configuración de una tarea de CDC, consulte [Configuración para CDC en una base de datos de origen de Oracle](#CHAP_Source.Oracle.CDC.Configuration).

### Uso de un Amazon RDS Oracle Standby (leer réplica) como fuente con Binary Reader for CDC en AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.StandBy"></a>

Compruebe los siguientes requisitos previos para utilizar Amazon RDS para Oracle Standby como origen cuando utilice Binary Reader para CDC en AWS DMS:
+ Utilice el usuario principal de Oracle para configurar Binary Reader.
+ Asegúrese de que AWS DMS actualmente solo admite el uso de Oracle Active Data Guard Standby.

Una vez hecho esto, utilice el siguiente procedimiento para utilizar RDS para Oracle Standby como origen cuando utilice Binary Reader para CDC.

**Configuración de RDS para Oracle Standby como origen al utilizar Binary Reader para CDC**

1. Inicie sesión en la instancia principal de RDS para Oracle como usuario principal.

1. Ejecute los siguientes procedimientos almacenados, tal como se documenta en la guía del usuario de Amazon RDS para crear los directorios en el nivel de servidor.

   ```
   exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
   exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
   ```

1. Identifique los directorios creados en el paso 2.

   ```
   SELECT directory_name, directory_path FROM all_directories
   WHERE directory_name LIKE ( 'ARCHIVELOG_DIR_%' )
           OR directory_name LIKE ( 'ONLINELOG_DIR_%' )
   ```

   Por ejemplo, el código anterior muestra una lista de directorios como la siguiente.  
![\[Table showing directory names and their corresponding paths for archive and online logs.\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/images/datarep-rds-server-level-directories.png)

1. Conceda el privilegio `Read` de los directorios anteriores a la cuenta de usuario de Oracle que se utiliza para acceder a Oracle Standby.

   ```
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR_A TO dms_user;
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR_B TO dms_user;
   GRANT READ ON DIRECTORY ONLINELOG_DIR_A TO dms_user;
   GRANT READ ON DIRECTORY ONLINELOG_DIR_B TO dms_user;
   ```

1. Realice un cambio de registro de archivado en la instancia principal. De este modo, se asegura de que los cambios en `ALL_DIRECTORIES` también se transfieran a Oracle Standby.

1. Ejecute una consulta de `ALL_DIRECTORIES` en Oracle Standby para confirmar que se han aplicado los cambios.

1. Cree un punto final de origen para Oracle Standby mediante la consola AWS DMS de administración o AWS Command Line Interface (AWS CLI). Al crear el punto de conexión, especifique los siguientes atributos de conexión adicionales.

   ```
   useLogminerReader=N;useBfile=Y;archivedLogDestId=1;additionalArchivedLogDestId=2
   ```

1. Después de crear el punto final, utilice **Probar la conexión** del **punto final en la página Crear punto final** de la consola o el AWS CLI `test-connection` comando para comprobar que la conectividad está establecida.

## Limitaciones del uso de Oracle como fuente de AWS DMS
<a name="CHAP_Source.Oracle.Limitations"></a>

Se aplican las siguientes restricciones cuando se utiliza una base de datos de Oracle como origen para AWS DMS:
+ AWS DMS admite los tipos de datos de Oracle Extended en AWS DMS la versión 3.5.0 y versiones posteriores.
+ AWS DMS no admite nombres de objetos largos (más de 30 bytes).
+ AWS DMS no admite índices basados en funciones.
+ Si administra el registro suplementario y realiza transformaciones en cualquiera de las columnas, asegúrese de que el registro suplementario esté activado para todos los campos y columnas. Para obtener información sobre cómo configurar un registro suplementario, consulte los siguientes temas:
  + Para una base de datos de origen de Oracle autoadministrada, consulte [Configuración del registro complementario](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).
  + Para obtener información sobre una base AWS de datos fuente de Oracle gestionada, consulte. [Configuración de una fuente de Oracle AWS gestionada por Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration)
+ AWS DMS no es compatible con la base de datos raíz de contenedores multiusuario (CDB\$1ROOT). Es compatible con un PDB que utilice Binary Reader.
+ AWS DMS no admite restricciones diferidas.
+ AWS DMS la versión 3.5.3 y superior es totalmente compatible con Secure. LOBs
+ AWS DMS admite la `rename table table-name to new-table-name` sintaxis de todas las versiones 11 y superiores de Oracle compatibles. Esta sintaxis no se admite para ninguna base de datos origen de la versión 10 de Oracle.
+ AWS DMS no reproduce los resultados de la sentencia `ALTER TABLE ADD column data_type DEFAULT default_value` DDL. En lugar de replicar `default_value` en el destino, establece la nueva columna en `NULL`.
+ Si utiliza la AWS DMS versión 3.4.7 o superior, para replicar los cambios que resultan de las operaciones de partición o subpartición, haga lo siguiente antes de iniciar una tarea de DMS.
  + Cree manualmente la estructura de tablas particionadas (DDL); 
  + Asegúrese de que DDL sea la misma tanto en el origen de Oracle como en el destino de Oracle; 
  + Establezca el atributo de conexión adicional `enableHomogenousPartitionOps=true`.

  Para obtener más información acerca de `enableHomogenousPartitionOps`, consulte [Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib). Además, tenga en cuenta que en las tareas FULL\$1CDC, DMS no replica los cambios en los datos capturados como parte de los cambios en caché. En ese caso de uso, vuelva a crear la estructura de la tabla en el destino de Oracle y vuelva a cargar las tablas en cuestión.

  Antes de la versión 3.4.7 AWS DMS :

  DMS no replica los cambios de datos resultantes de operaciones de partición o subpartición (`ADD`, `DROP`, `EXCHANGE` y `TRUNCATE`). Es posible que dichas actualizaciones provoquen los siguientes errores durante la replicación:
  + Para las operaciones `ADD`, las actualizaciones y eliminaciones de los datos agregados pueden generar una advertencia de «0 rows affected» (0 filas afectadas).
  + Para las operaciones `TRUNCATE` y `DROP`, las nuevas inserciones podrían generar errores de «duplicates» (duplicados).
  + `EXCHANGE` puede generar tanto una advertencia de «0 rows affected» (0 filas afectadas) «0 filas afectadas» como errores de «duplicates» (duplicados).

  Para replicar los cambios resultantes de operaciones de partición o subpartición, vuelva a cargar las tablas en cuestión. Después de agregar una nueva partición vacía, las operaciones en la partición recién agregada se replican en el destino normalmente.
+ AWS DMS las versiones anteriores a la 3.4 no admiten los cambios de datos en el destino que se produzcan al ejecutar la `CREATE TABLE AS` declaración en la fuente. Sin embargo, la nueva tabla se crea en el destino.
+ AWS DMS no captura los cambios realizados por el `DBMS_REDEFINITION` paquete de Oracle, por ejemplo, los metadatos de la tabla y el `OBJECT_ID` campo.
+ Cuando el modo LOB de tamaño limitado está activado, BLOB/CLOB las columnas vacías de la fuente de Oracle se replican como valores NULOS. Cuando el modo de LOB completo está activado, se replican como una cadena vacía (' ').
+ Al capturar los cambios con Oracle 11 LogMiner, se pierde una actualización de una columna CLOB con una longitud de cadena superior a 1982 y el destino no se actualiza.
+ Durante la captura de datos de cambios (CDC), AWS DMS no admite actualizaciones por lotes en columnas numéricas definidas como clave principal.
+ AWS DMS no admite determinados `UPDATE` comandos. El siguiente ejemplo es un comando `UPDATE` no admitido.

  ```
  UPDATE TEST_TABLE SET KEY=KEY+1;
  ```

  Aquí, `TEST_TABLE` es el nombre de la tabla y `KEY` es una columna numérica definida como una clave principal.
+ AWS DMS no admite el modo LOB completo para cargar columnas LONG y LONG RAW. En su lugar, puede utilizar el modo de LOB limitado para migrar estos tipos de datos a un destino de Oracle. En el modo LOB limitado, AWS DMS trunca a 64 KB los datos que haya configurado como columnas LONG o LONG RAW de más de 64 KB.
+ AWS DMS no admite el modo LOB completo para cargar columnas XMLTYPE. En su lugar, puede utilizar el modo de LOB limitado para migrar columnas XMLTYPE a un destino de Oracle. En el modo de LOB limitado, DMS trunca los datos que superen la variable “Tamaño máximo de LOB” definida por el usuario. El valor máximo recomendado para el “Tamaño máximo de LOB” es de 100 MB.
+ AWS DMS no replica las tablas cuyos nombres contengan apóstrofes.
+ AWS DMS apoya a los CDC desde puntos de vista materializados. Sin embargo, DMS no es compatible con CDC desde ningún otro punto de vista.
+ AWS DMS no admite los CDC para tablas organizadas por índices con un segmento adicional.
+ AWS DMS no admite la `Drop Partition` operación para tablas particionadas por referencia con el valor establecido en. `enableHomogenousPartitionOps` `true`
+ Cuando se utiliza Oracle LogMiner para acceder a los registros de redo, AWS DMS tiene las siguientes limitaciones:
  + Solo para Oracle 12, AWS DMS no replica ningún cambio en las columnas LOB.
  + AWS DMS no admite transacciones de XA en la replicación cuando se utiliza Oracle LogMiner.
  + Oracle LogMiner no admite conexiones a una base de datos conectable (PDB). Para conectarse a un PDB, acceda a los registros REDO mediante Binary Reader.
  + No se admiten las operaciones SHRINK SPACE.
+ Cuando utiliza Binary Reader, AWS DMS tiene estas limitaciones:
  + No admite clústeres de tablas.
  + Solo admite las operaciones `SHRINK SPACE` en el nivel de tabla. Este nivel incluye la tabla completa, las particiones y las subparticiones.
  + No admite cambios en las tablas organizadas por índices con compresión de claves.
  + No admite la implementación de registros redo en línea en dispositivos sin procesar.
  + Binary Reader solo admite TDE para las bases de datos de Oracle autoadministradas, ya que RDS para Oracle no admite la recuperación de contraseñas del wallet para las claves de cifrado de TDE.
+ AWS DMS no admite conexiones a una fuente de Amazon RDS Oracle mediante un proxy de Oracle Automatic Storage Management (ASM).
+ AWS DMS no admite columnas virtuales. 
+ AWS DMS no admite el tipo de `ROWID` datos ni las vistas materializadas basadas en una columna ROWID.

  AWS DMS es compatible parcialmente con Oracle Materialized Views. Para cargas completas, DMS puede hacer una copia de carga completa de una vista materializada de Oracle. DMS copia la vista materializada como tabla base en el sistema de destino e ignora las columnas ROWID de la vista materializada. Para la replicación continua (CDC), DMS intenta replicar los cambios en los datos de la vista materializada, pero es posible que los resultados no sean los ideales. En concreto, si la vista materializada se actualiza por completo, DMS replica las eliminaciones individuales de todas las filas, seguidas de las inserciones individuales de todas las filas. Se trata de un ejercicio que consume muchos recursos y podría funcionar mal en vistas materializadas con un gran número de filas. Para una replicación continua en la que las vistas materializadas se actualizan rápidamente, DMS intenta procesar y replicar los cambios de datos de actualización rápida. En cualquier caso, DMS omite las columnas ROWID de la vista materializada.
+ AWS DMS no carga ni captura tablas temporales globales.
+ Para los destinos de S3 que utilizan la replicación, habilite el registro adicional en cada columna para que las actualizaciones de las filas de origen puedan capturar todos los valores de las columnas. A continuación, se muestra un ejemplo: `alter table yourtablename add supplemental log data (all) columns;`.
+ La actualización de una fila con una clave única compuesta que contiene `null` no se puede replicar en el destino.
+ AWS DMS no admite el uso de varias claves de cifrado TDE de Oracle en el mismo punto final de origen. Cada punto de conexión solo puede tener un atributo para el nombre de clave de cifrado de TDE “`securityDbEncryptionName`” y una contraseña de TDE para esta clave.
+ Al replicar desde Amazon RDS for Oracle, solo se admite TDE con espacios de tablas cifrados y mediante Oracle. LogMiner
+ AWS DMS no admite varias operaciones de cambio de nombre de tablas en rápida sucesión.
+ Cuando se utiliza Oracle 19.0 como fuente, AWS DMS no admite las siguientes funciones:
  + Redirección de DML de Data-Guard
  + Tablas híbridas particionadas
  + Cuentas de Oracle exclusivas de esquemas
+ AWS DMS no admite la migración de tablas o vistas del tipo `BIN$` o`DR$`.
+ A partir de Oracle 18.x, no AWS DMS admite la captura de datos de cambios (CDC) desde Oracle Express Edition (Oracle Database XE).
+ Al migrar datos de una columna CHAR, DMS trunca los espacios finales. 
+ AWS DMS no admite la replicación desde contenedores de aplicaciones.
+ AWS DMS no admite la ejecución de bases de datos Oracle Flashback y puntos de restauración, ya que estas operaciones afectan a la coherencia de los archivos Oracle Redo Log.
+ Antes de la AWS DMS versión 3.5.3, el `INSERT` procedimiento de carga directa con la opción de ejecución paralela no se admitía en los siguientes casos:
  + Tablas sin comprimir con más de 255 columnas
  + El tamaño de la fila supera los 8 K
  + Tablas de Exadata HCC
  + Base de datos que se ejecuta en la plataforma Big Endian
+ Una tabla de origen sin clave principal ni única requiere que el registro complementario ALL COLUMN esté habilitado. Crea más actividades de registro REDO y puede aumentar la latencia de DMS CDC.
+ AWS DMS no migra los datos de las columnas invisibles de la base de datos de origen. Para incluir estas columnas en el ámbito de la migración, use la instrucción `ALTER TABLE` para hacer visibles estas columnas.
+ En todas las versiones de Oracle, AWS DMS no replica el resultado de `UPDATE` las operaciones en `XMLTYPE` las columnas LOB.
+ AWS DMS no admite la replicación desde tablas con restricciones de validez temporal.
+ Si la fuente de Oracle deja de estar disponible durante una tarea de carga completa, AWS DMS podría marcar la tarea como completada tras varios intentos de reconexión, aunque la migración de datos siga incompleta. En este escenario, las tablas de destino solo contienen los registros migrados antes de la pérdida de conexión, lo que podría crear incoherencias de datos entre los sistemas de origen y de destino. Para garantizar la integridad de los datos, debe reiniciar completamente la tarea de carga completa o volver a cargar las tablas específicas afectadas por la interrupción de la conexión.

## Compatibilidad con SSL para un punto de enlace de Oracle
<a name="CHAP_Security.SSL.Oracle"></a>

AWS DMS Los puntos de conexión de Oracle admiten SSL V3 para los modos SSL `none` y `verify-ca` SSL. Para utilizar SSL con un punto de enlace de Oracle, cargue el wallet de Oracle para el punto de enlace en lugar de archivos de certificado .pem. 

**Topics**
+ [Uso de un certificado existente para Oracle SSL](#CHAP_Security.SSL.Oracle.Existing)
+ [Uso de un certificado autofirmado para Oracle SSL](#CHAP_Security.SSL.Oracle.SelfSigned)

### Uso de un certificado existente para Oracle SSL
<a name="CHAP_Security.SSL.Oracle.Existing"></a>

Para utilizar una instalación de cliente Oracle existente para crear el archivo wallet de Oracle desde el archivo de certificado CA, siga los pasos que se indican a continuación.

**Para utilizar una instalación de cliente de Oracle existente para Oracle SSL con AWS DMS**

1. Establezca la variable del sistema `ORACLE_HOME` en la ubicación del directorio `dbhome_1` ejecutando el siguiente comando.

   ```
   prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1                        
   ```

1. Adjunte `$ORACLE_HOME/lib` a la variable del sistema `LD_LIBRARY_PATH`.

   ```
   prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib                        
   ```

1. Cree un directorio para el wallet de Oracle en `$ORACLE_HOME/ssl_wallet`.

   ```
   prompt>mkdir $ORACLE_HOME/ssl_wallet
   ```

1. Coloque el archivo `.pem` del certificado CA en el directorio `ssl_wallet`. Si utiliza Amazon RDS, puede descargar el archivo del certificado de entidad de certificación raíz `rds-ca-2015-root.pem` alojado por Amazon RDS. Para obtener más información sobre la descarga de este archivo, consulte [Uso SSL/TLS para cifrar una conexión a una instancia](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) de base de datos en la Guía del *usuario de Amazon RDS*.

1. Si su certificado CA contiene más de un archivo PEM (como un paquete global o regional de Amazon RDS), debe dividirlo en archivos separados y añadirlos a la cartera de Oracle mediante el siguiente script bash. Este script requiere que se introduzcan dos parámetros: la ruta al certificado CA y la ruta a la carpeta de la cartera de Oracle creada anteriormente.

   ```
   #!/usr/bin/env bash
   
   certnum=$(grep -c BEGIN <(cat $1))
   
   cnt=0
   temp_cert=""
   while read line
   do
   if [ -n "$temp_cert" -a "$line" == "-----BEGIN CERTIFICATE-----" ]
   then
   cnt=$(expr $cnt + 1)
   printf "\rImporting certificate # $cnt of $certnum"
   orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null
   temp_cert=""
   fi
   temp_cert+="$line"$'\n'
   done < <(cat $1)
   
   cnt=$(expr $cnt + 1)
   printf "\rImporting certificate # $cnt of $certnum"
   orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null
   echo ""
   ```

Cuando haya completado los pasos anteriores, podrá importar el archivo wallet con la llamada a la API `ImportCertificate` especificando el parámetro certificate-wallet. A continuación, podrá utilizar el certificado wallet importado al seleccionar `verify-ca` como el modo SSL al crear o modificar su punto de enlace de Oracle.

**nota**  
 Los monederos de Oracle son archivos binarios. AWS DMS acepta estos archivos tal cual. 

### Uso de un certificado autofirmado para Oracle SSL
<a name="CHAP_Security.SSL.Oracle.SelfSigned"></a>

Para utilizar un certificado autofirmado para Oracle SSL, siga los pasos siguientes, suponiendo que la contraseña de wallet de Oracle sea de `oracle123`.

**Para utilizar un certificado autofirmado para Oracle SSL con AWS DMS**

1. Cree un directorio que utilizará para trabajar con el certificado autofirmado.

   ```
   mkdir -p /u01/app/oracle/self_signed_cert
   ```

1. Cambie al directorio que ha creado en el paso anterior.

   ```
   cd /u01/app/oracle/self_signed_cert
   ```

1. Cree una clave raíz.

   ```
   openssl genrsa -out self-rootCA.key 2048
   ```

1. Firme usted mismo un certificado raíz con la clave raíz que ha creado en el paso anterior.

   ```
   openssl req -x509 -new -nodes -key self-rootCA.key 
           -sha256 -days 3650 -out self-rootCA.pem
   ```

   Utilice parámetros de entrada como los siguientes.
   + `Country Name (2 letter code) [XX]`, por ejemplo: `AU`
   + `State or Province Name (full name) []`, por ejemplo: `NSW`
   + `Locality Name (e.g., city) [Default City]`, por ejemplo: `Sydney`
   + `Organization Name (e.g., company) [Default Company Ltd]`, por ejemplo: `AmazonWebService`
   + `Organizational Unit Name (e.g., section) []`, por ejemplo: `DBeng`
   + `Common Name (e.g., your name or your server's hostname) []`, por ejemplo: `aws`
   + `Email Address []`, por ejemplo: abcd.efgh@amazonwebservice.com

1. Cree un directorio wallet de Oracle para la base de datos de Oracle.

   ```
   mkdir -p /u01/app/oracle/wallet
   ```

1. Cree un nuevo wallet de Oracle.

   ```
   orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd oracle123 -auto_login_local
   ```

1. Añada el certificado raíz al wallet de Oracle.

   ```
   orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -trusted_cert 
   -cert /u01/app/oracle/self_signed_cert/self-rootCA.pem
   ```

1. Enumere el contenido del wallet de Oracle. La lista debe incluir el certificado raíz. 

   ```
   orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
   ```

   Por ejemplo, es posible que tenga un aspecto similar al siguiente.

   ```
   Requested Certificates:
   User Certificates:
   Trusted Certificates:
   Subject:        CN=aws,OU=DBeng,O= AmazonWebService,L=Sydney,ST=NSW,C=AU
   ```

1. Genere la solicitud de firma del certificado (CSR) mediante la utilidad ORAPKI.

   ```
   orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 
   -dn "CN=aws" -keysize 2048 -sign_alg sha256
   ```

1. Ejecute el comando siguiente.

   ```
   openssl pkcs12 -in /u01/app/oracle/wallet/ewallet.p12 -nodes -out /u01/app/oracle/wallet/nonoracle_wallet.pem
   ```

   Esto tiene una salida similar a la siguiente.

   ```
   Enter Import Password:
   MAC verified OK
   Warning unsupported bag type: secretBag
   ```

1. Inserte 'dms' como nombre común.

   ```
   openssl req -new -key /u01/app/oracle/wallet/nonoracle_wallet.pem -out certdms.csr
   ```

   Utilice parámetros de entrada como los siguientes.
   + `Country Name (2 letter code) [XX]`, por ejemplo: `AU`
   + `State or Province Name (full name) []`, por ejemplo: `NSW`
   + `Locality Name (e.g., city) [Default City]`, por ejemplo: `Sydney`
   + `Organization Name (e.g., company) [Default Company Ltd]`, por ejemplo: `AmazonWebService`
   + `Organizational Unit Name (e.g., section) []`, por ejemplo: `aws`
   + `Common Name (e.g., your name or your server's hostname) []`, por ejemplo: `aws`
   + `Email Address []`, por ejemplo: abcd.efgh@amazonwebservice.com

   Asegúrese de que no es lo mismo que en el paso 4. Puede hacerlo, por ejemplo, cambiando el nombre de la unidad organizativa por un nombre diferente, como se muestra.

   Ingrese los siguientes atributos adicionales para enviarlos con la solicitud de certificado.
   + `A challenge password []`, por ejemplo: `oracle123`
   + `An optional company name []`, por ejemplo: `aws`

1. Obtenga la firma del certificado.

   ```
   openssl req -noout -text -in certdms.csr | grep -i signature
   ```

   La clave de firma de esta publicación es `sha256WithRSAEncryption`.

1. Utilice el siguiente comando para generar el archivo de certificado (`.crt`).

   ```
   openssl x509 -req -in certdms.csr -CA self-rootCA.pem -CAkey self-rootCA.key 
   -CAcreateserial -out certdms.crt -days 365 -sha256
   ```

   Esto muestra una salida similar a la siguiente.

   ```
   Signature ok
   subject=/C=AU/ST=NSW/L=Sydney/O=awsweb/OU=DBeng/CN=aws
   Getting CA Private Key
   ```

1. Añada el certificado al wallet.

   ```
   orapki wallet add -wallet /u01/app/oracle/wallet -pwd oracle123 -user_cert -cert certdms.crt
   ```

1. Ver wallet. Debería tener dos entradas. Consulte el siguiente código.

   ```
   orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
   ```

1. Configure el archivo `sqlnet.ora` (`$ORACLE_HOME/network/admin/sqlnet.ora`).

   ```
   WALLET_LOCATION =
      (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
          (DIRECTORY = /u01/app/oracle/wallet/)
        )
      ) 
   
   SQLNET.AUTHENTICATION_SERVICES = (NONE)
   SSL_VERSION = 1.0
   SSL_CLIENT_AUTHENTICATION = FALSE
   SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
   ```

1. Detenga el listener de Oracle.

   ```
   lsnrctl stop
   ```

1. Añada entradas para SSL en el archivo `listener.ora` (`$ORACLE_HOME/network/admin/listener.ora`).

   ```
   SSL_CLIENT_AUTHENTICATION = FALSE
   WALLET_LOCATION =
     (SOURCE =
       (METHOD = FILE)
       (METHOD_DATA =
         (DIRECTORY = /u01/app/oracle/wallet/)
       )
     )
   
   SID_LIST_LISTENER =
    (SID_LIST =
     (SID_DESC =
      (GLOBAL_DBNAME = SID)
      (ORACLE_HOME = ORACLE_HOME)
      (SID_NAME = SID)
     )
    )
   
   LISTENER =
     (DESCRIPTION_LIST =
       (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
         (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522))
         (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
       )
     )
   ```

1. Configure el archivo `tnsnames.ora` (`$ORACLE_HOME/network/admin/tnsnames.ora`).

   ```
   <SID>=
   (DESCRIPTION=
           (ADDRESS_LIST = 
                   (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
           )
           (CONNECT_DATA =
                   (SERVER = DEDICATED)
                   (SERVICE_NAME = <SID>)
           )
   )
   
   <SID>_ssl=
   (DESCRIPTION=
           (ADDRESS_LIST = 
                   (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522))
           )
           (CONNECT_DATA =
                   (SERVER = DEDICATED)
                   (SERVICE_NAME = <SID>)
           )
   )
   ```

1. Reinicie el listener de Oracle.

   ```
   lsnrctl start
   ```

1. Muestre el estado de listener de Oracle.

   ```
   lsnrctl status
   ```

1. Pruebe la conexión SSL a la base de datos desde localhost utilizando sqlplus y la entrada tnsnames SSL.

   ```
   sqlplus -L ORACLE_USER@SID_ssl
   ```

1. Compruebe que se ha conectado correctamente mediante SSL.

   ```
   SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL;
   
   SYS_CONTEXT('USERENV','NETWORK_PROTOCOL')
   --------------------------------------------------------------------------------
   tcps
   ```

1. Cambie de directorio al directorio con el certificado autofirmado.

   ```
   cd /u01/app/oracle/self_signed_cert
   ```

1. Cree una nueva cartera de cliente de Oracle AWS DMS para usarla.

   ```
   orapki wallet create -wallet ./ -auto_login_only
   ```

1. Añada el certificado raíz autofirmado al wallet de Oracle.

   ```
   orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
   ```

1. Enumere el contenido de la cartera de Oracle AWS DMS para su uso. La lista debe incluir el certificado raíz autofirmado.

   ```
   orapki wallet display -wallet ./
   ```

   Esto tiene una salida similar a la siguiente.

   ```
   Trusted Certificates:
   Subject:        CN=aws,OU=DBeng,O=AmazonWebService,L=Sydney,ST=NSW,C=AU
   ```

1. Cargue la cartera de Oracle que acaba de crear AWS DMS.

## Métodos de cifrado compatibles para utilizar Oracle como fuente de AWS DMS
<a name="CHAP_Source.Oracle.Encryption"></a>

En la siguiente tabla, encontrará los métodos de cifrado de datos transparente (TDE) que se AWS DMS admiten cuando se trabaja con una base de datos fuente de Oracle. 


| Método de acceso a registros REDO | Espacio de tabla de TDE | Columna de TDE | 
| --- | --- | --- | 
| Oracle LogMiner | Sí | Sí | 
| Binary Reader | Sí | Sí | 

AWS DMS admite Oracle TDE cuando se utiliza Binary Reader, tanto a nivel de columna como a nivel de espacio de tabla. Para utilizar el cifrado TDE AWS DMS, identifique primero la ubicación de la cartera de Oracle en la que se almacenan la clave de cifrado TDE y la contraseña de TDE. A continuación, identifique la clave de cifrado de TDE y la contraseña correctas para el punto de conexión de origen de Oracle.

**Identificación y especificación de la clave y la contraseña de cifrado para el cifrado de TDE**

1. Ejecute la siguiente consulta para encontrar el wallet de cifrado de Oracle en el host de la base de datos de Oracle.

   ```
   SQL> SELECT WRL_PARAMETER FROM V$ENCRYPTION_WALLET;
   
   WRL_PARAMETER
   --------------------------------------------------------------------------------
   /u01/oracle/product/12.2.0/dbhome_1/data/wallet/
   ```

   Aquí, `/u01/oracle/product/12.2.0/dbhome_1/data/wallet/` es la ubicación del wallet.

1. Para obtener el ID de clave maestra de un origen CDB o un origen que no sea CDB, haga lo siguiente:

   1. Para un origen que no sea CDB, ejecute la siguiente consulta para obtener el ID de la clave de cifrado maestra:

      ```
      SQL>  select rownum, key_id, activation_time from v$encryption_keys;
      
      ROWNUM KEY_ID                                                 ACTIVATION_TIME
      ------ ------------------------------------------------------ ---------------
           1 AeKask0XZU+NvysflCYBEVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   04-SEP-24 10.20.56.605200 PM +00:00
           2 AV7WU9uhoU8rv8daE/HNnSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   10-AUG-21 07.52.03.966362 PM +00:00
           3 AckpoJ/f+k8xvzJ+gSuoVH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA   14-SEP-20 09.26.29.048870 PM +00:00
      ```

      El tiempo de activación es útil si tiene previsto iniciar la CDC desde un punto del pasado. Por ejemplo, con los resultados anteriores, puede iniciar la CDC en algún momento entre el 10 de agosto de 2021 a las 19:52:03 y el 14 de septiembre de 2020 a las 21:26:29 con la clave maestra de ROWNUM 2. Cuando la tarea alcance la repetición generada el 14 de septiembre de 2020 a las 21:26:29, o después de esa fecha, se genera un error, deberá modificar el punto de conexión de origen, proporcionar el identificador de clave maestra en ROWNUM 3 y, a continuación, reanudar la tarea.

   1. En el caso del origen de CDB, DMS exige la clave de cifrado maestra CDB\$1ROOT. Conéctese a CDB\$1ROOT y ejecute la siguiente consulta:

      ```
      SQL> select rownum, key_id, activation_time from v$encryption_keys where con_id = 1;
      
      ROWNUM KEY_ID                                               ACTIVATION_TIME
      ------ ---------------------------------------------------- -----------------------------------
           1 Aa2E/Vwb5U+zv5hCncS5ErMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 29-AUG-24 12.51.19.699060 AM +00:00
      ```

1. Desde la línea de comandos, muestre las entradas del wallet de cifrado en el host de la base de datos de Oracle de origen.

   ```
   $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -list
   Oracle Secret Store entries:
   ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ORACLE.SECURITY.DB.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
   ORACLE.SECURITY.ID.ENCRYPTION.
   ORACLE.SECURITY.KB.ENCRYPTION.
   ORACLE.SECURITY.KM.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ```

   Busque la entrada que contiene el ID de clave principal que encontró en el paso 2 (`AWGDC9glSk8Xv+3bVveiVSg`). Esta entrada es el nombre de la clave de cifrado de TDE.

1. Consulte los detalles de la entrada que encontró en el paso anterior.

   ```
   $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   Oracle Secret Store Tool : Version 12.2.0.1.0
   Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
   Enter wallet password:
   ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

   Ingrese la contraseña del wallet para ver el resultado.

   Aquí, el valor a la derecha de `'='` es la contraseña de TDE.

1. Especifique el nombre de la clave de cifrado de TDE para el punto de conexión de origen de Oracle configurando el atributo de conexión `securityDbEncryptionName` adicional.

   ```
   securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ```

1. Proporcione la contraseña de TDE asociada a esta clave en la consola como parte del valor de la **contraseña** del origen de Oracle. Utilice el siguiente orden para formatear los valores de contraseña separados por comas y terminados por el valor de la contraseña de TDE.

   ```
   Oracle_db_password,ASM_Password,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

   Especifique los valores de contraseña en este orden independientemente de la configuración de la base de datos de Oracle. Por ejemplo, si utiliza TDE pero la base de datos de Oracle no utiliza ASM, especifique los valores de contraseña en el orden siguiente, separados por comas.

   ```
   Oracle_db_password,,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

Si las credenciales de TDE que especifique son incorrectas, la tarea de AWS DMS migración no fallará. Sin embargo, la tarea tampoco lee ni aplica los cambios de replicación en curso a la base de datos de destino. Tras iniciar la tarea, monitoree las **estadísticas de la tabla** en la página de tareas de migración de la consola para asegurarse de que los cambios se replican.

Si DBA cambia los valores de las credenciales de TDE de la base de datos de Oracle mientras la tarea está en ejecución, la tarea produce un error. El mensaje de error contiene el nombre de la nueva clave de cifrado de TDE. Para especificar nuevos valores y reiniciar la tarea, utilice el procedimiento anterior.

**importante**  
No puede manipular un wallet de TDE creado en una ubicación de Automatic Storage Management (ASM) de Oracle porque los comandos del nivel del sistema operativo como `cp`, `mv`, `orapki` y `mkstore` corrompen los archivos del wallet almacenados en una ubicación de ASM. Esta restricción es específica de los archivos del wallet de TDE almacenados solo en una ubicación de ASM, pero no de los archivos del wallet de TDE almacenados en un directorio local del sistema operativo.  
Para manipular un wallet de TDE almacenado en ASM con comandos de nivel de sistema operativo, cree un almacén de claves local y combine el almacén de claves de ASM con el almacén de claves local de la siguiente manera:   
Cree un almacén de claves local.  

   ```
   ADMINISTER KEY MANAGEMENT create keystore file system wallet location identified by wallet password;
   ```
Combine el almacén de claves de ASM con el almacén de claves local.  

   ```
   ADMINISTER KEY MANAGEMENT merge keystore ASM wallet location identified by wallet password into existing keystore file system wallet location identified by wallet password with backup;
   ```
A continuación, para mostrar las entradas de wallet de cifrado y la contraseña de TDE, ejecute los pasos 3 y 4 en el almacén de claves local.

## Métodos de compresión compatibles para utilizar Oracle como fuente de AWS DMS
<a name="CHAP_Source.Oracle.Compression"></a>

En la siguiente tabla, puede encontrar los métodos de compresión AWS DMS compatibles cuando se trabaja con una base de datos fuente de Oracle. Como se muestra en la tabla, el soporte de compresión depende tanto de la versión de la base de datos de Oracle como de si el DMS está configurado para utilizar Oracle LogMiner para acceder a los redo logs.


| Versión | Basic | OLTP |  HCC (de Oracle 11g R2 o más reciente)  | Otros | 
| --- | --- | --- | --- | --- | 
| Oracle 10 | No | N/A | N/A | No | 
| Oracle 11 o más reciente: Oracle LogMiner | Sí | Sí | Sí  | Sí, cualquier método de compresión compatible con Oracle LogMiner. | 
| Oracle 11 o más reciente: Binary Reader | Sí | Sí | Sí: para obtener más información, consulte la siguiente nota. | Sí | 

**nota**  
Cuando el punto de enlace de origen de Oracle está configurado para utilizar Binary Reader, el nivel de consulta bajo del método de compresión HCC tan solo se admite para las tareas de carga completa.

## Replicación de tablas anidadas utilizando Oracle como fuente de AWS DMS
<a name="CHAP_Source.Oracle.NestedTables"></a>

AWS DMS admite la replicación de tablas de Oracle que contienen columnas que son tablas anidadas o de tipos definidos. Para habilitar esta funcionalidad, agregue el valor de atributo de conexión adicional siguiente al punto de conexión de origen de Oracle.

```
allowSelectNestedTables=true;
```

AWS DMS crea las tablas de destino a partir de las tablas anidadas de Oracle como tablas principales y secundarias normales en el destino sin una restricción única. Para acceder a los datos correctos en el destino, una las tablas principal y secundaria. Para ello, primero cree manualmente un índice no único en la columna `NESTED_TABLE_ID` de la tabla secundaria de destino. A continuación, puede utilizar la columna `NESTED_TABLE_ID` de la cláusula de unión `ON` junto con la columna principal que corresponde al nombre de la tabla secundaria. Además, la creación de un índice de este tipo mejora el rendimiento cuando se actualizan o eliminan los datos de la tabla secundaria de destino. AWS DMS Para ver un ejemplo, consulta [Ejemplo de unión para tablas principal y secundaria en el destino](#CHAP_Source.Oracle.NestedTables.JoinExample).

Se recomienda configurar la tarea de modo que se detenga después de finalizar una carga completa. A continuación, cree estos índices no únicos para todas las tablas secundarias replicadas en el destino y reanude la tarea.

Si una tabla anidada capturada se añade a una tabla principal existente (capturada o no capturada), la AWS DMS gestiona correctamente. Sin embargo, no se crea el índice no único de la tabla de destino correspondiente. En este caso, si la tabla secundaria de destino se vuelve extremadamente grande, el rendimiento puede verse afectado. Si esto sucede, le recomendamos que detenga la tarea, cree el índice y, a continuación, reanude la tarea.

Después de replicar las tablas anidadas en el destino, haga que el DBA ejecute una unión en las tablas principal y secundaria correspondientes para aplanar los datos.

### Requisitos previos para la replicación de tablas anidadas de Oracle como origen
<a name="CHAP_Source.Oracle.NestedTables.Prerequisites"></a>

Asegúrese de replicar las tablas principales para todas las tablas anidadas replicadas. Incluya tanto las tablas principales (las tablas que contienen la columna de la tabla anidada) como las tablas secundarias (es decir, anidadas) en las AWS DMS asignaciones de tablas.

### Tipos de tablas anidadas de Oracle admitidos como origen
<a name="CHAP_Source.Oracle.NestedTables.Types"></a>

AWS DMS admite los siguientes tipos de tablas anidadas de Oracle como fuente:
+ Tipo de datos:
+ Objeto definido por el usuario

### Limitaciones del AWS DMS soporte de tablas anidadas de Oracle como fuente
<a name="CHAP_Source.Oracle.NestedTables.Limitations"></a>

AWS DMS tiene las siguientes limitaciones a la hora de admitir tablas anidadas de Oracle como fuente:
+ AWS DMS solo admite un nivel de anidación de tablas.
+ AWS DMS el mapeo de tablas no comprueba que la tabla o tablas principales y secundarias estén seleccionadas para la replicación. Es decir, es posible seleccionar una tabla principal sin una tabla secundaria y viceversa.

### ¿Cómo AWS DMS se replican las tablas anidadas de Oracle como fuente
<a name="CHAP_Source.Oracle.NestedTables.HowReplicated"></a>

AWS DMS replica las tablas principales y anidadas en el destino de la siguiente manera:
+ AWS DMS crea la tabla principal idéntica a la fuente. A continuación, define la columna anidada en la principal como `RAW(16)` e incluye una referencia a las tablas anidadas de la principal en la columna `NESTED_TABLE_ID`.
+ AWS DMS crea la tabla secundaria idéntica a la fuente anidada, pero con una columna adicional denominada`NESTED_TABLE_ID`. Esta columna tiene el mismo tipo y valor que la columna anidada principal correspondiente y tiene el mismo significado.

### Ejemplo de unión para tablas principal y secundaria en el destino
<a name="CHAP_Source.Oracle.NestedTables.JoinExample"></a>

Para aplanar la tabla principal, ejecute una unión de las tablas principal y secundaria, como se muestra en el siguiente ejemplo:

1. Cree la tabla de `Type`.

   ```
   CREATE OR REPLACE TYPE NESTED_TEST_T AS TABLE OF VARCHAR(50);
   ```

1. Cree la tabla principal con una columna de tipo `NESTED_TEST_T`, tal y como se ha definido antes.

   ```
   CREATE TABLE NESTED_PARENT_TEST (ID NUMBER(10,0) PRIMARY KEY, NAME NESTED_TEST_T) NESTED TABLE NAME STORE AS NAME_KEY;
   ```

1. Aplane la tabla `NESTED_PARENT_TEST` mediante una unión con la tabla secundaria `NAME_KEY`, donde `CHILD.NESTED_TABLE_ID` coincide con `PARENT.NAME`.

   ```
   SELECT … FROM NESTED_PARENT_TEST PARENT, NAME_KEY CHILD WHERE CHILD.NESTED_
   TABLE_ID = PARENT.NAME;
   ```

## Almacenar REDO en Oracle ASM cuando se utiliza Oracle como fuente de AWS DMS
<a name="CHAP_Source.Oracle.REDOonASM"></a>

Para orígenes de Oracle con una alta generación de REDO, almacenar REDO en Oracle ASM puede beneficiar el rendimiento, especialmente en una configuración de RAC, ya que se puede configurar DMS para distribuir las lecturas de ASM REDO en todos los nodos de ASM.

Para utilizar esta configuración, utilice el atributo de conexión `asmServer`. Por ejemplo, la siguiente cadena de conexión distribuye las lecturas DMS REDO entre 3 nodos de ASM:

```
asmServer=(DESCRIPTION=(CONNECT_TIMEOUT=8)(ENABLE=BROKEN)(LOAD_BALANCE=ON)(FAILOVER=ON)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node1_ip_address)(PORT=asm_node1_port_number))
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node2_ip_address)(PORT=asm_node2_port_number))
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node3_ip_address)(PORT=asm_node3_port_number)))
(CONNECT_DATA=(SERVICE_NAME=+ASM)))
```

Al utilizar NFS para almacenar Oracle REDO, es importante asegurarse de que se han aplicado los parches de cliente de DNFS (Direct NFS) aplicables, específicamente cualquier parche que aborde el error 25224242 de Oracle. Para obtener más información, consulte la siguiente publicación de Oracle sobre los parches relacionados con el cliente Direct NFS, [parches recomendados para el cliente Direct NFS](https://support.oracle.com/knowledge/Oracle Cloud/1495104_1.html). 

Además, para mejorar el rendimiento de lectura de NFS, le recomendamos que aumente el valor de `rsize` y `wsize` en `fstab`, para el volumen de NFS, como se muestra en el siguiente ejemplo.

```
NAS_name_here:/ora_DATA1_archive /u09/oradata/DATA1 nfs rw,bg,hard,nointr,tcp,nfsvers=3,_netdev,
timeo=600,rsize=262144,wsize=262144
```

Además, ajuste el valor `tcp-max-xfer-size` de la siguiente manera:

```
vserver nfs modify -vserver vserver -tcp-max-xfer-size 262144
```

## Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS
<a name="CHAP_Source.Oracle.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de origen de Oracle de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de origen mediante la AWS DMS consola o mediante el `create-endpoint` [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)comando de la sintaxis `--oracle-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Oracle como origen.


| Name | Description (Descripción) | 
| --- | --- | 
| AccessAlternateDirectly |  Establezca este atributo en falso para utilizar Binary Reader y capturar los datos de cambios de Amazon RDS para Oracle como origen. Esto indica a la instancia de DMS que no obtenga acceso a los registros REDO a través de ninguno de los prefijos de ruta sustitutos especificados mediante el acceso directo a los archivos. Para obtener más información, consulte [Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). Valor predeterminado: verdadero  Valores válidos: true/false Ejemplo: `--oracle-settings '{"AccessAlternateDirectly": false}'`  | 
|  `AdditionalArchivedLogDestId`  |  Establezca este atributo con `ArchivedLogDestId` en una configuración principal o en espera. Este atributo es útil en una transición cuando se utiliza una base de datos de Oracle Data Guard como origen. En este caso, AWS DMS necesita saber desde qué destino se van a archivar los redo logs para leer los cambios. Esto es porque la instancia principal anterior es ahora una instancia en espera después de una transición. Aunque AWS DMS admite el uso de la `RESETLOGS` opción Oracle para abrir la base de datos, nunca la utilice `RESETLOGS` a menos que sea necesario. Para obtener información adicional acerca de `RESETLOGS`, consulte [Conceptos de reparación de datos RMAN](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/rman-data-repair-concepts.html#GUID-1805CCF7-4AF2-482D-B65A-998192F89C2B) en la *Guía de usuario sobre copias de seguridad y recuperación de bases de datos de Oracle®*. Valores válidos: ID de destino de archivo Ejemplo: `--oracle-settings '{"AdditionalArchivedLogDestId": 2}'`  | 
|  `AddSupplementalLogging`  |  Establezca este atributo para configurar un registro suplementario para la base de datos de Oracle. Este atributo habilita una de las siguientes opciones en todas las tablas seleccionadas para una tarea de migración, en función de los metadatos de la tabla: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.Oracle.html) Valor predeterminado: false  Valores válidos: true/false  Ejemplo: `--oracle-settings '{"AddSupplementalLogging": false}'`  Si utiliza esta opción, tiene que habilitar igualmente el registro suplementario en el nivel de la base de datos tal y como hemos mencionado con anterioridad.    | 
|  `AllowSelectNestedTables`  |  Establezca este atributo en «true» para habilitar la replicación de tablas de Oracle que contienen columnas que son tablas anidadas o tipos definidos. Para obtener más información, consulte [Replicación de tablas anidadas utilizando Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.NestedTables). Valor predeterminado: false  Valores válidos: true/false Ejemplo: `--oracle-settings '{"AllowSelectNestedTables": true}'`  | 
|  `ArchivedLogDestId`  |  Especifica el ID de los registros REDO archivados. Este valor debe ser el mismo que un número en la columna dest\$1id de la vista v\$1archived\$1log. Si trabaja con un destino de registro REDO adicional, le recomendamos que utilice el atributo `AdditionalArchivedLogDestId` para especificar el ID de destino adicional. De esta forma se mejora el desempeño garantizando que se obtiene acceso a los registros correctos desde el principio.  Valor predeterminado: 1 Valores válidos: Number  Ejemplo: `--oracle-settings '{"ArchivedLogDestId": 1}'`  | 
|  `ArchivedLogsOnly`  |  Si este campo está establecido en Y, AWS DMS solo se accede a los redo logs archivados. Si los redo logs archivados se almacenan únicamente en Oracle ASM, se deben conceder privilegios de ASM a la cuenta de AWS DMS usuario.  Valor predeterminado: N  Valores válidos: Y/N  Ejemplo: `--oracle-settings '{"ArchivedLogsOnly": Y}'`  | 
|  `asmUsePLSQLArray` (Solo ECA)  |  Utilice este atributo de conexión adicional (ECA) al capturar los cambios de origen con BinaryReader. Esta configuración permite a DMS almacenar en búfer 50 lecturas en el nivel de ASM por cada subproceso de lectura y, al mismo tiempo, controlar el número de subprocesos mediante el atributo `parallelASMReadThreads`. Al establecer este atributo, el lector AWS DMS binario utiliza un PL/SQL bloque anónimo para capturar los datos rehechos y enviarlos de vuelta a la instancia de replicación como un búfer grande. Esto reduce el número de viajes de ida y vuelta al origen. Esto puede mejorar considerablemente el rendimiento de captura del origen, pero se traduce en un mayor consumo de memoria PGA en la instancia de ASM. Pueden surgir problemas de estabilidad si el destino de memoria no es suficiente. Puede utilizar la siguiente fórmula para estimar el uso total de memoria PGA de una instancia de ASM mediante una sola tarea de DMS: `number_of_redo_threads * parallelASMReadThreads * 7 MB` Valor predeterminado: false Valores válidos: true/false Ejemplo de ECA: `asmUsePLSQLArray=true;`  | 
|  `ConvertTimestampWithZoneToUTC`  |  Establezca este atributo en `true` para convertir el valor de la marca temporal de las columnas “TIMESTAMP WITH TIME ZONE” y “TIMESTAMP WITH LOCAL TIME ZONE” a UTC. De forma predeterminada, el valor de este atributo es “falso” y los datos se replicarán con la zona horaria de la base de datos de origen. Valor predeterminado: false Valores válidos: true/false Ejemplo: `--oracle-settings '{"ConvertTimestampWithZoneToUTC": true}'`  | 
|  `EnableHomogenousPartitionOps`  |  Establezca este atributo en `true` para habilitar la replicación de las operaciones de DDL de Oracle Partition y subPartition para la migración *homogénea* de Oracle. Tenga en cuenta que esta función y esta mejora se introdujeron en la AWS DMS versión 3.4.7. Valor predeterminado: false Valores válidos: true/false Ejemplo: `--oracle-settings '{"EnableHomogenousPartitionOps": true}'`  | 
|  `EnableHomogenousTablespace`  |  Establecer este atributo para habilitar la replicación homogénea de espacio de tabla y crear tablas o índices existentes bajo el mismo espacio de tabla en el destino. Valor predeterminado: false Valores válidos: true/false Ejemplo: `--oracle-settings '{"EnableHomogenousTablespace": true}'`  | 
|  `EscapeCharacter`  |  Establezca este atributo en un carácter de escape. Este carácter de escape le permite hacer que un único carácter comodín se comporte como un carácter normal en las expresiones de asignación de tablas. Para obtener más información, consulte [Comodines en la asignación de tablas](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Wildcards.md). Valor predeterminado: nulo  Valores válidos: cualquier carácter que no sea un carácter comodín Ejemplo: `--oracle-settings '{"EscapeCharacter": "#"}'` Solo puede utilizarse `escapeCharacter` para nombres de tabla. No escapa a los caracteres de los nombres de los esquemas o de las columnas.  | 
|  `ExposeViews`  |  Utilice este atributo para extraer los datos una vez desde una vista; no puede utilizarlos para la replicación continua. Al extraer los datos de una vista, la vista se muestra como una tabla en el esquema de destino. Valor predeterminado: false Valores válidos: true/false Ejemplo: `--oracle-settings '{"ExposeViews": true}'`  | 
|  `ExtraArchivedLogDestIds`  |  Especifica IDs uno o más destinos para uno o más redo logs archivados. Estos IDs son los valores de la columna dest\$1id de la vista v\$1archived\$1log. Use esta configuración con el atributo de conexión ArchivedLogDestId adicional en una configuración o configuración. primary-to-single primary-to-multiple-standby Este ajuste es útil en una conmutación cuando se utiliza una base de datos de Oracle Data Guard como origen. En este caso, AWS DMS necesita información sobre el destino desde el que se van a archivar los redo logs para leer los cambios. AWS DMS lo necesita porque, tras la conmutación, la instancia principal anterior es una instancia en espera. Valores válidos: ID de destino de archivo Ejemplo: `--oracle-settings '{"ExtraArchivedLogDestIds": 1}'`  | 
|  `FailTasksOnLobTruncation`  |  Cuando se establece en `true`, este atributo provocar un error en una tarea si el tamaño real de una columna de LOB es superior al `LobMaxSize` especificado. Si una tarea está establecida en el modo LOB limitado y esta opción está establecida en `true`, la tarea genera un error en vez de truncar los datos de LOB. Valor predeterminado: false  Valores válidos: booleano  Ejemplo: `--oracle-settings '{"FailTasksOnLobTruncation": true}'`  | 
|  `filterTransactionsOfUser` (Solo ECA)  |  Utilice este atributo de conexión adicional (ECA) para permitir que DMS ignore las transacciones de un usuario específico al replicar datos de Oracle cuando los utilice. LogMiner Puede pasar valores de nombre de usuario separados por comas, pero deben estar todos en MAYÚSCULAS. Ejemplo de ECA: `filterTransactionsOfUser=USERNAME;`  | 
|  `NumberDataTypeScale`  |  Especifica la escala de números. Puede seleccionar una escala vertical hasta 38 o puede seleccionar -1 para FLOAT o -2 para VARCHAR. De forma predeterminada, el tipo de datos NUMBER se convierte a precisión 38, escala 10. Valor predeterminado: 10  Valores válidos: -2 a 38 (-2 para VARCHAR, -1 para FLOAT) Ejemplo: `--oracle-settings '{"NumberDataTypeScale": 12}'`  Seleccione una combinación de escalas de precisión, -1 (FLOAT) o -2 (VARCHAR). DMS admite cualquier combinación de escalas de precisión admitida por Oracle. Si la precisión es 39 o superior, seleccione -2 (VARCHAR). La NumberDataTypeScale configuración de la base de datos Oracle se utiliza únicamente para el tipo de datos NUMBER (sin la definición explícita de precisión y escala). Debe tener en cuenta que puede perderse precisión si esta configuración no se configura correctamente.   | 
|  `OpenTransactionWindow`  |   Proporciona el tiempo en minutos para comprobar si hay transacciones abiertas para una tarea exclusiva de CDC. Cuando se establece `OpenTransactionWindow` en 1 o más, DMS utiliza `SCN_TO_TIMESTAMP` para convertir los valores de número de cambio del sistema en valores de marca de tiempo. Debido a las limitaciones de la base de datos Oracle, si especifica un número de cambio del sistema demasiado antiguo como punto de partida de CDC, SCN\$1TO\$1TIMESTAMP generará un error `ORA-08181` y no podrá iniciar tareas exclusivas de CDC. Valor predeterminado: 0  Valores válidos: un número entero de 0 a 240 Ejemplo: `openTransactionWindow=15;`  | 
| OraclePathPrefix | Establezca este atributo de cadena en el valor necesario para utilizar Binary Reader para capturar los datos de cambios de Amazon RDS para Oracle como origen. Este valor especifica la raíz de Oracle predeterminada usada para obtener acceso a los registros REDO. Para obtener más información, consulte [Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Valor predeterminado: ninguno Valor válido:/rdsdbdata/db/ORCL\$1A/ Ejemplo: `--oracle-settings '{"OraclePathPrefix": "/rdsdbdata/db/ORCL_A/"}'`  | 
| ParallelASMReadThreads |  Establezca este atributo para cambiar el número de subprocesos que DMS configura para realizar una captura de datos de cambios (CDC) con Oracle Automatic Storage Management (ASM). Puede especificar un valor entero entre 2 (el valor predeterminado) y 8 (el máximo). Utilice este atributo junto con el atributo `ReadAheadBlocks`. Para obtener más información, consulte [Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). Valor predeterminado: 2  Valores válidos: Un número entero de 2 a 8 Ejemplo: `--oracle-settings '{"ParallelASMReadThreads": 6;}'`  | 
| ReadAheadBlocks |  Establezca este atributo para cambiar el número de bloques de lectura anticipada que DMS configura para realizar CDC con Oracle Automatic Storage Management (ASM) y almacenamiento NAS que no es ASM. Puede especificar un valor entero entre 1000 (el valor predeterminado) y 2 000 000 (el máximo). Utilice este atributo junto con el atributo `ParallelASMReadThreads`. Para obtener más información, consulte [Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). Valor predeterminado: 1000  Valores válidos: un entero comprendido entre 1000 y 2 000 000 Ejemplo: `--oracle-settings '{"ReadAheadBlocks": 150000}'`  | 
|  `ReadTableSpaceName`  |  Cuando se establece en `true`, este atributo admite la replicación del espacio de tabla. Valor predeterminado: false  Valores válidos: booleano  Ejemplo: `--oracle-settings '{"ReadTableSpaceName": true}'`  | 
| ReplacePathPrefix | Establezca este atributo en true para utilizar Binary Reader para capturar los datos de Amazon RDS para Oracle como origen. Este valor indica a la instancia de DMS que reemplace la raíz de Oracle predeterminada por el valor de UsePathPrefix especificado para obtener acceso a los registros REDO. Para obtener más información, consulte [Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Valor predeterminado: false Valores válidos: true/false Ejemplo: `--oracle-settings '{"ReplacePathPrefix": true}'`  | 
|  `RetryInterval`  |  Especifica el número de segundos que espera el sistema antes de reenviar una consulta.  Valor predeterminado: 5  Valores válidos: números a partir de 1  Ejemplo: `--oracle-settings '{"RetryInterval": 6}'`  | 
|  `SecurityDbEncryptionName`  |  Especifica el nombre de una clave utilizada para el cifrado de datos transparente (TDE) de las columnas y del espacio de tabla de la base de datos de origen de Oracle. Para obtener más información sobre la configuración de este atributo y su contraseña asociada en el punto de enlace de origen de Oracle, consulte [Métodos de cifrado compatibles para utilizar Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.Encryption). Valor predeterminado: ""  Valores válidos: string  Ejemplo: `--oracle-settings '{"SecurityDbEncryptionName": "ORACLE.SECURITY.DB.ENCRYPTION.Adg8m2dhkU/0v/m5QUaaNJEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}'`  | 
|  `SpatialSdo2GeoJsonFunctionName`  |  Para orígenes de Oracle versión 12.1 o anteriores que se migran a destinos de PostgreSQL, utilice este atributo para convertir SDO\$1GEOMETRY al formato GEOJSON. De forma predeterminada, AWS DMS llama a la función `SDO2GEOJSON` personalizada, que debe estar presente y accesible para el AWS DMS usuario. O puede crear su propia función personalizada que imita la operación de `SDOGEOJSON` y establecer `SpatialSdo2GeoJsonFunctionName` para llamarla.  Valor predeterminado: SDO2 GEOJSON Valores válidos: string  Ejemplo: `--oracle-settings '{"SpatialSdo2GeoJsonFunctionName": "myCustomSDO2GEOJSONFunction"}'`  | 
|  `StandbyDelayTime`  |  Utilice este atributo para especificar una hora en minutos que indique el retraso en la sincronización de la base de datos en espera. Si el origen es una base de datos en espera de Active Data Guard, utilice este atributo para especificar el intervalo de tiempo entre las bases de datos principal y en espera. En AWS DMS, puede crear una tarea de Oracle CDC que utilice una instancia en espera de Active Data Guard como fuente para replicar los cambios en curso. Esto elimina la necesidad de establecer conexión con una base de datos activa que podría estar en la fase de producción. Valor predeterminado: 0  Valores válidos: Number  Ejemplo: `--oracle-settings '{"StandbyDelayTime": 1}'` **Nota: **Cuando se utiliza DMS 3.4.6, 3.4.7 y versiones superiores, el uso de esta configuración de conexión es opcional. En las versiones más recientes de DMS 3.4.6 y 3.4.7, `dms_user` debe tener el permiso `select` en `V_$DATAGUARD_STATS`, lo que permite a DMS calcular el tiempo de retraso en espera.  | 
| UseAlternateFolderForOnline | Establezca este atributo en true para utilizar Binary Reader para capturar los datos de Amazon RDS para Oracle como origen. Esto indica a la instancia de DMS que use cualquier prefijo sustituto especificado para obtener acceso a todos los registros REDO online. Para obtener más información, consulte [Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Valor predeterminado: false Valores válidos: true/false Ejemplo: `--oracle-settings '{"UseAlternateFolderForOnline": true}'`  | 
| UseBfile |  Establezca este atributo en Y para capturar los datos de cambios mediante la utilidad Binary Reader. Establezca `UseLogminerReader` en N para establecer este atributo en S. Para utilizar Binary Reader con Amazon RDS para Oracle como origen, establezca atributos adicionales. Para obtener más información acerca de esta configuración y el uso de Oracle Automatic Storage Management (ASM), consulte [Uso de Oracle LogMiner o AWS DMS Binary Reader para CDC](#CHAP_Source.Oracle.CDC). Nota: Al establecer este valor como un atributo de conexión adicional (ECA), los valores válidos son “S” y “N”. Al establecer este valor como configuración de punto de conexión, los valores válidos son `true` y `false`. Valor predeterminado: N  Valores válidos: Y/N (cuando se establece este valor como ECA); true/false (cuando se establece este valor como una configuración de punto final). Ejemplo: `--oracle-settings '{"UseBfile": Y}'`  | 
|  `UseLogminerReader`  |  Establezca este atributo en Y para capturar los datos de cambios mediante la LogMiner utilidad (la opción predeterminada). Establezca esta opción en N si desea que AWS DMS obtenga acceso a los registros REDO como un archivo binario. Al establecer esta opción en N, agregue también el ajuste useBfile=Y. Para obtener más información sobre esta configuración y el uso de Oracle Automatic Storage Management (ASM), consulte [Uso de Oracle LogMiner o AWS DMS Binary Reader para CDC](#CHAP_Source.Oracle.CDC). Nota: Al establecer este valor como un atributo de conexión adicional (ECA), los valores válidos son “S” y “N”. Al establecer este valor como configuración de punto de conexión, los valores válidos son `true` y `false`. Valor predeterminado: Y  Valores válidos: Y/N (cuando se establece este valor como ECA); true/false (cuando se establece este valor como una configuración de punto final). Ejemplo: `--oracle-settings '{"UseLogminerReader": Y}'`  | 
| UsePathPrefix | Establezca este atributo de cadena en el valor necesario para utilizar Binary Reader para capturar los datos de cambios de Amazon RDS para Oracle como origen. Este valor especifica el prefijo de ruta utilizado para reemplazar la raíz de Oracle predeterminada empleada para obtener acceso a los registros REDO. Para obtener más información, consulte [Configurar una tarea de CDC para utilizar Binary Reader con una fuente de RDS para Oracle para AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Valor predeterminado: ninguno Valor válido: /rdsdbdata/log/ Ejemplo: `--oracle-settings '{"UsePathPrefix": "/rdsdbdata/log/"}'`  | 

## Tipos de datos de origen para Oracle
<a name="CHAP_Source.Oracle.DataTypes"></a>

El punto final de Oracle AWS DMS es compatible con la mayoría de los tipos de datos de Oracle. La siguiente tabla muestra los tipos de datos de origen de Oracle que se admiten cuando se utilizan AWS DMS y la asignación predeterminada a AWS DMS los tipos de datos.

**nota**  
Con la excepción de los tipos de datos LONG y LONG RAW, al replicar desde un origen de Oracle a un destino de Oracle (una *replicación homogénea*), todos los tipos de datos de origen y destino serán idénticos. Sin embargo, el tipo de datos LONG se asignará a CLOB y el tipo de datos LONG RAW se asignará a BLOB. 

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Tipos de datos de Oracle  |  AWS DMS tipo de datos  | 
| --- | --- | 
|  BINARY\$1FLOAT  |  REAL4  | 
|  BINARY\$1DOUBLE  |  REAL8  | 
|  BINARIO  |  BYTES  | 
|  FLOAT (P)  |  Si la precisión es menor o igual a 24, utilice REAL4. Si la precisión es superior a 24, utilice REAL8.  | 
|  NUMBER (P,S)  |  Si la escala es mayor que 0, utilice NUMERIC. Cuando la escala sea 0: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.Oracle.html) Cuando la escala sea inferior a 0, utilice REAL8. | 
|  DATE  |  DATETIME  | 
|  INTERVAL\$1YEAR TO MONTH  |  STRING (con indicación year\$1to\$1month del intervalo)  | 
|  INTERVAL\$1DAY TO SECOND  |  STRING (con indicación day\$1to\$1second del intervalo)  | 
|  TIMESTAMP  |  DATETIME  | 
|  MARCA DE TIEMPO CON ZONA HORARIA  |  STRING (con indicación timestamp\$1with\$1timezone)  | 
|  TIMESTAMP CON ZONA HORARIA LOCAL  |  STRING (con indicación timestamp\$1with\$1local\$1 timezone)  | 
|  CHAR  |  STRING  | 
|  VARCHAR2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.Oracle.html)  | 
|  NCHAR  |  WSTRING  | 
|  NVARCHAR2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.Oracle.html)  | 
|  RAW  |  BYTES  | 
|  REAL  |  REAL8  | 
|  BLOB  |  BLOB Para usar este tipo de datos con AWS DMS, debe habilitar el uso de tipos de datos BLOB para una tarea específica. AWS DMS solo admite los tipos de datos BLOB en las tablas que incluyen una clave principal.  | 
|  CLOB  |  CLOB Para usar este tipo de datos con AWS DMS, debe habilitar el uso de tipos de datos CLOB para una tarea específica. Durante los CDC, solo AWS DMS admite los tipos de datos CLOB en las tablas que incluyen una clave principal.  | 
|  NCLOB  |  NCLOB Para usar este tipo de datos con AWS DMS, debe habilitar el uso de los tipos de datos NCLOB para una tarea específica. Durante los CDC, solo AWS DMS admite los tipos de datos NCLOB en las tablas que incluyen una clave principal.  | 
|  LONG  |  CLOB El tipo de datos LONG no se admite en el modo de aplicación optimizada por lotes (modo CDC)TurboStream . Para usar este tipo de datos con AWS DMS, habilite el uso de LOBs para una tarea específica. Durante la fase CDC o a plena carga, solo AWS DMS admite los tipos de datos LOB en las tablas que tienen una clave principal. Además, AWS DMS no admite el modo LOB completo para cargar columnas largas. En su lugar, puede utilizar el modo de LOB limitado para migrar columnas LONG a un destino de Oracle. En el modo LOB limitado, AWS DMS trunca los datos a 64 KB que establezca en columnas LARGAS de más de 64 KB. Para obtener más información sobre la compatibilidad con LOB, consulte AWS DMS[Configurar la compatibilidad con LOB para las bases de datos de origen de una tarea AWS DMS](CHAP_Tasks.LOBSupport.md)  | 
|  LONG RAW  |  BLOB El tipo de datos LONG RAW no se admite en el modo de aplicación optimizado por lotes (modo TurboStream CDC). Para usar este tipo de datos con AWS DMS, habilite el uso de LOBs para una tarea específica. Durante la fase CDC o a plena carga, solo AWS DMS admite los tipos de datos LOB en las tablas que tienen una clave principal. Además, AWS DMS no admite el modo LOB completo para cargar columnas RAW LARGAS. En su lugar, puede utilizar el modo de LOB limitado para migrar columnas LONG RAW a un destino de Oracle. En el modo de LOB limitado, AWS DMS trunca los datos a 64 KB que haya establecido en columnas LONG RAW de más de 64 KB. Para obtener más información sobre la compatibilidad con LOB, consulte AWS DMS[Configurar la compatibilidad con LOB para las bases de datos de origen de una tarea AWS DMS](CHAP_Tasks.LOBSupport.md)  | 
|  XMLTYPE  |  CLOB  | 
| SDO\$1GEOMETRY | BLOB (en una migración de Oracle a Oracle)CLOB (en una migración de Oracle a PostgreSQL) | 

No se admiten las tablas de Oracle que se utilizan como origen con columnas de los siguientes tipos de datos y no se pueden replicar. Si se replican las columnas con estos tipos de datos se obtendrán una columna con el valor NULL.
+ BFILE
+ ROWID
+ REF
+ UROWID
+ Tipos de datos definidos por el usuario
+ ANYDATA
+ VARRAY

**nota**  
No se admiten las columnas virtuales.

### Migración de tipos de datos espaciales de Oracle
<a name="CHAP_Source.Oracle.DataTypes.Spatial"></a>

Los *datos espaciales* identifican la información de geometría de un objeto o ubicación en el espacio. En una base de datos de Oracle, la descripción geométrica de un objeto espacial se almacena en un objeto de tipo SDO\$1GEOMETRY. Dentro de este objeto, la descripción geométrica se almacena en una sola fila de una sola columna de una tabla definida por el usuario. 

AWS DMS admite la migración del tipo SDO\$1GEOMETRY de Oracle desde un origen de Oracle a un destino de Oracle o PostgreSQL.

Al migrar los tipos de datos espaciales de Oracle mediante AWS DMS, tenga en cuenta las siguientes consideraciones:
+ Al migrar a un destino de Oracle, asegúrese de transferir manualmente las entradas USER\$1SDO\$1GEOM\$1METADATA que incluyan información de tipos. 
+ Al migrar desde un punto final de origen de Oracle a un punto final de destino de PostgreSQL, crea columnas de destino. AWS DMS Estas columnas contienen información de la geometría y el tipo de geografía predeterminados con una dimensión en 2D y un identificador de referencia espacial (SRID) igual a cero (0). Un ejemplo es `GEOMETRY, 2, 0`.
+ Para los orígenes de Oracle versión 12.1 o anteriores que se migran a destinos de PostgreSQL, convierta los objetos `SDO_GEOMETRY` al formato `GEOJSON` mediante la función `SDO2GEOJSON` o el atributo de conexión adicional `spatialSdo2GeoJsonFunctionName`. Para obtener más información, consulte [Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).
+ AWS DMS solo admite las migraciones de columnas espaciales de Oracle para el modo LOB completo. AWS DMS no admite los modos LOB limitado o LOB en línea. Para obtener más información sobre el modo de LOB, consulte [Configurar la compatibilidad con LOB para las bases de datos de origen de una tarea AWS DMS](CHAP_Tasks.LOBSupport.md).
+ Como AWS DMS solo admite el modo LOB completo para migrar Oracle Spatial Columns, la tabla de columnas necesita una clave principal y una clave única. Si la tabla no tiene una clave principal y una clave única, la tabla se omite de la migración.

# Uso de una base de datos de Microsoft SQL Server como fuente para AWS DMS
<a name="CHAP_Source.SQLServer"></a>

Migre datos de una o varias bases de datos de Microsoft SQL Server mediante AWS DMS. Con una base de datos de SQL Server como origen, puede migrar los datos a otra base de datos de SQL Server o a una de las otras bases de datos AWS DMS compatibles. 

Para obtener información sobre las versiones de SQL Server que se AWS DMS admiten como fuente, consulte[Fuentes de AWS DMS](CHAP_Introduction.Sources.md).

La base de datos de origen de SQL Server se puede instalar en cualquier equipo de la red. También se necesita una cuenta de SQL Server con los privilegios de acceso adecuados a la base de datos de origen para el tipo de tarea elegido, con el fin de utilizarla con AWS DMS. Para obtener más información, consulte [Permisos para las tareas de SQL Server](#CHAP_Source.SQLServer.Permissions).

AWS DMS admite la migración de datos desde instancias nombradas de SQL Server. Puede utilizar las siguientes notaciones en el nombre del servidor al crear el punto de enlace de origen.

```
IPAddress\InstanceName
```

Por ejemplo, el siguiente es un nombre de servidor de punto de enlace de origen correcto. En este caso, la primera parte del nombre es la dirección IP del servidor y la segunda parte es el nombre de la instancia de SQL Server (en este ejemplo, SQLTest).

```
10.0.0.25\SQLTest
```

Además, obtenga el número de puerto en el que escucha la instancia designada de SQL Server y utilícelo para configurar el punto final de AWS DMS origen. 

**nota**  
El puerto 1433 es el predeterminado para Microsoft SQL Server. Pero también es habitual usar puertos dinámicos que cambian cada vez que se inicia SQL Server y números de puerto estáticos específicos utilizados para conectarse a SQL Server a través de un firewall. Por lo tanto, querrá saber el número de puerto real de la instancia designada de SQL Server al crear el punto final de AWS DMS origen.

Puede utilizar SSL para cifrar las conexiones entre el punto de enlace de SQL Server y la instancia de replicación. Para obtener más información sobre cómo utilizar SSL con un punto de enlace de SQL Server, consulte [Uso de SSL con AWS Database Migration Service](CHAP_Security.SSL.md).

Puede usar CDC para la migración continua desde una base de datos de SQL Server. Para obtener más información sobre cómo configurar la base de datos de SQL Server de origen para CDC, consulte [Captura de cambios en los datos para la replicación continua desde SQL Server](CHAP_Source.SQLServer.CDC.md).

Para obtener más información sobre cómo trabajar con las bases de datos de origen de SQL Server AWS DMS, consulte lo siguiente.

**Topics**
+ [Limitaciones del uso de SQL Server como fuente de AWS DMS](#CHAP_Source.SQLServer.Limitations)
+ [Permisos para las tareas de SQL Server](#CHAP_Source.SQLServer.Permissions)
+ [Requisitos previos para el uso de la replicación continua (CDC) desde un origen de SQL Server](#CHAP_Source.SQLServer.Prerequisites)
+ [Métodos de compresión admitidos para SQL Server](#CHAP_Source.SQLServer.Compression)
+ [Trabaja con grupos de disponibilidad de SQL Server autogestionados AlwaysOn](#CHAP_Source.SQLServer.AlwaysOn)
+ [Configuración del punto final cuando se utiliza SQL Server como fuente de AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)
+ [Tipos de datos de origen para SQL Server](#CHAP_Source.SQLServer.DataTypes)
+ [Captura de cambios en los datos para la replicación continua desde SQL Server](CHAP_Source.SQLServer.CDC.md)

## Limitaciones del uso de SQL Server como fuente de AWS DMS
<a name="CHAP_Source.SQLServer.Limitations"></a>

Las siguientes restricciones se aplican cuando se utiliza una base de datos de SQL Server como origen para AWS DMS:
+ La propiedad de identidad para una columna no se migra a una columna de la base de datos de destino.
+ El punto de conexión de SQL Server no es compatible con el uso de tablas con columnas dispersas.
+ No se admite la autenticación de Windows.
+ Los cambios en los campos calculados en SQL Server no se replican.
+ No se permite usar tablas temporales.
+ No se admite el cambio de particiones de SQL Server.
+ Al utilizar las utilidades WRITETEXT y UPDATETEXT, AWS DMS no captura los eventos aplicados a la base de datos de origen.
+ No se admite el siguiente patrón de lenguaje de manipulación de datos (DML). 

  ```
  SELECT * INTO new_table FROM existing_table
  ```
+ Cuando se utiliza SQL Server como origen, no se admite el cifrado de nivel de columna.
+ AWS DMS no admite auditorías a nivel de servidor en SQL Server 2008 o SQL Server 2008 R2 como fuentes. Esto se debe a un problema conocido con SQL Server 2008 y 2008 R2. Por ejemplo, si se ejecuta el siguiente comando, se produce AWS DMS un error.

  ```
  USE [master]
  GO 
  ALTER SERVER AUDIT [my_audit_test-20140710] WITH (STATE=on)
  GO
  ```
+ Las columnas de geometría no se admiten en el modo Full LOB cuando se utiliza SQL Server como origen. En su lugar, utilice el modo de LOB limitado o establezca la opción de la tarea `InlineLobMaxSize` para que utilice el modo de LOB insertado.
+ Cuando se utiliza una base de datos de origen de Microsoft SQL Server en una tarea de replicación, las definiciones del publicador de replicación de SQL Server no se eliminan si se elimina la tarea. Estas definiciones de Microsoft SQL Server las debe eliminar un administrador del sistema de Microsoft SQL Server.
+ La migración de datos desde non-schema-bound vistas y vinculadas a un esquema solo se admite para tareas de carga completa. 
+ No se admite el cambio de nombre de las tablas mediante sp\$1rename (por ejemplo, `sp_rename 'Sales.SalesRegion', 'SalesReg;)`
+ No se admite el cambio de nombre de las columnas mediante sp\$1rename (por ejemplo, `sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';`)
+ AWS DMS no admite el procesamiento de cambios para establecer y desestablecer los valores predeterminados de las columnas (utilizando la `ALTER COLUMN SET DEFAULT` cláusula con declaraciones). `ALTER TABLE`
+ AWS DMS no admite el procesamiento de cambios para establecer la nulabilidad de las columnas (se usa la `ALTER COLUMN [SET|DROP] NOT NULL` cláusula con `ALTER TABLE` declaraciones).
+ Con SQL Server 2012 y SQL Server 2014, cuando se utiliza la replicación de DMS con grupos de disponibilidad, la base de datos de distribución no se puede colocar en un grupo de disponibilidad. SQL 2016 permite colocar la base de datos de distribución en un grupo de disponibilidad, excepto en el caso de las bases de datos de distribución utilizadas en topologías de fusión, bidireccionales o peer-to-peer de replicación.
+ En el caso de las tablas particionadas, AWS DMS no admite diferentes configuraciones de compresión de datos para cada partición.
+ Al insertar un valor en los tipos de datos espaciales de SQL Server (GEOGRAPHY y GEOMETRY), puede omitir la propiedad del identificador del sistema de referencia espacial (SRID) o especificar un número diferente. Al replicar tablas con tipos de datos espaciales, AWS DMS reemplaza el SRID por el SRID predeterminado (0 para GEOMETRY y 4326 para GEOGRAPHY).
+ Si su base de datos no está configurada para MS-REPLICATION o MS-CDC, puede capturar tablas que no tengan una clave principal, pero solo se capturan los eventos de DML. INSERT/DELETE Los eventos UPDATE y TRUNCATE TABLE se omiten.
+ No se admiten los índices de Columnstore.
+ Las tablas con optimización de la memoria (usando OLTP en memoria) no son compatibles.
+ Al replicar una tabla con una clave principal que consta de varias columnas, no se admite la actualización de las columnas de clave principal durante la carga completa.
+ No se admite la durabilidad retardada.
+ La configuración de punto de conexión `readBackupOnly=true` (atributo de conexión adicional) no funciona en las instancias de origen de RDS para SQL Server debido a la forma en que RDS realiza las copias de seguridad.
+ `EXCLUSIVE_AUTOMATIC_TRUNCATION` no funciona en las instancias de origen de SQL Server de Amazon RDS porque los usuarios de RDS no tienen acceso para ejecutar el procedimiento almacenado de SQL Server, `sp_repldone`.
+ AWS DMS no captura los comandos de truncamiento.
+ AWS DMS no admite la replicación desde bases de datos con la recuperación acelerada de bases de datos (ADR) activada.
+ AWS DMS no admite la captura de sentencias del lenguaje de definición de datos (DDL) y del lenguaje de manipulación de datos (DML) en una sola transacción.
+ AWS DMS no admite la replicación de paquetes de aplicaciones de nivel de datos (DACPAC).
+ Las instrucciones UPDATE que incluyen claves principales o índices únicos y actualizan varias filas de datos pueden provocar conflictos al aplicar cambios en la base de datos de destino. Esto puede suceder, por ejemplo, cuando la base de datos de destino aplica las actualizaciones como instrucciones INSERT y DELETE en lugar de aplicar una sola instrucción UPDATE. Con el modo de aplicación optimizado por lotes, es posible que se ignore la tabla. Con el modo de aplicación transaccional, es posible que la operación UPDATE provoque infracciones de las restricciones. Para evitar este problema, vuelva a cargar la tabla correspondiente. Como alternativa, localice los registros problemáticos en la tabla de control de aplicación de excepciones (`dmslogs.awsdms_apply_exceptions`) y edítelos manualmente en la base de datos de destino. Para obtener más información, consulte [Configuración de ajuste del procesamiento de cambios](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md).
+ AWS DMS no admite la replicación de tablas y esquemas, donde el nombre incluye un carácter especial del siguiente conjunto.

  `\\ -- \n \" \b \r ' \t ;` 
+ No se admite el enmascaramiento de datos. AWS DMS migra los datos enmascarados sin enmascararlos.
+ AWS DMS replica hasta 32 767 tablas con claves principales y hasta 1000 columnas para cada tabla. Esto se debe a que AWS DMS crea un artículo de replicación de SQL Server para cada tabla replicada, y los artículos de replicación de SQL Server tienen estas limitaciones.
+ Al utilizar Captura de datos de cambios (CDC), debe definir todas las columnas que componen un índice único como `NOT NULL`. Si no se cumple este requisito, se generará el error 22838 del sistema de SQL Server. 
+ Puede perder eventos si SQL Server los archiva del registro de transacciones activo al registro de copia de seguridad o los trunca del registro de transacciones activo.

Se aplican las siguientes limitaciones al acceder a los registros de transacciones de copia de seguridad:
+ Las copias de seguridad cifradas no son compatibles.
+ Las copias de seguridad almacenadas en una dirección URL o en Windows Azure no son compatibles.
+ AWS DMS no admite el procesamiento directo de las copias de seguridad del registro de transacciones a nivel de archivo desde carpetas compartidas alternativas.
+ En el caso de fuentes de Cloud SQL Server distintas de Amazon RDS para Microsoft SQL Server AWS DMS , admite la replicación continua (CDC) únicamente con el registro de transacciones activo. No puede usar el registro de copia de seguridad con CDC. Puede perder eventos si SQL Server los archiva del registro de transacciones activo al registro de copia de seguridad o los trunca del registro de transacciones activo antes de que DMS pueda leerlo. 
+ En el caso de las fuentes de Amazon RDS para Microsoft SQL Server AWS DMS , la versión 3.5.2 y versiones anteriores admiten la replicación continua (CDC) únicamente con el registro de transacciones activo, ya que DMS no puede acceder al registro de copias de seguridad con CDC. Puede perder eventos si RDS para SQL Server los archiva del registro de transacciones activo al registro de copia de seguridad o los trunca del registro de transacciones activo antes de que DMS pueda leerlo. Esta limitación no se aplica a las AWS DMS versiones 3.5.3 y posteriores.
+ AWS DMS no admite CDC for Amazon RDS Proxy for SQL Server como fuente.
+ Si el origen de SQL Server deja de estar disponible durante una tarea de carga completa, AWS DMS podría marcar la tarea como completada tras varios intentos de reconexión, aunque la migración de datos siga incompleta. En este escenario, las tablas de destino solo contienen los registros migrados antes de la pérdida de conexión, lo que podría crear incoherencias de datos entre los sistemas de origen y de destino. Para garantizar la integridad de los datos, debe reiniciar completamente la tarea de carga completa o volver a cargar las tablas específicas afectadas por la interrupción de la conexión.

## Permisos para las tareas de SQL Server
<a name="CHAP_Source.SQLServer.Permissions"></a>

**Topics**
+ [Permisos para tareas que son solo de carga completa](#CHAP_Source.SQLServer.Permissions.FullLoad)
+ [Permisos para tareas con replicación continua](#CHAP_Source.SQLServer.Permissions.Ongoing)

### Permisos para tareas que son solo de carga completa
<a name="CHAP_Source.SQLServer.Permissions.FullLoad"></a>

Los siguientes permisos son necesarios para realizar tareas que son solo de carga completa. Tenga en cuenta que AWS DMS no crea el inicio de sesión de `dms_user`. Para obtener más información sobre cómo crear un inicio de sesión para SQL Server, consulte el tema [Crear un usuario de base de datos](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver16) en la *documentación de Microsoft*.

```
USE db_name;
                
                CREATE USER dms_user FOR LOGIN dms_user; 
                ALTER ROLE [db_datareader] ADD MEMBER dms_user; 
                GRANT VIEW DATABASE STATE to dms_user;
                GRANT VIEW DEFINITION to dms_user;
                
                USE master;
                
                GRANT VIEW SERVER STATE TO dms_user;
```

### Permisos para tareas con replicación continua
<a name="CHAP_Source.SQLServer.Permissions.Ongoing"></a>

Las instancias autoadministradas de SQL Server se pueden configurar para la replicación continua mediante DMS con o sin usar el rol `sysadmin`. En el caso de las instancias de SQL Server, en las que no puede conceder el rol `sysadmin`, asegúrese de que el usuario de DMS tenga los privilegios que se describen a continuación.

**Configuración de permisos para la replicación continua desde una base de datos de SQL Server autoadministrada**

1. Cree una cuenta de SQL Server con autenticación mediante contraseña a través de SQL Server Management Studio (SSMS) o como se describe anteriormente en [Permisos para tareas que son solo de carga completa](#CHAP_Source.SQLServer.Permissions.FullLoad), por ejemplo `self_managed_user`.

1. Ejecute los siguientes comandos `GRANT`: 

   ```
   GRANT VIEW SERVER STATE TO self_managed_user;
   
   USE msdb;
       GRANT SELECT ON msdb.dbo.backupset TO self_managed_user;
       GRANT SELECT ON msdb.dbo.backupmediafamily TO self_managed_user;
       GRANT SELECT ON msdb.dbo.backupfile TO self_managed_user;
       
   USE db_name;
       CREATE USER self_managed_user FOR LOGIN self_managed_user;
       ALTER ROLE [db_owner] ADD MEMBER self_managed_user;
       GRANT VIEW DEFINITION to self_managed_user;
   ```

1. Además de los permisos anteriores, el usuario debe cumplir uno de los siguientes requisitos:
   + El usuario debe ser miembro del rol de servidor fijo `sysadmin`.
   + Deben establecerse las configuraciones y permisos que se describen en [Configuración de la replicación continua en un SQL Server en un entorno de grupos de disponibilidad: sin el rol de sysadmin](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.ag) o [Configuración de la replicación continua en un SQL Server independiente: sin el rol de sysadmin](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.standalone), en función de la configuración de origen.

#### Configuración de permisos para la replicación continua desde una base de datos de SQL Server en la nube
<a name="CHAP_Source.SQLServer.Permissions.Cloud"></a>

Una instancia de SQL Server alojada en la nube es una instancia que se ejecuta en Amazon RDS para Microsoft SQL Server, una instancia administrada por Azure SQL o cualquier otra instancia de SQL Server administrada en la nube compatible con DMS.

Cree una cuenta de SQL Server con autenticación mediante contraseña a través de SQL Server Management Studio (SSMS) o como se describe anteriormente en [Permisos para tareas que son solo de carga completa](#CHAP_Source.SQLServer.Permissions.FullLoad), por ejemplo `rds_user`.

Ejecute los siguientes comandos Grant.

```
GRANT VIEW SERVER STATE TO rds_user;
```

En el caso de los orígenes de Amazon RDS para Microsoft SQL Server, DMS 3.5.3 y las versiones posteriores admiten la lectura de copias de seguridad del registro de transacciones. Para garantizar que DMS pueda acceder a las copias de seguridad de los registros, además de lo anterior, conceda privilegios de usuario `master` o bien los siguientes privilegios en un origen SQL Server de RDS:

```
USE msdb;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_download TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_read TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_list_current_lsn TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_task_status TO rds_user;
    
USE db_name;
    CREATE USER rds_user FOR LOGIN rds_user;
    ALTER ROLE [db_owner] ADD MEMBER rds_user;
    GRANT VIEW DEFINITION to rds_user;
```

En el caso de las instancias administradas de Amazon Azure SQL, conceda los siguientes privilegios:

```
GRANT SELECT ON msdb.dbo.backupset TO rds_user;
GRANT SELECT ON msdb.dbo.backupmediafamily TO rds_user;
GRANT SELECT ON msdb.dbo.backupfile TO rds_user;
```

## Requisitos previos para el uso de la replicación continua (CDC) desde un origen de SQL Server
<a name="CHAP_Source.SQLServer.Prerequisites"></a>

Puede utilizar la replicación continua (captura de datos de cambios o CDC) para una base de datos de SQL Server autoadministrada en las instalaciones o en Amazon EC2, una base de datos de la nube como Amazon RDS o una instancia administrada por Microsoft Azure SQL.

Los requisitos siguientes se aplican específicamente cuando se utiliza la replicación continua con una base de datos de SQL Server como origen para AWS DMS:
+ Es preciso configurar SQL Server para backups completas y debe realizar una backup antes de empezar a replicar los datos.
+ El modelo de recuperación debe establecerse en **Bulk logged** o **Full**.
+ No se admite el backup de SQL Server en varios discos. Si la copia de seguridad está definida para grabar la copia de seguridad de la base de datos en varios archivos en discos diferentes, no AWS DMS se pueden leer los datos y la AWS DMS tarea falla.
+ Para orígenes autoadministrados de SQL Server, las definiciones del publicador de replicación de SQL Server para el origen que se utiliza en una tarea de CDC de DMS no se eliminan cuando se elimina la tarea. Estas definiciones de SQL Server para orígenes autoadministrados las debe eliminar un administrador del sistema de SQL Server.
+ Durante la CDC, AWS DMS debe buscar las copias de seguridad del registro de transacciones de SQL Server para leer los cambios. AWS DMS no admite las copias de seguridad del registro de transacciones de SQL Server creadas con software de copia de seguridad de terceros que *no* esté en formato nativo. Para admitir las copias de seguridad del registro de transacciones que *están* en formato nativo y creadas con software de copia de seguridad de terceros, agregue el atributo de conexión `use3rdPartyBackupDevice=Y` al punto de conexión de origen.
+ Para orígenes autoadministrados de SQL Server, tenga en cuenta que SQL Server no captura los cambios en las tablas creadas recientemente hasta que se han publicado. Cuando se agregan tablas a una fuente de SQL Server, AWS DMS gestiona la creación de la publicación. Sin embargo, este proceso puede prolongarse algunos minutos. Las operaciones efectuadas en tablas de nueva creación durante este intervalo no se capturan ni replican en el destino. 
+ AWS DMS La captura de datos de cambios requiere que el registro completo de transacciones esté activado en SQL Server. Para activar el registro completo de transacciones en SQL Server, habilite MS-REPLICATION o CHANGE DATA CAPTURE (CDC).
+ Las entradas del *tlog* de SQL Server no se marcarán para su reutilización hasta que el trabajo de captura de MS CDC procese esos cambios.
+ Las operaciones de CDC no se admiten en las tablas con optimización para memoria. Esta restricción se aplica a SQL Server 2014 (cuando se ingresó por vez primera la característica) y a versiones superiores.
+ AWS DMS la captura de datos de cambios requiere una base de datos de distribución de forma predeterminada en Amazon EC2 o en un servidor SQL local como fuente. Por lo tanto, asegúrese de haber activado el distribuidor al configurar la replicación de MS para tablas con claves principales.

## Métodos de compresión admitidos para SQL Server
<a name="CHAP_Source.SQLServer.Compression"></a>

Tenga en cuenta lo siguiente acerca de la compatibilidad con los métodos de compresión de SQL Server en AWS DMS:
+ AWS DMS admite Row/Page la compresión en la versión 2008 y posteriores de SQL Server.
+ AWS DMS no admite el formato de almacenamiento Vardecimal.
+ AWS DMS no admite la compresión de columnas dispersas ni de estructuras columnares.

## Trabaja con grupos de disponibilidad de SQL Server autogestionados AlwaysOn
<a name="CHAP_Source.SQLServer.AlwaysOn"></a>

Los grupos de disponibilidad AlwaysOn de SQL Server proporcionan alta disponibilidad y recuperación de desastres que representa una alternativa a nivel empresarial a la duplicación de bases de datos. 

En AWS DMS, puede migrar los cambios desde una única réplica de un grupo de disponibilidad principal o secundario.

### Trabajo con la réplica del grupo de disponibilidad principal
<a name="CHAP_Source.SQLServer.AlwaysOn.Primary"></a>

 

**Para usar el grupo de disponibilidad principal como fuente de entrada AWS DMS, haga lo siguiente:**

1. Active la opción de distribución para todas las instancias de SQL Server en las réplicas de disponibilidad. Para obtener más información, consulte [Configurar la replicación continua en un SQL Server autoadministrado](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC).

1. En la AWS DMS consola, abra la configuración de la base de datos de origen de SQL Server. Para **Nombre de servidor** especifique el nombre del servicio de nombres de dominio (DNS) o la dirección IP que se configuró para el oyente del grupo de disponibilidad. 

Al iniciar una AWS DMS tarea por primera vez, es posible que tarde más de lo habitual en iniciarse. Esta lentitud se produce porque el servidor de grupos de disponibilidad duplica la creación de los artículos de la tabla. 

### Trabajo con una réplica del grupo de disponibilidad secundario
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary"></a>

**Para usar un grupo de disponibilidad secundario como fuente de entrada AWS DMS, haga lo siguiente:**

1. Use las mismas credenciales para conectarse a réplicas individuales que usa el usuario del punto final AWS DMS de origen.

1. Asegúrese de que su instancia de AWS DMS replicación pueda resolver los nombres de DNS de todas las réplicas existentes y conéctese a ellas. Puede usar la siguiente consulta SQL para obtener los nombres de DNS de todas las réplicas.

   ```
   select ar.replica_server_name, ar.endpoint_url from sys.availability_replicas ar
   JOIN sys.availability_databases_cluster adc
   ON adc.group_id = ar.group_id AND adc.database_name = '<source_database_name>';
   ```

1. Al crear el punto de conexión de origen, especifique el nombre de DNS del oyente del grupo de disponibilidad para el **nombre del servidor** del punto de conexión o para la **dirección del servidor** secreto del punto de conexión. Para obtener más información sobre los oyentes de grupos de disponibilidad, consulte [¿Qué es un oyente de grupos de disponibilidad?](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-group-listener-overview?view=sql-server-ver15) en la documentación de SQL Server.

   Puede usar un servidor DNS público o un servidor DNS en las instalaciones para resolver el oyente del grupo de disponibilidad, la réplica principal y las réplicas secundarias. Para usar un servidor DNS en las instalaciones, configure Amazon Route 53 Resolver. Para obtener más información, consulte [Uso de su propio servidor de nombres en las instalaciones](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver).

1. Agregue los siguientes atributos de conexión adicionales al punto de conexión de origen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.SQLServer.html)

1. Habilite la opción de distribución en todas las réplicas del grupo de disponibilidad. Agregue todos los nodos a la lista de distribuidores. Para obtener más información, consulte [Configuración de la distribución](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC.Setup).

1. Ejecute la siguiente consulta en la réplica de lectura y escritura principal para habilitar la publicación de la base de datos. Se ejecuta esta consulta solo una vez para la base de datos. 

   ```
   sp_replicationdboption @dbname = N'<source DB name>', @optname = N'publish', @value = N'true';
   ```



#### Limitaciones
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.limitations"></a>

A continuación, se indican las limitaciones para trabajar con una réplica de grupo de disponibilidad secundario:
+ AWS DMS no es compatible con Safeguard cuando utiliza una réplica de un grupo de disponibilidad de solo lectura como fuente. Para obtener más información, consulte [Configuración del punto final cuando se utiliza SQL Server como fuente de AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib).
+ AWS DMS no admite el atributo de conexión `setUpMsCdcForTables` adicional cuando se utiliza una réplica de un grupo de disponibilidad de solo lectura como fuente. Para obtener más información, consulte [Configuración del punto final cuando se utiliza SQL Server como fuente de AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib).
+ AWS DMS puede utilizar una réplica autogestionada de un grupo de disponibilidad secundario como base de datos de origen para la replicación continua (captura de datos de cambios o CDC) a partir de la versión 3.4.7. No se admiten réplicas de lectura Multi-AZ de SQL Server en la nube. Si usa versiones anteriores de AWS DMS, asegúrese de usar la réplica del grupo de disponibilidad principal como base de datos de origen para los CDC.

#### Conmutación por error a otros nodos
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.failover"></a>

Si establece el atributo de conexión `ApplicationIntent` adicional para su terminal en`ReadOnly`, la AWS DMS tarea se conecta al nodo de solo lectura con la prioridad de enrutamiento de solo lectura más alta. A continuación, se conmuta por error a otros nodos de solo lectura en el grupo de disponibilidad cuando el nodo de solo lectura de mayor prioridad no está disponible. Si no lo estableces`ApplicationIntent`, la AWS DMS tarea solo se conecta al nodo principal (lectura/escritura) de tu grupo de disponibilidad.

## Configuración del punto final cuando se utiliza SQL Server como fuente de AWS DMS
<a name="CHAP_Source.SQLServer.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de origen de SQL Server de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de origen mediante la AWS DMS consola o mediante el `create-endpoint` comando del [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con SQL Server como origen.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.SQLServer.html)

## Tipos de datos de origen para SQL Server
<a name="CHAP_Source.SQLServer.DataTypes"></a>

La migración de datos que utiliza SQL Server como fuente AWS DMS es compatible con la mayoría de los tipos de datos de SQL Server. La siguiente tabla muestra los tipos de datos de origen de SQL Server que se admiten cuando se utilizan AWS DMS y la asignación predeterminada a partir de AWS DMS los tipos de datos.

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Tipos de datos de SQL Server  |  AWS DMS tipos de datos  | 
| --- | --- | 
|  BIGINT  |  INT8  | 
|  BIT  |  BOOLEANO  | 
|  DECIMAL  |  NUMERIC  | 
|  INT  |  INT4  | 
|  MONEY  |  NUMERIC  | 
|  NUMERIC (p,s)  |  NUMERIC   | 
|  SMALLINT  |  INT2  | 
|  SMALLMONEY  |  NUMERIC  | 
|  TINYINT  |  UINT1  | 
|  REAL  |  REAL4  | 
|  FLOAT  |  REAL8  | 
|  DATETIME  |  DATETIME  | 
|  DATETIME2 (SQL Server 2008 y versiones posteriores)  |  DATETIME  | 
|  SMALLDATETIME  |  DATETIME  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  DATETIMEOFFSET  |  WSTRING  | 
|  CHAR  |  STRING  | 
|  VARCHAR  |  STRING  | 
|  VARCHAR (máx.)  |  CLOB TEXT Para usar este tipo de datos con AWS DMS, debe habilitar el uso de tipos de datos CLOB para una tarea específica. En el caso de las tablas de SQL Server, AWS DMS actualiza las columnas LOB del destino incluso para las instrucciones UPDATE que no cambian el valor de la columna LOB en SQL Server. Durante la CDC, solo AWS DMS admite los tipos de datos CLOB en las tablas que incluyen una clave principal.  | 
|  NCHAR  |  WSTRING  | 
|  NVARCHAR (longitud)  |  WSTRING  | 
|  NVARCHAR (máx.)  |  NCLOB NTEXT Para usar este tipo de datos con AWS DMS, debe habilitar el uso de SupportLobs para una tarea específica. Para obtener más información acerca de cómo habilitar la compatibilidad con LOB, consulte [Configurar la compatibilidad con LOB para las bases de datos de origen de una tarea AWS DMS](CHAP_Tasks.LOBSupport.md).  En el caso de las tablas de SQL Server, AWS DMS actualiza las columnas LOB del destino, incluso para las instrucciones UPDATE que no cambian el valor de la columna LOB de SQL Server. Durante la CDC, solo AWS DMS admite los tipos de datos CLOB en las tablas que incluyen una clave principal.  | 
|  BINARIO  |  BYTES  | 
|  VARBINARY  |  BYTES  | 
|  VARBINARY (máx.)  |  BLOB IMAGE En el caso de las tablas de SQL Server, AWS DMS actualiza las columnas LOB del destino, incluso para las instrucciones UPDATE que no cambian el valor de la columna LOB en SQL Server. Para usar este tipo de datos con AWS DMS, debe habilitar el uso de tipos de datos BLOB para una tarea específica. AWS DMS solo admite los tipos de datos BLOB en las tablas que incluyen una clave principal.  | 
|  TIMESTAMP  |  BYTES  | 
|  UNIQUEIDENTIFIER  |  STRING  | 
|  HIERARCHYID   |  Utilice HIERARCHYID cuando realice replicaciones en un punto de enlace de destino de SQL Server. Utilice WSTRING (250) para realizar replicaciones en el resto de puntos de enlace.  | 
|  XML  |  NCLOB En el caso de las tablas de SQL Server, AWS DMS actualiza las columnas LOB del destino incluso para las instrucciones UPDATE que no cambian el valor de la columna LOB en SQL Server. Para usar este tipo de datos con AWS DMS, debe habilitar el uso de los tipos de datos NCLOB para una tarea específica. Durante los CDC, solo AWS DMS admite los tipos de datos NCLOB en las tablas que incluyen una clave principal.  | 
|  GEOMETRY  |  Utilice GEOMETRY cuando realice replicaciones en puntos de enlace de destino que admitan este tipo de datos. Utilice CLOB cuando realice replicaciones en puntos de enlace de destino que no admitan este tipo de datos.  | 
|  GEOGRAPHY  |  Utilice GEOGRAPHY cuando realice replicaciones en puntos de enlace de destino que admitan este tipo de datos. Utilice CLOB cuando realice replicaciones en puntos de enlace de destino que no admitan este tipo de datos.  | 

AWS DMS no admite tablas que incluyan campos con los siguientes tipos de datos. 
+ CURSOR
+ SQL\$1VARIANT
+ TABLE

**nota**  
Se admiten tipos de datos definidos por el usuario en función de su tipo base. Por ejemplo, un tipo de datos definido por el usuario basado en DATETIME se gestiona como un tipo de datos DATETIME.

# Captura de cambios en los datos para la replicación continua desde SQL Server
<a name="CHAP_Source.SQLServer.CDC"></a>

Este tema describe cómo configurar la replicación de CDC en un origen de SQL Server.

**Topics**
+ [Captura de cambios de datos para SQL Server autoadministrado en las instalaciones o en Amazon EC2](#CHAP_Source.SQLServer.CDC.Selfmanaged)
+ [Configuración de la replicación continua en una instancia de base de datos de SQL Server de la nube](#CHAP_Source.SQLServer.Configuration)

## Captura de cambios de datos para SQL Server autoadministrado en las instalaciones o en Amazon EC2
<a name="CHAP_Source.SQLServer.CDC.Selfmanaged"></a>

Para capturar los cambios de una base de datos de origen de Microsoft SQL Server, asegúrese de que la base de datos esté configurada para realizar copias de seguridad completas. Configure la base de datos en modo de recuperación total o en modo de registro masivo.

Para una fuente de SQL Server autogestionada, AWS DMS utiliza lo siguiente:

**Replicación de MS**  
Para capturar cambios para las tablas con las claves principales. Puede configurarlo automáticamente otorgando privilegios de administrador del sistema al usuario de AWS DMS punto final en la instancia de SQL Server de origen. O bien, puede seguir los pasos de esta sección para preparar la fuente y utilizar un usuario que no tenga privilegios de administrador de sistemas para el punto final. AWS DMS 

**MS-CDC**  
Para capturar cambios para las tablas sin las claves principales. Habilite MS-CDC en el nivel de base de datos y para todas las tablas de forma individual.

Al configurar una base de datos de SQL Server para replicación continua (CDC), puede elegir una de las siguientes opciones:
+ Configurar la replicación continua con el rol sysadmin.
+ Configurar la replicación continua para que no se utilice el rol sysadmin.

**nota**  
Puede usar el siguiente script para buscar todas las tablas sin una clave principal o única:  

```
USE [DBname]
SELECT SCHEMA_NAME(schema_id) AS schema_name, name AS table_name
FROM sys.tables
WHERE OBJECTPROPERTY(object_id, 'TableHasPrimaryKey') = 0
        AND  OBJECTPROPERTY(object_id, 'TableHasUniqueCnst') = 0
ORDER BY schema_name, table_name;
```

### Configurar la replicación continua en un SQL Server autoadministrado
<a name="CHAP_Source.SQLServer.CDC.MSCDC"></a>

Esta sección contiene información sobre cómo configurar la replicación continua en un SQL Server autoadministrado con o sin el rol sysadmin.

**Topics**
+ [Configuración de la replicación continua en un SQL Server autoadministrado: uso del rol sysadmin](#CHAP_Source.SQLServer.CDC.MSCDC.Sysadmin)
+ [Configuración de la replicación continua en un SQL Server independiente: sin el rol de sysadmin](#CHAP_SupportScripts.SQLServer.standalone)
+ [Configuración de la replicación continua en un SQL Server en un entorno de grupos de disponibilidad: sin el rol de sysadmin](#CHAP_SupportScripts.SQLServer.ag)

#### Configuración de la replicación continua en un SQL Server autoadministrado: uso del rol sysadmin
<a name="CHAP_Source.SQLServer.CDC.MSCDC.Sysadmin"></a>

AWS DMS la replicación continua para SQL Server utiliza la replicación nativa de SQL Server para las tablas con claves principales y la captura de datos de cambios (CDC) para las tablas sin claves principales.

Antes de configurar la replicación continua, consulte [Requisitos previos para el uso de la replicación continua (CDC) desde un origen de SQL Server](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Prerequisites). 

En el caso de las tablas con claves principales, generalmente se AWS DMS pueden configurar los artefactos necesarios en la fuente. Sin embargo, para las instancias de origen de SQL Server autoadministradas, asegúrese de configurar primero la distribución de SQL Server de forma manual. Una vez hecho esto, los usuarios de AWS DMS origen con permisos de administrador del sistema pueden crear automáticamente la publicación para las tablas con claves principales.

Para comprobar si la distribución ya se ha configurado, ejecute el siguiente comando.

```
sp_get_distributor
```

Si el resultado es `NULL` para la distribución de columnas, la distribución no se ha configurado. Puede usar el siguiente procedimiento para configurar la distribución.<a name="CHAP_Source.SQLServer.CDC.MSCDC.Setup"></a>

**Configuración de la distribución**

1. Conéctese a la base de datos de origen de SQL Server mediante la herramienta SQL Server Management Studio (SSMS).

1. Abra el menú contextual (haga clic con el botón derecho) para la carpeta **Replicación** y elija **Configurar distribución**. Aparecerá el asistente para configurar la distribución. 

1. Siga el asistente para especificar los valores predeterminados y crear la distribución.<a name="CHAP_Source.SQLServer.CDC.MSCDC.Setup.CDC"></a>

**Configuración de CDC**

AWS DMS La versión 3.4.7 y las versiones posteriores permiten configurar MS CDC para su base de datos y todas sus tablas automáticamente si no utiliza una réplica de solo lectura. Para utilizar esta característica, establezca ECA `SetUpMsCdcForTables` como verdadero. Para obtener información al respecto, consulte ECAs. [Configuración del punto de conexión](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.ConnectionAttrib)

Para versiones AWS DMS anteriores a la 3.4.7 o para una réplica de solo lectura como fuente, lleve a cabo los siguientes pasos:

1. Para las tablas sin claves principales, configure MS-CDC para la base de datos. Para ello, utilice una cuenta que tenga asignado el rol sysadmin y ejecute el siguiente comando.

   ```
   use [DBname]
   EXEC sys.sp_cdc_enable_db
   ```

1. A continuación, configure MS-CDC para cada una de las tablas de origen. Para cada tabla con claves únicas pero sin clave principal, ejecute la siguiente consulta para la que desee configurar MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @index_name = N'unique_index_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

1. Para cada tabla sin claves principales ni claves únicas, ejecute la siguiente consulta para la que desee configurar MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL
   GO
   ```

Para obtener más información sobre cómo configurar MS-CDC para tablas específicas, consulte la documentación de [SQL Server](https://msdn.microsoft.com/en-us/library/cc627369.aspx). 

#### Configuración de la replicación continua en un SQL Server independiente: sin el rol de sysadmin
<a name="CHAP_SupportScripts.SQLServer.standalone"></a>

Esta sección describe cómo configurar la replicación continua para un origen de base de datos de SQL Server independiente que no requiera que la cuenta de usuario tenga privilegios de sysadmin.

**nota**  
Tras ejecutar los pasos de esta sección, el usuario de DMS que no sea administrador de sistemas tendrá permisos para hacer lo siguiente:  
Lea los cambios del archivo de registro de transacciones en línea
Acceso al disco para leer los cambios de los archivos de copia de seguridad del registro transaccional
Añadir o modificar la publicación que utiliza DMS
Añadir artículos a la publicación

1. Configure Microsoft SQL Server para la replicación como se describe en [Captura de cambios en los datos para la replicación continua desde SQL Server](#CHAP_Source.SQLServer.CDC).

1. Habilite MS-REPLICATION en la base de datos de origen. Esto se puede hacer manualmente o ejecutando la tarea una vez como usuario sysadmin.

1. Cree el esquema de `awsdms` en la base de datos de origen mediante el siguiente script:

   ```
   use master
   go
   create schema awsdms
   go
   
   
   -- Create the table valued function [awsdms].[split_partition_list] on the Master database, as follows:
   USE [master]
   GO
   
   set ansi_nulls on
   go
   
   set quoted_identifier on
   go
   
   if (object_id('[awsdms].[split_partition_list]','TF')) is not null
   
   drop function [awsdms].[split_partition_list];
   
   go
   
   create function [awsdms].[split_partition_list]
   
   (
   
   @plist varchar(8000), --A delimited list of partitions
   
   @dlm nvarchar(1) --Delimiting character
   
   )
   
   returns @partitionsTable table --Table holding the BIGINT values of the string fragments
   
   (
   
   pid bigint primary key
   
   )   
   
   as
   
   begin
   
   declare @partition_id bigint;
   
   declare @dlm_pos integer;
   
   declare @dlm_len integer;
   
   set @dlm_len = len(@dlm);
   
   while (charindex(@dlm,@plist)>0)
   
   begin
   
   set @dlm_pos = charindex(@dlm,@plist);
   
   set @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint);
   
   insert into @partitionsTable (pid) values (@partition_id)
   
   set @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist));
   
   end
   
   set @partition_id = cast (ltrim(rtrim(@plist)) as bigint);
   
   insert into @partitionsTable (pid) values ( @partition_id );
   
   return
   
   end
   
   GO
   ```

1. Cree el procedimiento `[awsdms].[rtm_dump_dblog]` en la base de datos maestra mediante el siguiente script:

   ```
   use [MASTER]
   
   go
   
   if (object_id('[awsdms].[rtm_dump_dblog]','P')) is not null drop procedure [awsdms].[rtm_dump_dblog];
   go
   
   
   set ansi_nulls on
   go
   
   set quoted_identifier on
   GO
   
   
   
   CREATE procedure [awsdms].[rtm_dump_dblog]
   
   (
   
   @start_lsn varchar(32),
   
   @seqno integer,
   
   @filename varchar(260),
   
   @partition_list varchar(8000), -- A comma delimited list: P1,P2,... Pn
   
   @programmed_filtering integer,
   
   @minPartition bigint,
   
   @maxPartition bigint
   
   )
   
   as begin
   
   declare @start_lsn_cmp varchar(32); -- Stands against the GT comparator
   
   SET NOCOUNT ON -- – Disable "rows affected display"
   
   set @start_lsn_cmp = @start_lsn;
   
   if (@start_lsn_cmp) is null
   
   set @start_lsn_cmp = '00000000:00000000:0000';
   
   if (@partition_list is null)
   
   begin
   
   RAISERROR ('Null partition list waspassed',16,1);
   
   return
   
   end
   
   if (@start_lsn) is not null
   
   set @start_lsn = '0x'+@start_lsn;
   
   if (@programmed_filtering=0)
   
   
   
   SELECT
   
   [Current LSN],
   
   [operation],
   
   [Context],
   
   [Transaction ID],
   
   [Transaction Name],
   
   [Begin Time],
   
   [End Time],
   
   [Flag Bits],
   
   [PartitionID],
   
   [Page ID],
   
   [Slot ID],
   
   [RowLog Contents 0],
   
   [Log Record],
   
   [RowLog Contents 1]
   
   FROM
   
   fn_dump_dblog (
   
   @start_lsn, NULL, N'DISK', @seqno, @filename,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default)
   
   where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS
   
   and
   
   (
   
   ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
   
   or
   
   ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
   
   and
   
   ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,1))))
   
   and [PartitionID] in ( select * from master.awsdms.split_partition_list (@partition_list,','))
   
   )
   
   or
   
   ([operation] = 'LOP_HOBT_DDL')
   
   )
   
   
   else
   
   
   SELECT
   
   [Current LSN],
   
   [operation],
   
   [Context],
   
   [Transaction ID],
   
   [Transaction Name],
   
   [Begin Time],
   
   [End Time],
   
   [Flag Bits],
   
   [PartitionID],
   
   [Page ID],
   
   [Slot ID],
   
   [RowLog Contents 0],
   
   [Log Record],
   
   [RowLog Contents 1] -- After Image
   
   FROM
   
   fn_dump_dblog (
   
   @start_lsn, NULL, N'DISK', @seqno, @filename,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default)
   
   where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS
   
   and
   
   (
   
   ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
   
   or
   
   ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
   
   and
   
   ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,1))))
   
   and ([PartitionID] is not null) and ([PartitionID] >= @minPartition and [PartitionID]<=@maxPartition)
   
   )
   
   or
   
   ([operation] = 'LOP_HOBT_DDL')
   
   )
   
   
   
   SET NOCOUNT OFF -- Re-enable "rows affected display"
   
   end
   
   GO
   ```

1. Cree el certificado en la base de datos maestra mediante el siguiente script:

   ```
   Use [master]
   Go
   
   CREATE CERTIFICATE [awsdms_rtm_dump_dblog_cert] ENCRYPTION BY PASSWORD = N'@5trongpassword'
   
   WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions';
   ```

1. Cree el inicio de sesión del certificado mediante el siguiente script: 

   ```
   Use [master]
   Go
   
   CREATE LOGIN awsdms_rtm_dump_dblog_login FROM CERTIFICATE [awsdms_rtm_dump_dblog_cert];
   ```

1. Agregue el inicio de sesión al rol del servidor de sysadmin mediante el siguiente script:

   ```
   ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_dump_dblog_login];
   ```

1. Agregue la firma a [master].[awsdms].[rtm\$1dump\$1dblog] con el certificado, mediante el siguiente script: 

   ```
   Use [master]
   GO
   ADD SIGNATURE
   TO [master].[awsdms].[rtm_dump_dblog] BY CERTIFICATE [awsdms_rtm_dump_dblog_cert] WITH PASSWORD = '@5trongpassword';
   ```
**nota**  
Si vuelve a crear el procedimiento almacenado, tendrá que volver a agregar la firma.

1. Cree [awsdms]. [rtm\$1position\$11st\$1timestamp] en la base de datos maestra mediante el siguiente script:

   ```
   use [master]
       if object_id('[awsdms].[rtm_position_1st_timestamp]','P') is not null
       DROP PROCEDURE [awsdms].[rtm_position_1st_timestamp];
       go
       create procedure [awsdms].[rtm_position_1st_timestamp]
       (
       @dbname                sysname,      -- Database name
       @seqno                 integer,      -- Backup set sequence/position number within file
       @filename              varchar(260), -- The backup filename
       @1stTimeStamp          varchar(40)   -- The timestamp to position by
       ) 
       as begin
   
       SET NOCOUNT ON       -- Disable "rows affected display"
   
       declare @firstMatching table
       (
       cLsn varchar(32),
       bTim datetime
       )
   
       declare @sql nvarchar(4000)
       declare @nl                       char(2)
       declare @tb                       char(2)
       declare @fnameVar                 nvarchar(254) = 'NULL'
   
       set @nl  = char(10); -- New line
       set @tb  = char(9)   -- Tab separator
   
       if (@filename is not null)
       set @fnameVar = ''''+@filename +''''
   
       set @sql='use ['+@dbname+'];'+@nl+
       'select top 1 [Current LSN],[Begin Time]'+@nl+
       'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @fnameVar+','+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default)'+@nl+
       'where operation=''LOP_BEGIN_XACT''' +@nl+
       'and [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl
   
       --print @sql
       delete from  @firstMatching 
       insert into @firstMatching  exec sp_executesql @sql    -- Get them all
   
       select top 1 cLsn as [matching LSN],convert(varchar,bTim,121) as [matching Timestamp] from @firstMatching;
   
       SET NOCOUNT OFF      -- Re-enable "rows affected display"
   
       end
       GO
   ```

1. Cree el certificado en la base de datos maestra mediante el siguiente script:

   ```
   Use [master]
   Go
   CREATE CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
   ENCRYPTION BY PASSWORD = '@5trongpassword'
   WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
   ```

1. Cree el inicio de sesión del certificado mediante el siguiente script:

   ```
   Use [master]
   Go
   CREATE LOGIN awsdms_rtm_position_1st_timestamp_login FROM CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert];
   ```

1. Agregue el inicio de sesión al rol de sysadmin mediante el siguiente script:

   ```
   ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_position_1st_timestamp_login];
   ```

1. Agregue la firma a [master].[awsdms].[rtm\$1position\$11st\$1timestamp] con el certificado, mediante el siguiente script:

   ```
   Use [master]
       GO
       ADD SIGNATURE
       TO [master].[awsdms].[rtm_position_1st_timestamp]
       BY CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
       WITH PASSWORD = '@5trongpassword';
   ```

1. Conceda al usuario de DMS acceso de ejecución al nuevo procedimiento almacenado mediante el siguiente script:

   ```
   use master
   go
   GRANT execute on [awsdms].[rtm_position_1st_timestamp] to dms_user;
   ```

1. Cree un usuario con los siguientes permisos y roles en cada una de las siguientes bases de datos:
**nota**  
Debe crear la cuenta de usuario dmsnosysadmin con el mismo SID en cada réplica. La siguiente consulta SQL puede ayudar a comprobar el valor del SID de la cuenta dmsnosysadmin en cada réplica. Para obtener más información sobre la creación de un usuario, consulte [CREATE USER (Transact-SQL)](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql) en la [documentación de Microsoft SQL Server](https://learn.microsoft.com/en-us/sql/). Para obtener más información sobre la creación de cuentas de usuario de SQL para la base de datos de Azure SQL, consulte [Replicación geográfica activa](https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview).

   ```
   use master
   go
   grant select on sys.fn_dblog to [DMS_user]
   grant view any definition to [DMS_user]
   grant view server state to [DMS_user]--(should be granted to the login).
   grant execute on sp_repldone to [DMS_user]
   grant execute on sp_replincrementlsn to [DMS_user]
   grant execute on sp_addpublication to [DMS_user]
   grant execute on sp_addarticle to [DMS_user]
   grant execute on sp_articlefilter to [DMS_user]
   grant select on [awsdms].[split_partition_list] to [DMS_user]
   grant execute on [awsdms].[rtm_dump_dblog] to [DMS_user]
   ```

   ```
   use msdb
   go
   grant select on msdb.dbo.backupset to self_managed_user
   grant select on msdb.dbo.backupmediafamily to self_managed_user
   grant select on msdb.dbo.backupfile to self_managed_user
   ```

   Ejecute el siguiente script en la base de datos de origen:

   ```
   use Source_DB
       Go
       EXEC sp_addrolemember N'db_owner', N'DMS_user'
   ```

1. Por último, agregue un atributo de conexión adicional (ECA) al punto de conexión de SQL Server de origen:

   ```
   enableNonSysadminWrapper=true;
   ```

#### Configuración de la replicación continua en un SQL Server en un entorno de grupos de disponibilidad: sin el rol de sysadmin
<a name="CHAP_SupportScripts.SQLServer.ag"></a>

En esta sección se describe cómo configurar la replicación continua para un origen de base de datos de SQL Server en un entorno de grupo de disponibilidad que no requiera que la cuenta de usuario tenga privilegios de sysadmin.

**nota**  
Tras ejecutar los pasos de esta sección, el usuario de DMS que no sea administrador de sistemas tendrá permisos para hacer lo siguiente:  
Lea los cambios del archivo de registro de transacciones en línea
Acceso al disco para leer los cambios de los archivos de copia de seguridad del registro transaccional
Añadir o modificar la publicación que utiliza DMS
Añadir artículos a la publicación

**Configuración de la replicación continua sin usar el usuario sysadmin en un entorno de grupos de disponibilidad**

1. Configure Microsoft SQL Server para la replicación como se describe en [Captura de cambios en los datos para la replicación continua desde SQL Server](#CHAP_Source.SQLServer.CDC).

1. Habilite MS-REPLICATION en la base de datos de origen. Esto se puede hacer manualmente o ejecutando la tarea una vez mediante un usuario sysadmin.
**nota**  
Debe configurar el distribuidor de MS-REPLICATION como local o de forma que permita el acceso a los usuarios que no sean sysadmin a través del servidor vinculado asociado.

1. Si la opción de punto de conexión **Usar exclusivamente sp\$1repldone en una tarea única** está habilitada, detenga el trabajo del lector de registros de MS-REPLICATION.

1. Realice los siguientes pasos en cada réplica:

   1. Cree el esquema `[awsdms]`[awsdms] en la base de datos maestra:

      ```
      CREATE SCHEMA [awsdms]
      ```

   1. Cree la función con valor de tabla `[awsdms].[split_partition_list]` en la base de datos maestra:

      ```
      USE [master]
      GO
      
      SET ansi_nulls on
      GO
        
      SET quoted_identifier on
      GO
      
      IF (object_id('[awsdms].[split_partition_list]','TF')) is not null
        DROP FUNCTION [awsdms].[split_partition_list];
      GO
      
      CREATE FUNCTION [awsdms].[split_partition_list] 
      ( 
        @plist varchar(8000),    --A delimited list of partitions    
        @dlm nvarchar(1)    --Delimiting character
      ) 
      RETURNS @partitionsTable table --Table holding the BIGINT values of the string fragments
      (
        pid bigint primary key
      ) 
      AS 
      BEGIN
        DECLARE @partition_id bigint;
        DECLARE @dlm_pos integer;
        DECLARE @dlm_len integer;  
        SET @dlm_len = len(@dlm);
        WHILE (charindex(@dlm,@plist)>0)
        BEGIN 
          SET @dlm_pos = charindex(@dlm,@plist);
          SET @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint);
          INSERT into @partitionsTable (pid) values (@partition_id)
          SET @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist));
        END 
        SET @partition_id = cast (ltrim(rtrim(@plist)) as bigint);
        INSERT into @partitionsTable (pid) values (  @partition_id  );
        RETURN
      END
      GO
      ```

   1. Cree el procedimiento `[awsdms].[rtm_dump_dblog]` en la base de datos maestra:

      ```
      USE [MASTER] 
      GO
      
      IF (object_id('[awsdms].[rtm_dump_dblog]','P')) is not null
        DROP PROCEDURE [awsdms].[rtm_dump_dblog]; 
      GO
      
      SET ansi_nulls on
      GO 
      
      SET quoted_identifier on 
      GO
                                          
      CREATE PROCEDURE [awsdms].[rtm_dump_dblog]
      (
        @start_lsn            varchar(32),
        @seqno                integer,
        @filename             varchar(260),
        @partition_list       varchar(8000), -- A comma delimited list: P1,P2,... Pn
        @programmed_filtering integer,
        @minPartition         bigint,
        @maxPartition         bigint
      ) 
      AS 
      BEGIN
      
        DECLARE @start_lsn_cmp varchar(32); -- Stands against the GT comparator
      
        SET NOCOUNT ON  -- Disable "rows affected display"
      
        SET @start_lsn_cmp = @start_lsn;
        IF (@start_lsn_cmp) is null
          SET @start_lsn_cmp = '00000000:00000000:0000';
      
        IF (@partition_list is null)
          BEGIN
            RAISERROR ('Null partition list was passed',16,1);
            return
            --set @partition_list = '0,';    -- A dummy which is never matched
          END
      
        IF (@start_lsn) is not null
          SET @start_lsn = '0x'+@start_lsn;
      
        IF (@programmed_filtering=0)
          SELECT
            [Current LSN],
            [operation],
            [Context],
            [Transaction ID],
            [Transaction Name],
            [Begin Time],
            [End Time],
            [Flag Bits],
            [PartitionID],
            [Page ID],
            [Slot ID],
            [RowLog Contents 0],
            [Log Record],
            [RowLog Contents 1] -- After Image
          FROM
            fn_dump_dblog (
              @start_lsn, NULL, N'DISK', @seqno, @filename,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default)
          WHERE 
            [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
            AND
            (
              (  [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
              OR
              (  [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
                AND
                ( ( [context]   in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX') )
                AND       
                [PartitionID] in ( select * from master.awsdms.split_partition_list (@partition_list,','))
              )
            OR
            ([operation] = 'LOP_HOBT_DDL')
          )
          ELSE
            SELECT
              [Current LSN],
              [operation],
              [Context],
              [Transaction ID],
              [Transaction Name],
              [Begin Time],
              [End Time],
              [Flag Bits],
              [PartitionID],
              [Page ID],
              [Slot ID],
              [RowLog Contents 0],
              [Log Record],
              [RowLog Contents 1] -- After Image
            FROM
              fn_dump_dblog (
                @start_lsn, NULL, N'DISK', @seqno, @filename,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default)
            WHERE [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
            AND
            (
              (  [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
              OR
              (  [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
                AND
                ( ( [context]   in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX') )
                AND ([PartitionID] is not null) and ([PartitionID] >= @minPartition and [PartitionID]<=@maxPartition)
              )
              OR
              ([operation] = 'LOP_HOBT_DDL')
            )
            SET NOCOUNT OFF -- Re-enable "rows affected display"
      END
      GO
      ```

   1. Cree un certificado en la base de datos maestra:

      ```
      USE [master]
      GO
      CREATE CERTIFICATE [awsdms_rtm_dump_dblog_cert]
        ENCRYPTION BY PASSWORD = N'@hardpassword1'
        WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions'
      ```

   1. Cree un inicio de sesión desde el certificado:

      ```
      USE [master]
      GO
      CREATE LOGIN awsdms_rtm_dump_dblog_login FROM CERTIFICATE
        [awsdms_rtm_dump_dblog_cert];
      ```

   1. Agregue el inicio de sesión al rol del servidor sysadmin:

      ```
      ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_dump_dblog_login];
      ```

   1. Agregue la firma al procedimiento [master].[awsdms].[rtm\$1dump\$1dblog] con el certificado:

      ```
      USE [master]
      GO
      
      ADD SIGNATURE
        TO [master].[awsdms].[rtm_dump_dblog]
        BY CERTIFICATE [awsdms_rtm_dump_dblog_cert]
        WITH PASSWORD = '@hardpassword1';
      ```
**nota**  
Si vuelve a crear el procedimiento almacenado, tendrá que volver a agregar la firma.

   1. Cree el procedimiento `[awsdms].[rtm_position_1st_timestamp]` en la base de datos maestra:

      ```
      USE [master]
      IF object_id('[awsdms].[rtm_position_1st_timestamp]','P') is not null
        DROP PROCEDURE [awsdms].[rtm_position_1st_timestamp];
      GO
      CREATE PROCEDURE [awsdms].[rtm_position_1st_timestamp]
      (
        @dbname                sysname,      -- Database name
        @seqno                 integer,      -- Backup set sequence/position number within file
        @filename              varchar(260), -- The backup filename
        @1stTimeStamp          varchar(40)   -- The timestamp to position by
      ) 
      AS 
      BEGIN
        SET NOCOUNT ON       -- Disable "rows affected display"
      
        DECLARE @firstMatching table
        (
          cLsn varchar(32),
          bTim datetime
        )
        DECLARE @sql nvarchar(4000)
        DECLARE @nl                       char(2)
        DECLARE @tb                       char(2)
        DECLARE @fnameVar                 sysname = 'NULL'
      
        SET @nl  = char(10); -- New line
        SET @tb  = char(9)   -- Tab separator
      
        IF (@filename is not null)
          SET @fnameVar = ''''+@filename +''''
        SET @filename = ''''+@filename +''''
        SET @sql='use ['+@dbname+'];'+@nl+
          'SELECT TOP 1 [Current LSN],[Begin Time]'+@nl+
          'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @filename +','+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default)'+@nl+
          'WHERE operation=''LOP_BEGIN_XACT''' +@nl+
          'AND [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl
      
          --print @sql
          DELETE FROM @firstMatching 
          INSERT INTO @firstMatching  exec sp_executesql @sql    -- Get them all
          SELECT TOP 1 cLsn as [matching LSN],convert(varchar,bTim,121) AS[matching Timestamp] FROM @firstMatching;
      
          SET NOCOUNT OFF      -- Re-enable "rows affected display"
      
      END
      GO
      ```

   1. Cree un certificado en la base de datos maestra:

      ```
      USE [master]
      GO
      CREATE CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
        ENCRYPTION BY PASSWORD = N'@hardpassword1'
        WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
      ```

   1. Cree un inicio de sesión desde el certificado:

      ```
      USE [master]
      GO
      CREATE LOGIN awsdms_rtm_position_1st_timestamp_login FROM CERTIFICATE
        [awsdms_rtm_position_1st_timestamp_cert];
      ```

   1. Agregue el inicio de sesión al rol del servidor sysadmin:

      ```
      ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_position_1st_timestamp_login];
      ```

   1. Agregue la firma al procedimiento `[master].[awsdms].[rtm_position_1st_timestamp]` mediante el certificado:

      ```
      USE [master]
      GO
      ADD SIGNATURE
        TO [master].[awsdms].[rtm_position_1st_timestamp]
        BY CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
        WITH PASSWORD = '@hardpassword1';
      ```
**nota**  
Si vuelve a crear el procedimiento almacenado, tendrá que volver a agregar la firma.

   1. Cree un usuario con lo siguiente permissions/roles en cada una de las siguientes bases de datos:
**nota**  
Debe crear la cuenta de usuario dmsnosysadmin con el mismo SID en cada réplica. La siguiente consulta SQL puede ayudar a comprobar el valor del SID de la cuenta dmsnosysadmin en cada réplica. Para obtener más información sobre la creación de un usuario, consulte [CREATE USER (Transact-SQL)](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql) en la [documentación de Microsoft SQL Server](https://learn.microsoft.com/en-us/sql/). Para obtener más información sobre la creación de cuentas de usuario de SQL para la base de datos de Azure SQL, consulte [Replicación geográfica activa](https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview).

      ```
      SELECT @@servername servername, name, sid, create_date, modify_date
        FROM sys.server_principals
        WHERE name = 'dmsnosysadmin';
      ```

   1. Conceda permisos en la base de datos maestra en cada réplica:

      ```
      USE master
      GO 
      
      GRANT select on sys.fn_dblog to dmsnosysadmin;
      GRANT view any definition to dmsnosysadmin;
      GRANT view server state to dmsnosysadmin -- (should be granted to the login).
      GRANT execute on sp_repldone to dmsnosysadmin;
      GRANT execute on sp_replincrementlsn to dmsnosysadmin;
      GRANT execute on sp_addpublication to dmsnosysadmin;
      GRANT execute on sp_addarticle to dmsnosysadmin;
      GRANT execute on sp_articlefilter to dmsnosysadmin;
      GRANT select on [awsdms].[split_partition_list] to dmsnosysadmin;
      GRANT execute on [awsdms].[rtm_dump_dblog] to dmsnosysadmin;
      GRANT execute on [awsdms].[rtm_position_1st_timestamp] to dmsnosysadmin;
      ```

   1. Conceda permisos en la base de datos msdb en cada réplica:

      ```
      USE msdb
      GO
      GRANT select on msdb.dbo.backupset TO self_managed_user
      GRANT select on msdb.dbo.backupmediafamily TO self_managed_user
      GRANT select on msdb.dbo.backupfile TO self_managed_user
      ```

   1. Agregue el rol `db_owner` a `dmsnosysadmin` en la base de datos de origen. Como la base de datos está sincronizada, solo puede agregar el rol en la réplica principal.

      ```
      use <source DB>
      GO 
      EXEC sp_addrolemember N'db_owner', N'dmsnosysadmin'
      ```

## Configuración de la replicación continua en una instancia de base de datos de SQL Server de la nube
<a name="CHAP_Source.SQLServer.Configuration"></a>

En esta sección se describe cómo configurar CDC en una instancia de base de datos de SQL Server alojada en la nube. Una instancia de SQL Server alojada en la nube es una instancia que se ejecuta en Amazon RDS para SQL Server, una instancia administrada por Azure SQL o cualquier otra instancia de SQL Server administrada en la nube. Para obtener información sobre las limitaciones de la replicación continua para cada tipo de base de datos, consulte [Limitaciones del uso de SQL Server como fuente de AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations). 

Antes de configurar la replicación continua, consulte [Requisitos previos para el uso de la replicación continua (CDC) desde un origen de SQL Server](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Prerequisites). 

A diferencia de los orígenes autoadministrados de Microsoft SQL Server, Amazon RDS para SQL Server no es compatible con MS-Replication. Por lo tanto, AWS DMS necesita usar MS-CDC para tablas con o sin claves principales.

Amazon RDS no concede privilegios de administrador del sistema para configurar artefactos de replicación que se AWS DMS utilizan para los cambios continuos en una instancia de SQL Server de origen. Asegúrese de activar MS-CDC para la instancia de Amazon RDS (mediante privilegios de usuario principal) como se explica en el procedimiento siguiente.

**Activación de MS-CDC para una instancia de base de datos de SQL Server de la nube**

1. Ejecute una de las siguientes consultas en el nivel de base de datos.

   Para una instancia de base de datos de RDS para SQL Server, utilice esta consulta.

   ```
   exec msdb.dbo.rds_cdc_enable_db 'DB_name'
   ```

   Para una instancia de base de datos administrada por Azure SQL, utilice esta consulta.

   ```
   USE DB_name 
   GO 
   EXEC sys.sp_cdc_enable_db 
   GO
   ```

1. Para cada tabla con una clave principal, ejecute la siguiente consulta para la que desee activar MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

   Para cada tabla con claves únicas pero sin clave principal, ejecute la siguiente consulta para la que desee activar MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @index_name = N'unique_index_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

    Para cada tabla sin claves principales ni claves únicas, ejecute la siguiente consulta para la que desee activar MS-CDC.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL
   GO
   ```

1. Establezca el periodo de retención:
   + En el caso de las instancias de RDS para SQL Server que se replican con DMS versión 3.5.3 o posteriores, asegúrese de que el periodo de retención esté establecido en el valor predeterminado de cinco segundos. Si va a actualizar o a pasar de DMS 3.5.2 y versiones anteriores a DMS 3.5.3 y versiones posteriores, cambie el valor del intervalo de sondeo una vez que las tareas se estén ejecutando en la instancia nueva o actualizada. En el siguiente script se define el periodo de retención en cinco segundos:

     ```
     use dbname
     EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@pollinginterval = 5
     exec sp_cdc_stop_job 'capture'
     exec sp_cdc_start_job 'capture'
     ```
   + El parámetro `@pollinginterval` se mide en segundos con un valor recomendado establecido en 86399. Esto significa que el registro de transacciones retiene los cambios durante 86 399 segundos (un día) cuando `@pollinginterval = 86399`. El procedimiento `exec sp_cdc_start_job 'capture'` inicia la configuración.
**nota**  
En algunas versiones de SQL Server, si el valor de `pollinginterval` está establecido en más de 3599 segundos, se restablece a los cinco segundos predeterminados. Cuando esto ocurre, las entradas de T-Log se purgan antes de que pueda leerlas. AWS DMS Para determinar qué versiones de SQL Server se ven afectadas por este problema conocido, consulte [este artículo de Microsoft KB](https://support.microsoft.com/en-us/topic/kb4459220-fix-incorrect-results-occur-when-you-convert-pollinginterval-parameter-from-seconds-to-hours-in-sys-sp-cdc-scan-in-sql-server-dac8aefe-b60b-7745-f987-582dda2cfa78).

     Si utiliza Amazon RDS con Multi-AZ, asegúrese de configurar también la secundaria para que tenga los valores correctos en caso de conmutación por error.

     ```
     exec rdsadmin..rds_set_configuration 'cdc_capture_pollinginterval' , <5 or preferred value>
     ```

**Para mantener el período de retención cuando una tarea de AWS DMS replicación se detiene durante más de una hora**
**nota**  
Los siguientes pasos no son necesarios para un origen de RDS para SQL Server que replique con DMS 3.5.3 y versiones posteriores.

1. Detenga el trabajo truncando los registros de transacciones mediante el uso del siguiente comando. 

   ```
   exec sp_cdc_stop_job 'capture'
   ```

1. Busque la tarea en la AWS DMS consola y reanude la tarea.

1. Elija la pestaña **Monitoreo** y compruebe la métrica `CDCLatencySource`. 

1. Una vez que la métrica `CDCLatencySource` sea igual a 0 (cero) y permanezca sin cambios, vuelva a iniciar el trabajo truncando los registros de transacción mediante el siguiente comando.

   ```
   exec sp_cdc_start_job 'capture'
   ```

Recuerde iniciar el trabajo que trunca los registros de transacciones de SQL Server. De lo contrario, es posible que el almacenamiento de la instancia de SQL Server se llene.

### Configuración recomendada cuando se utiliza RDS para SQL Server como fuente de AWS DMS
<a name="CHAP_Source.SQLServer.Configuration.Settings"></a>

#### Para la versión AWS DMS 3.5.3 y versiones posteriores
<a name="CHAP_Source.SQLServer.Configuration.Settings.353"></a>

**nota**  
La versión inicial de la característica de copia de seguridad de registros de RDS para SQL Server está habilitada de forma predeterminada para los puntos de conexión que haya creado o modificado después del lanzamiento de la versión 3.5.3 de DMS. Para utilizar esta característica con los puntos de conexión existentes, modifique el punto de conexión sin realizar ningún cambio.

AWS DMS La versión 3.5.3 introduce la compatibilidad con la lectura de copias de seguridad de registros. DMS se basa principalmente en la lectura de los registros de transacciones activos para replicar eventos. Si se hace una copia de seguridad de una transacción antes de que DMS pueda leerla desde el registro activo, la tarea accede a las copias de seguridad de RDS bajo demanda y lee los registros de copias de seguridad posteriores hasta que se pone al día con el registro de transacciones activo. Para garantizar que DMS tenga acceso a las copias de seguridad del registro, establezca el periodo de retención de las copias de seguridad automatizadas de RDS en al menos un día. Para obtener información sobre cómo configurar el periodo de retención de copias de seguridad automatizadas, consulte [Periodo de retención de copia de seguridad](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ManagingAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupRetention) en la *Guía del usuario de Amazon RDS*.

Una tarea de DMS que accede a las copias de seguridad del registro utiliza el almacenamiento en la instancia de RDS. Tenga en cuenta que la tarea solo accede a las copias de seguridad del registro necesarias para la replicación. Amazon RDS elimina estas copias de seguridad descargadas en un par de horas. Esta eliminación no afecta a las copias de seguridad de Amazon RDS retenidas en Amazon S3 ni a la funcionalidad `RESTORE DATABASE` de Amazon RDS. Se recomienda asignar almacenamiento adicional al origen de RDS para SQL Server si tiene intención de replicar con DMS. Una forma de calcular la cantidad de almacenamiento necesario es identificar la copia de seguridad a partir de la cual DMS iniciará o reanudará la replicación y sumar los tamaños de archivo de todas las copias de seguridad posteriores mediante la función de metadatos `tlog backup` de RDS. Para obtener más información sobre la función `tlog backup`, consulte [Publicación de las copias de seguridad del registro de transacciones disponibles](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER.SQLServer.AddlFeat.TransactionLogAccess.html#USER.SQLServer.AddlFeat.TransactionLogAccess.Listing) en la *Guía del usuario de Amazon RDS*. 

Como alternativa, puede optar por habilitar el escalado automático del almacenamiento o activar el escalado del almacenamiento en función de la CloudWatch `FreeStorageSpace` métrica de su instancia de Amazon RDS.

Se recomienda encarecidamente que no inicie ni reanude desde un punto demasiado remoto en las copias de seguridad del registro de transacciones, ya que esto puede provocar que se llene el espacio de almacenamiento de la instancia de SQL Server. En estos casos, se recomienda iniciar una carga completa. La replicación desde la copia de seguridad del registro de transacciones es más lenta que leer de los registros de transacciones activos. Para obtener más información, consulte [Procesamiento de copias de seguridad del registro de transacciones en RDS para SQL Server](CHAP_Troubleshooting_Latency_Source_SQLServer.md#CHAP_Troubleshooting_Latency_Source_SQLServer_backup).

Tenga en cuenta que el acceso a las copias de seguridad del registro requiere privilegios adicionales. Para obtener más información, consulte los detalles en [Configuración de permisos para la replicación continua desde una base de datos de SQL Server en la nube](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Permissions.Cloud). Asegúrese de conceder estos privilegios antes de que la tarea comience a replicarse.

#### Para la versión 3.5.2 y versiones anteriores AWS DMS
<a name="CHAP_Source.SQLServer.Configuration.Settings.352"></a>

Cuando trabaja con Amazon RDS para SQL Server como origen, el trabajo de captura de MS-CDC se basa en los parámetros `maxscans` y `maxtrans`. Estos parámetros rigen el número máximo de escaneos que la captura de MS-CDC realiza en el registro de transacciones y el número de transacciones que se procesan para cada escaneo.

En el caso de las bases de datos, en las que el número de transacciones es superior a `maxtrans*maxscans`, el aumento del valor `polling_interval` puede provocar una acumulación de registros de transacciones activos. A su vez, esta acumulación puede provocar un aumento del tamaño del registro de transacciones.

Tenga en cuenta que AWS DMS no se basa en el trabajo de captura de MS-CDC. El trabajo de captura de MS-CDC marca las entradas del registro de transacciones como procesadas. Esto permite que el trabajo de copia de seguridad del registro de transacciones elimine las entradas del registro de transacciones.

Le recomendamos que monitoree el tamaño del registro de transacciones y el éxito de los trabajos de MS-CDC. Si las tareas de MS-CDC fallan, el registro de transacciones podría crecer excesivamente y provocar errores de replicación. AWS DMS Puede monitorear los errores de los trabajos de captura de MS-CDC mediante la vista de administración dinámica `sys.dm_cdc_errors` de la base de datos de origen. Puede monitorear el tamaño del registro de transacciones mediante el comando de gestión `DBCC SQLPERF(LOGSPACE)`.

**Solución al aumento del registro de transacciones provocado por MS-CDC**

1. Compruebe la base `Log Space Used %` de datos desde la AWS DMS que se está replicando y compruebe que aumenta continuamente.

   ```
   DBCC SQLPERF(LOGSPACE)
   ```

1. Identifique qué es lo que bloquea el proceso de copia de seguridad del registro de transacciones.

   ```
   Select log_reuse_wait, log_reuse_wait_desc, name from sys.databases where name = db_name();
   ```

   Si el valor `log_reuse_wait_desc` es igual a `REPLICATION`, la retención de la copia de seguridad del registro se debe a la latencia en MS-CDC.

1. Aumente el número de eventos procesados por el trabajo de captura aumentando los valores de los parámetros `maxtrans` y `maxscans`.

   ```
   EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@maxtrans = 5000, @maxscans = 20 
   exec sp_cdc_stop_job 'capture'
   exec sp_cdc_start_job 'capture'
   ```

Para solucionar este problema, defina los valores de `maxscans` y de `maxtrans` forma que sean iguales al número medio de eventos generados en las tablas que `maxtrans*maxscans` se AWS DMS replican desde la base de datos de origen cada día.

Si establece estos parámetros por encima del valor recomendado, los trabajos de captura procesan todos los eventos de los registros de transacciones. Si establece estos parámetros por debajo del valor recomendado, la latencia de MS-CDC aumenta y el registro de transacciones crece.

Puede resultar difícil identificar los valores adecuados para `maxscans` y `maxtrans`, ya que los cambios en la carga de trabajo producen un número variable de eventos. En este caso, le recomendamos que configure el monitoreo de la latencia de MS-CDC. Para obtener más información, consulte [Monitorear el proceso](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/administer-and-monitor-change-data-capture-sql-server?view=sql-server-ver15#Monitor) en la documentación de SQL Server. A continuación, configure `maxtrans` y `maxscans` de forma dinámica en función de los resultados del monitoreo.

Si la AWS DMS tarea no encuentra los números de secuencia de registro (LSNs) necesarios para reanudar o continuar la tarea, es posible que se produzca un error en la tarea y que sea necesario volver a cargarla por completo.

**nota**  
Cuando se utiliza AWS DMS para replicar datos desde una fuente de RDS para SQL Server, es posible que se produzcan errores al intentar reanudar la replicación tras un evento de parada e inicio de la instancia de Amazon RDS. Esto se debe a que el proceso del agente de SQL Server reinicia el proceso del trabajo de captura cuando se reinicia después del evento de parada e inicio. Esto evita el intervalo de sondeo de MS-CDC.  
Por este motivo, en las bases de datos con volúmenes de transacciones inferiores al procesamiento de los trabajos de captura de MS-CDC, esto puede provocar que los datos se procesen o se marquen como replicados y respaldados antes de que AWS DMS puedan reanudarse desde donde se detuvieron, lo que provoca el siguiente error:  

```
[SOURCE_CAPTURE ]E: Failed to access LSN '0000dbd9:0006f9ad:0003' in the backup log sets since BACKUP/LOG-s are not available. [1020465] (sqlserver_endpoint_capture.c:764)
```
Para mitigar este problema, defina los valores `maxtrans` y `maxscans` tal como se recomendó anteriormente.

# Uso de la base de datos SQL de Microsoft Azure como fuente para AWS DMS
<a name="CHAP_Source.AzureSQL"></a>

Con AWS DMS, puede usar Microsoft Azure SQL Database como fuente de la misma manera que lo hace con SQL Server. AWS DMS admite, como fuente, la misma lista de versiones de bases de datos compatibles con SQL Server que se ejecuta de forma local o en una instancia de Amazon EC2. 

Para obtener más información, consulte [Uso de una base de datos de Microsoft SQL Server como fuente para AWS DMS](CHAP_Source.SQLServer.md).

**nota**  
AWS DMS no admite las operaciones de cambio de captura de datos (CDC) con Azure SQL Database.

# Uso de Microsoft Azure SQL Managed Instance como fuente para AWS DMS
<a name="CHAP_Source.AzureMgd"></a>

Con AWS DMS, puede usar Microsoft Azure SQL Managed Instance como fuente de la misma manera que lo hace con SQL Server. AWS DMS admite, como fuente, la misma lista de versiones de bases de datos compatibles con SQL Server que se ejecuta de forma local o en una instancia de Amazon EC2. 

Para obtener más información, consulte [Uso de una base de datos de Microsoft SQL Server como fuente para AWS DMS](CHAP_Source.SQLServer.md).

# Uso del servidor flexible Microsoft Azure Database para PostgreSQL como fuente para AWS DMS
<a name="CHAP_Source.AzureDBPostgreSQL"></a>

Con AWS DMS, puede utilizar el servidor flexible de Microsoft Azure Database para PostgreSQL como fuente de forma muy parecida a como lo hace con PostgreSQL.

Para obtener información sobre las versiones del servidor flexible de Microsoft Azure Database para PostgreSQL AWS DMS que admite como fuente, consulte. [Fuentes de AWS DMS](CHAP_Introduction.Sources.md)

## Configuración del servidor flexible de Microsoft Azure para PostgreSQL para la replicación lógica y la decodificación
<a name="CHAP_Source.AzureDBPostgreSQL.setup"></a>

Puede utilizar las características de replicación lógica y decodificación del servidor flexible de Microsoft Azure Database para PostgreSQL durante la migración de la base de datos.

Para la decodificación lógica, DMS utiliza el complemento `test_decoding` o `pglogical`. Si el complemento `pglogical` está disponible en una base de datos de PostgreSQL de origen, DMS crea una ranura de replicación con `pglogical`, de lo contrario se utiliza el complemento `test_decoding`. 

Para configurar el servidor flexible de Microsoft Azure para PostgreSQL como punto de conexión de origen para DMS, realice los siguientes pasos: 

1. Abra la página de parámetros del servidor en el portal.

1. Establezca el parámetro del servidor `wal_level` en `LOGICAL`.

1. Si desea utilizar la extensión `pglogical`, establezca los parámetros `shared_preload_libraries` y `azure.extensions` en `pglogical`.

1. Establezca el parámetro `max_replication_slots` en el número máximo de tareas de DMS que planea ejecutar simultáneamente. En Microsoft Azure, el valor predeterminado para este parámetro es 10. El valor máximo de este parámetro depende de la memoria disponible de la instancia de PostgreSQL, lo que permite entre 2 y 8 ranuras de replicación por GB de memoria.

1. Establezca el parámetro `max_wal_senders` en un valor mayor de 1. El parámetro `max_wal_senders` establece el número de tareas simultáneas que pueden ejecutarse. El valor predeterminado es 10.

1. Establezca el valor del parámetro `max_worker_processes` en al menos 16. De lo contrario, es posible que aparezcan errores como los siguientes:

   ```
   WARNING: out of background worker slots.
   ```

1. Guarde los cambios. Reinicie el servidor para aplicar los cambios.

1. Confirme que la instancia de PostgreSQL permite el tráfico de red desde el recurso de conexión.

1. Conceda permisos de replicación a un usuario existente o cree un nuevo usuario con permisos de replicación mediante los siguientes comandos. 
   + Conceda a un usuario existente permisos de replicación con el siguiente comando:

     ```
     ALTER USER <existing_user> WITH REPLICATION;
     ```
   + Cree un nuevo usuario con permisos de replicación mediante el siguiente comando: 

     ```
     CREATE USER aws_dms_user PASSWORD 'aws_dms_user_password';
     GRANT azure_pg_admin to aws_dms_user;
     ALTER ROLE aws_dms_user REPLICATION LOGIN;
     ```

Para obtener más información acerca de la replicación lógica con PostgreSQL, consulte los siguientes temas:
+ [Habilitación de la captura de datos de cambios (CDC) mediante replicación lógica](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Security)
+ [Uso de puntos de inicio de CDC nativo para configurar una carga de CDC de un origen de PostgreSQL](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.v10)
+ [Replicación lógica y decodificación lógica en Azure Database para PostgreSQL: servidor flexible](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-logical) en la [documentación de Azure Database para PostgreSQL](https://learn.microsoft.com/en-us/azure/postgresql/).

# Uso del servidor flexible Microsoft Azure Database for MySQL como fuente para AWS DMS
<a name="CHAP_Source.AzureDBMySQL"></a>

Con AWS DMS, puede utilizar el servidor flexible Microsoft Azure Database for MySQL como fuente de la misma manera que lo hace con MySQL.

Para obtener información sobre las versiones del servidor flexible Microsoft Azure Database for MySQL que AWS DMS admite como fuente, consulte[Fuentes de AWS DMS](CHAP_Introduction.Sources.md). 

Para obtener más información sobre el uso de una base de datos compatible con MySQL administrada por el cliente con, consulte. AWS DMS[Uso de una base de datos autogestionada compatible con MySQL como fuente para AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.CustomerManaged)

## Limitaciones al usar Azure MySQL como fuente de AWS Database Migration Service
<a name="CHAP_Source.AzureDBMySQL.limitations"></a>
+ El valor predeterminado de la variable de sistema del servidor flexible de Azure MySQL `sql_generate_invisible_primary_key` es `ON` y el servidor agrega automáticamente una clave principal invisible (GIPK) generada a cualquier tabla que se cree sin una clave principal explícita. AWS DMS no admite la replicación continua de tablas MySQL con restricciones GIPK.

# Uso de OCI MySQL Heatwave como fuente para AWS DMS
<a name="CHAP_Source.heatwave"></a>

Con AWS DMS, puede utilizar OCI MySQL Heatwave como fuente de la misma manera que lo hace con MySQL. El uso de OCI MySQL Heatwave como origen requiere algunos cambios de configuración adicionales.

Para obtener información sobre las versiones de OCI MySQL Heatwave AWS DMS compatibles como fuente, consulte. [Fuentes de AWS DMS](CHAP_Introduction.Sources.md)

## Configuración de OCI MySQL Heatwave para la replicación lógica
<a name="CHAP_Source.heatwave.setup"></a>

Para configurar la instancia de OCI MySQL Heatwave como punto de conexión de origen para DMS, haga lo siguiente:

1. Inicie sesión en la consola de OCI y abra el menú hamburguesa principal (≡) en la esquina superior izquierda.

1. Elija **Bases de datos**, **sistemas de bases de datos**.

1. Abra el menú de **configuraciones**.

1. Seleccione **Crear configuración**.

1. Escriba un nombre de configuración, por ejemplo **dms\$1configuration**.

1. Elija la forma de la instancia de OCI MySQL Heatwave actual. Puede encontrar la forma en la pestaña de propiedades de **configuración del sistema de base de datos** de la instancia en la sección **Configuración del sistema de base de datos: Forma**.

1. En la sección **Variables de usuario**, elija la variable del sistema `binlog_row_value_options`. El valor predeterminado es `PARTIAL_JSON`. Borre el valor.

1. Elija el botón **Crear**.

1. **Abra su SQLHeatwave instancia OCI My y pulse el botón Editar.**

1. En la sección **Configuración**, elija el botón **Cambiar configuración** y elija la configuración de forma que creó en el paso 4.

1. Una vez que los cambios surtan efecto, la instancia estará lista para la replicación lógica.

# Uso de Google Cloud para MySQL como fuente de AWS DMS
<a name="CHAP_Source.GC"></a>

Con AWS DMS, puedes usar Google Cloud para MySQL como fuente de la misma manera que lo haces con MySQL. 

Para obtener información sobre las versiones de GCP MySQL AWS DMS compatibles como fuente, consulta[Fuentes de AWS DMS](CHAP_Introduction.Sources.md). 

Para obtener más información, consulte [Uso de una base de datos compatible con MySQL como fuente para AWS DMS](CHAP_Source.MySQL.md).

**nota**  
Support para GCP MySQL 8.0 como fuente está disponible en la AWS DMS versión 3.4.6.  
AWS DMS no admite el modo SSL `verify-full` para las instancias de GCP for MySQL.  
`Allow only SSL connections`No se admite la configuración de seguridad de GCP MySQL porque requiere la verificación del certificado del servidor y del cliente. AWS DMS solo admite la verificación de certificados de servidor.  
AWS DMS admite el valor predeterminado de CloudSQL para MySQL de GCP para el `binlog_checksum` indicador de `CRC32` base de datos.

# Uso de Google Cloud para PostgreSQL como fuente para AWS DMS
<a name="CHAP_Source.GCPostgres"></a>

Con AWS DMS, puedes usar Google Cloud para PostgreSQL como fuente de la misma manera que lo haces con las bases de datos PostgreSQL autogestionadas.

Para obtener información sobre las versiones de PostgreSQL de GCP AWS DMS compatibles como fuente, consulte. [Fuentes de AWS DMS](CHAP_Introduction.Sources.md) 

Para obtener más información, consulte [Uso de una base de datos PostgreSQL como fuente AWS DMS](CHAP_Source.PostgreSQL.md).

## Configuración de Google Cloud para PostgreSQL para la replicación lógica y la decodificación
<a name="CHAP_Source.GCPostgres.setup"></a>

Puede utilizar las características de replicación lógica y decodificación en Google Cloud SQL para PostgreSQL durante la migración de la base de datos.

Para la decodificación lógica, DMS usa uno de los siguientes complementos:
+ `test_decoding`
+ `pglogical`

Si el complemento `pglogical` está disponible en una base de datos de PostgreSQL de origen, DMS crea una ranura de replicación con `pglogical`, de lo contrario se utiliza el complemento `test_decoding`. 

Tenga en cuenta lo siguiente acerca del uso de la decodificación lógica con: AWS DMS

1. Con Google Cloud SQL para PostgreSQL, habilite la decodificación lógica configurando el indicador `cloudsql.logical_decoding` en `on`.

1. Para habilitar `pglogical`, establezca el indicador `cloudsql.enable_pglogical` en `on` y reinicie la base de datos.

1. Para utilizar las características de decodificación lógica, debe crear un usuario de PostgreSQL con el atributo `REPLICATION`. Cuando utiliza la extensión `pglogical`, el usuario debe tener el rol `cloudsqlsuperuser`. Para crear un usuario con el rol de `cloudsqlsuperuser`, haga lo siguiente:

   ```
   CREATE USER new_aws_dms_user WITH REPLICATION
   IN ROLE cloudsqlsuperuser LOGIN PASSWORD 'new_aws_dms_user_password';
   ```

   Para establecer este atributo en un usuario existente, haga lo siguiente:

   ```
   ALTER USER existing_user WITH REPLICATION;
   ```

1. Establezca el parámetro `max_replication_slots` en el número máximo de tareas de DMS que planea ejecutar simultáneamente. En Google Cloud SQL, el valor predeterminado de este parámetro es 10. El valor máximo de este parámetro depende de la memoria disponible de la instancia de PostgreSQL, lo que permite entre 2 y 8 ranuras de replicación por GB de memoria.

Para obtener más información acerca de la replicación lógica con PostgreSQL, consulte los siguientes temas:
+ [Habilitación de la captura de datos de cambios (CDC) mediante replicación lógica](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Security)
+ [Uso de puntos de inicio de CDC nativo para configurar una carga de CDC de un origen de PostgreSQL](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.v10)
+ [Configure la replicación y la decodificación lógicas](https://cloud.google.com/sql/docs/postgres/replication/configure-logical-replication) en la [documentación de Cloud SQL para PostgreSQL](https://cloud.google.com/sql/docs/postgres).

# Uso de una base de datos PostgreSQL como fuente AWS DMS
<a name="CHAP_Source.PostgreSQL"></a>

Puede migrar datos de una o varias bases de datos PostgreSQL mediante. AWS DMS Con una base de datos de PostgreSQL como origen, podrá migrar datos a otra base de datos de PostgreSQL o a una de las bases de datos compatibles. 

Para obtener información sobre las versiones de PostgreSQL AWS DMS compatibles como fuente, consulte. [Fuentes de AWS DMS](CHAP_Introduction.Sources.md) 

AWS DMS admite PostgreSQL para estos tipos de bases de datos: 
+  Bases de datos en las instalaciones
+ Bases de datos en una instancia de Amazon EC2
+ Bases de datos en una instancia de base de datos de Amazon RDS
+ Bases de datos de una instancia de base de datos basada en Amazon Aurora PostgreSQL-Compatible Edition
+ Bases de datos de una instancia de base de datos basada en Amazon Aurora PostgreSQL-Compatible Serverless Edition

**nota**  
DMS es compatible con Amazon Aurora PostgreSQL - Serverless V1 como origen solo para carga completa. Sin embargo, puede usar Amazon Aurora PostgreSQL - Serverless V2 como origen para tareas de carga completa, carga completa \$1 CDC y solo CDC.

Puede utilizar las capas de conexión segura (SSL) para cifrar las conexiones entre el punto de conexión de PostgreSQL y la instancia de replicación. Para obtener más información sobre el uso de SSL con un punto de enlace de PostgreSQL, consulte [Uso de SSL con AWS Database Migration Service](CHAP_Security.SSL.md).

Como requisito de seguridad adicional cuando se utiliza PostgreSQL como origen, la cuenta de usuario especificada debe ser un usuario registrado en la base de datos de PostgreSQL.

Para configurar una base de datos PostgreSQL como AWS DMS punto final de origen, haga lo siguiente:
+ Cree un usuario de PostgreSQL con los permisos adecuados para AWS DMS proporcionar acceso a la base de datos de origen de PostgreSQL.
**nota**  
Si la base de datos de origen de PostgreSQL es autoadministrada, consulte [Trabajar con bases de datos PostgreSQL autogestionadas como fuente en AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites) para obtener más información.
Si la base de datos de origen de PostgreSQL la administra Amazon RDS, consulte [Trabajar con bases AWS de datos PostgreSQL gestionadas como fuente de DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL) para obtener más información.
+ Cree un punto de conexión de origen de PostgreSQL que se ajuste a la configuración de base de datos de PostgreSQL que haya elegido.
+ Cree una tarea o un conjunto de tareas para migrar las tablas.

  Para crear una full-load-only tarea, no es necesaria ninguna otra configuración de punto final.

  Antes de crear una tarea para la captura de datos de cambios (una tarea exclusiva de CDC o de carga completa de CDC y de CDC), consulte [Permitir a los CDC utilizar una base de datos PostgreSQL autogestionada como fuente AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites.CDC) o [Habilitar CDC con una instancia de base AWS de datos PostgreSQL administrada con AWS DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC).

**Topics**
+ [Trabajar con bases de datos PostgreSQL autogestionadas como fuente en AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites)
+ [Trabajar con bases AWS de datos PostgreSQL gestionadas como fuente de DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL)
+ [Habilitación de la captura de datos de cambios (CDC) mediante replicación lógica](#CHAP_Source.PostgreSQL.Security)
+ [Uso de puntos de inicio de CDC nativo para configurar una carga de CDC de un origen de PostgreSQL](#CHAP_Source.PostgreSQL.v10)
+ [Migración de PostgreSQL a PostgreSQL mediante AWS DMS](#CHAP_Source.PostgreSQL.Homogeneous)
+ [Migración de Babelfish a Amazon Aurora PostgreSQL mediante AWS DMS](#CHAP_Source.PostgreSQL.Babelfish)
+ [Eliminar AWS DMS artefactos de una base de datos fuente de PostgreSQL](#CHAP_Source.PostgreSQL.CleanUp)
+ [Ajustes de configuración adicionales al utilizar una base de datos de PostgreSQL como origen de DMS](#CHAP_Source.PostgreSQL.Advanced)
+ [Réplica de lectura como origen para PostgreSQL](#CHAP_Source.PostgreSQL.ReadReplica)
+ [Uso de la configuración del punto de conexión `MapBooleanAsBoolean` de PostgreSQL](#CHAP_Source.PostgreSQL.ConnectionAttrib.Endpointsetting)
+ [Configuración de punto final y atributos de conexión adicionales (ECAs) cuando se utiliza PostgreSQL como fuente de DMS](#CHAP_Source.PostgreSQL.ConnectionAttrib)
+ [Restricciones en el uso de una base de datos de PostgreSQL como origen de DMS](#CHAP_Source.PostgreSQL.Limitations)
+ [Tipos de datos de origen para PostgreSQL](#CHAP_Source-PostgreSQL-DataTypes)

## Trabajar con bases de datos PostgreSQL autogestionadas como fuente en AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites"></a>

Con una base de datos PostgreSQL autogestionada como fuente, puede migrar los datos a otra base de datos de PostgreSQL o a una de las otras bases de datos de destino compatibles con. AWS DMS El origen de la base de datos puede estar en una base de datos en las instalaciones o un motor autoadministrado en ejecución en una instancia de Amazon EC2. Puede utilizar una instancia de base de datos tanto para tareas de carga completa como para la captura de datos de cambios (CDC).

### Requisitos previos para utilizar una base de datos PostgreSQL autogestionada como fuente AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites.SelfManaged"></a>

Antes de migrar datos desde una base de datos de origen de PostgreSQL autoadministrada, haga lo siguiente: 
+ Asegúrese de utilizar una base de datos de PostgreSQL versión 9.4.x o superiores.
+ Para las tareas de carga completa más CDC o tareas exclusivas de CDC, debe conceder permisos de superusuario para la cuenta de usuario especificada para la base de datos de origen de PostgreSQL. La cuenta de usuario necesita permisos de superusuario para acceder a funciones específicas de replicación en el origen. La cuenta de usuario de DMS necesita permisos SELECT en todas las columnas para migrar las tablas correctamente. En el caso de que falten permisos en las columnas, DMS crea la tabla de destino con las asignaciones de tipos de datos habituales de DMS, lo que genera diferencias en los metadatos y errores en las tareas.
+ Agregue la dirección IP del servidor de AWS DMS replicación al archivo de `pg_hba.conf` configuración y habilite la replicación y las conexiones de socket. Ejemplo:

  ```
              # Replication Instance
              host all all 12.3.4.56/00 md5
              # Allow replication connections from localhost, by a user with the
              # replication privilege.
              host replication dms 12.3.4.56/00 md5
  ```

  El archivo de configuración de PostgreSQL `pg_hba.conf` controla la autenticación del cliente. (HBA significa autenticación basada en host). El archivo se almacena tradicionalmente en el directorio de datos del clúster de bases de datos. 
+ Si va a configurar una base de datos como fuente para la replicación lógica AWS DMS mediante [Permitir a los CDC utilizar una base de datos PostgreSQL autogestionada como fuente AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites.CDC)

**nota**  
Algunas AWS DMS transacciones permanecen inactivas durante algún tiempo antes de que el motor del DMS las vuelva a utilizar. Al usar el parámetro `idle_in_transaction_session_timeout` en PostgreSQL versiones 9.6 y superiores, puede provocar transacciones inactivas en el tiempo de espera y que se devuelva un error. No finalice las transacciones inactivas cuando utilice AWS DMS. 

### Permitir a los CDC utilizar una base de datos PostgreSQL autogestionada como fuente AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites.CDC"></a>

AWS DMS admite la captura de datos de cambios (CDC) mediante la replicación lógica. Para habilitar la replicación lógica en una base de datos de origen de PostgreSQL autoadministrada, establezca los siguientes parámetros y valores en el archivo de configuración `postgresql.conf`:
+ Configurar `wal_level = logical`.
+ Defina `max_replication_slots` en un valor mayor de 1.

  Establezca el valor `max_replication_slots` en función del número de tareas que desea ejecutar. Por ejemplo, para ejecutar cinco tareas debe establecer un mínimo de cinco ranuras. Las ranuras se abrirán automáticamente en cuanto se inicie una tarea y permanecerán abiertas incluso cuando la tarea ya no se esté ejecutando. Asegúrese de eliminar manualmente las ranuras abiertas. Tenga en cuenta que DMS elimina automáticamente las ranuras de replicación cuando se elimina la tarea, si DMS creó la ranura.
+ Defina `max_wal_senders` en un valor mayor de 1.

  El parámetro `max_wal_senders` establece el número de tareas simultáneas que pueden ejecutarse.
+ El parámetro `wal_sender_timeout` termina la replicación de conexiones que están inactivas durante más tiempo de los milisegundos especificados. El valor predeterminado para una base de datos de PostgreSQL en las instalaciones es 60 000 milisegundos (60 segundos). Si se establece el valor en 0 (cero), se desactiva el mecanismo de tiempo de espera y es una configuración válida para la DMS.

  Si se establece `wal_sender_timeout` en un valor distinto de cero, una tarea de DMS con CDC requiere un mínimo de 10 000 milisegundos (10 segundos) y se produce un error si el valor es inferior a 10 000. Mantenga el valor en menos de 5 minutos para evitar retrasos durante una conmutación por error de Multi-AZ de una instancia de replicación de DMS.

Algunos parámetros son estáticos y solo se pueden configurar al iniciar el servidor. Los cambios en las entradas en el archivo de configuración (para una base de datos autoadministrada) o en el grupo de parámetros de base de datos (para una base de datos de RDS para PostgreSQL) se ignoran hasta que se reinicie el servidor. Para obtener más información, consulte la [documentación de PostgreSQL](https://www.postgresql.org/docs/current/intro-whatis.html).

Para obtener más información acerca de la habilitación de CDC, consulte [Habilitación de la captura de datos de cambios (CDC) mediante replicación lógica](#CHAP_Source.PostgreSQL.Security).

## Trabajar con bases AWS de datos PostgreSQL gestionadas como fuente de DMS
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL"></a>

Puede utilizar una instancia de base AWS de datos PostgreSQL gestionada como fuente para. AWS DMS Puede realizar tanto tareas de carga completa como tareas de captura de datos de cambios (CDC) mediante un origen de PostgreSQL administrado por AWS. 

### Requisitos previos para utilizar una base de datos AWS PostgreSQL gestionada como fuente de DMS
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.Prerequisites"></a>

Antes de migrar datos desde una base de datos fuente AWS de PostgreSQL gestionada, haga lo siguiente:
+ Le recomendamos que utilice una cuenta de AWS usuario con los permisos mínimos necesarios para la instancia de base de datos de PostgreSQL como cuenta de usuario para el punto final de origen de PostgreSQL. AWS DMS No se recomienda el uso de la cuenta principal. La cuenta debe tener el rol `rds_superuser` y el rol `rds_replication`. El rol de `rds_replication` concede permisos para administrar ranuras lógicas y para transmitir datos mediante ranuras lógicas.

  Asegúrese de crear varios objetos a partir de la cuenta de usuario principal para la cuenta que utilice. Para obtener información sobre la creación de estos, consulte [Migración de una base de datos de Amazon RDS para PostgreSQL sin usar la cuenta de usuario principal](#CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser).
+ Si la base de datos de origen está en una nube privada virtual (VPC), elija el grupo de seguridad de la VPC que proporciona acceso a la instancia de base de datos donde reside la base de datos. Esto es necesario para que la instancia de replicación de DMS se conecte correctamente a la instancia de base de datos de origen. Cuando la base de datos y la instancia de replicación de DMS estén en la misma VPC, agregue el grupo de seguridad adecuado a sus propias reglas de entrada.

**nota**  
Algunas AWS DMS transacciones permanecen inactivas durante algún tiempo antes de que el motor de DMS las vuelva a utilizar. Al usar el parámetro `idle_in_transaction_session_timeout` en PostgreSQL versiones 9.6 y superiores, puede provocar transacciones inactivas en el tiempo de espera y que se devuelva un error. No finalice las transacciones inactivas cuando utilice AWS DMS.

### Habilitar CDC con una instancia de base AWS de datos PostgreSQL administrada con AWS DMS
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC"></a>

AWS DMS admite CDC en bases de datos PostgreSQL de Amazon RDS cuando la instancia de base de datos está configurada para usar la replicación lógica. En la siguiente tabla se resume la compatibilidad de la replicación lógica de cada versión de AWS PostgreSQL administrada. 


|  Versión de PostgreSQL  |  AWS DMS soporte de carga completa   |  AWS DMS Soporte de los CDC  | 
| --- | --- | --- | 
|  Aurora PostgreSQL versión 2.1 con compatibilidad de PostgreSQL 10.5 (o inferior)  |  Sí  |  No  | 
|  Aurora PostgreSQL versión 2.2 con compatibilidad de PostgreSQL 10.6 (o superiores)   |  Sí  |  Sí  | 
|  RDS para PostgreSQL compatible con PostgreSQL 10.21 (o superiores)  |  Sí  |  Sí  | 

**Para habilitar la replicación lógica en una instancia de base de datos de RDS para PostgreSQL**

1. Utilice la cuenta de usuario AWS maestra de la instancia de base de datos de PostgreSQL como cuenta de usuario para el punto final de origen de PostgreSQL. La cuenta de usuario principal dispone de los roles necesarios que le permiten configurar la CDC. 

   Si utiliza una cuenta que no sea la cuenta de usuario principal, asegúrese de crear varios objetos desde la cuenta principal para la cuenta que utilice. Para obtener más información, consulte [Migración de una base de datos de Amazon RDS para PostgreSQL sin usar la cuenta de usuario principal](#CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser).

1. Establezca en 1 el parámetro `rds.logical_replication` en el grupo de parámetros de CLÚSTER de la base de datos. Para que este parámetro estático surta efecto, es necesario reiniciar la instancia de base de datos. Como parte de la aplicación de este parámetro, AWS DMS establece los parámetros `wal_level`, `max_wal_senders`, `max_replication_slots` y `max_connections`. Estos cambios de parámetros pueden aumentar la generación de registros de escritura anticipada (WAL), así que solo debe establecer `rds.logical_replication` cuando utilice ranuras de replicación lógica.

1. El parámetro `wal_sender_timeout` termina la replicación de conexiones que están inactivas durante más tiempo de los milisegundos especificados. El valor predeterminado para una base AWS de datos PostgreSQL gestionada es de 30 000 milisegundos (30 segundos). Si se establece el valor en 0 (cero), se desactiva el mecanismo de tiempo de espera y es una configuración válida para la DMS.

   Si se establece `wal_sender_timeout` en un valor distinto de cero, una tarea de DMS con CDC requiere un mínimo de 10 000 milisegundos (10 segundos) y se produce un error si el valor está entre 0 y 10 000. Mantenga el valor en menos de 5 minutos para evitar retrasos durante una conmutación por error de Multi-AZ de una instancia de replicación de DMS.

1.  Asegúrese de que el valor del parámetro `max_worker_processes` del grupo de parámetros del clúster de base de datos sea igual o superior a los valores totales combinados de `max_logical_replication_workers`, `autovacuum_max_workers` y `max_parallel_workers`. Un número elevado de procesos de trabajo en segundo plano podría afectar a las cargas de trabajo de las aplicaciones en instancias pequeñas. Por lo tanto, monitoree el rendimiento de la base de datos si establece `max_worker_processes` encima del valor predeterminado.

1.  Cuando utilice Aurora PostgreSQL como origen con CDC, establezca `synchronous_commit` en `ON`.

**Cómo utilizar la réplica de lectura del clúster de base de datos multi-AZ de PostgreSQL para la CDC (replicación continua)**

1. Establezca los parámetros `rds.logical_replication` y `sync_replication_slots` del grupo de parámetros CLUSTER de la base de datos en 1. Para que estos parámetros estáticos surtan efecto, es necesario reiniciar la instancia de base de datos.

1. Ejecute el siguiente comando para crear la tabla `awsdms_ddl_audit` en Writer y sustituirla por el `objects_schema` con el nombre del esquema que se va a utilizar:

   ```
   CREATE TABLE objects_schema.awsdms_ddl_audit
   (
     c_key    bigserial primary key,
     c_time   timestamp,    -- Informational
     c_user   varchar(64),  -- Informational: current_user
     c_txn    varchar(16),  -- Informational: current transaction
     c_tag    varchar(24),  -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE'
     c_oid    integer,      -- For future use - TG_OBJECTID
     c_name   varchar(64),  -- For future use - TG_OBJECTNAME
     c_schema varchar(64),  -- For future use - TG_SCHEMANAME. For now - holds current_schema
     c_ddlqry  text         -- The DDL query associated with the current DDL event
   );
   ```

1. Ejecute el siguiente comando para crear la función `awsdms_intercept_ddl` y sustituirla por el `objects_schema` con el nombre del esquema que se va a utilizar:

   ```
   CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl()
     RETURNS event_trigger
   LANGUAGE plpgsql
   SECURITY DEFINER
     AS $$
     declare _qry text;
   BEGIN
     if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then
            SELECT current_query() into _qry;
            insert into objects_schema.awsdms_ddl_audit
            values
            (
            default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry
            );
            delete from objects_schema.awsdms_ddl_audit;
   end if;
   END;
   $$;
   ```

1. Ejecute el siguiente comando para crear el desencadenador de eventos `awsdms_intercept_ddl`:

   ```
   CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
   ```

   Asegúrese de que todos los usuarios y roles que acceden a estos eventos tengan los permisos de DDL necesarios. Por ejemplo:

   ```
   grant all on public.awsdms_ddl_audit to public;
   grant all on public.awsdms_ddl_audit_c_key_seq to public;
   ```

1. Cree una ranura de replicación en Writer:

   ```
   SELECT * FROM pg_create_logical_replication_slot('dms_read_replica_slot', 'test_decoding', false, true);
   ```

1. Asegúrese de que la ranura de replicación esté disponible en Reader:

   ```
   select * from pg_catalog.pg_replication_slots where slot_name = 'dms_read_replica_slot';
   
   slot_name            |plugin       |slot_type|datoid|database|temporary|active|active_pid|xmin|catalog_xmin|restart_lsn|confirmed_flush_lsn|wal_status|safe_wal_size|two_phase|inactive_since               |conflicting|invalidation_reason|failover|synced|
   ---------------------+-------------+---------+------+--------+---------+------+----------+----+------------+-----------+-------------------+----------+-------------+---------+-----------------------------+-----------+-------------------+--------+------+
   dms_read_replica_slot|test_decoding|logical  |     5|postgres|false    |false |          |    |3559        |0/180011B8 |0/180011F0         |reserved  |             |true     |2025-02-10 15:45:04.083 +0100|false      |                   |false   |false |
   ```

1. Cree el punto de conexión de origen de DMS para la réplica de lectura y establezca el nombre de la ranura de replicación lógica mediante el atributo de conexión adicional:

   ```
   slotName=dms_read_replica_slot;
   ```

1. Cree e inicie la tarea CDC/FL\$1CDC.
**nota**  
En el caso de las migraciones CDC/FL\$1CDC, DMS considera la hora de inicio de la tarea como la posición de inicio de la CDC. Se ignoran todas las ranuras LSNs de replicación antiguas.

### Migración de una base de datos de Amazon RDS para PostgreSQL sin usar la cuenta de usuario principal
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser"></a>

En algunos casos, es posible que no utilice la cuenta de usuario principal para la instancia de base de datos de Amazon RDS PostgreSQL que está utilizando como origen. En estos casos, se crean varios objetos para capturar los eventos del lenguaje de definición de datos (DDL). Puede crear estos objetos en una cuenta que no sea la cuenta principal y, a continuación, crear un activador en la cuenta de usuario principal.

**nota**  
Si establece la configuración de punto de conexión de `CaptureDdls` en `false` en el punto de conexión de origen, no tendrá que crear la tabla y el desencadenador siguientes en la base de datos de origen.

Utilice el siguiente procedimiento para crear estos objetos.

**Para crear objetos**

1. Elija el esquema donde deben crearse los objetos. El esquema predeterminado es `public`. Asegúrese de que el esquema exista y que la cuenta `OtherThanMaster` pueda obtener acceso a él. 

1. Inicie sesión en la instancia de base de datos de PostgreSQL con una cuenta de usuario distinta de la cuenta maestra, aquí la cuenta de `OtherThanMaster`.

1. Cree la tabla `awsdms_ddl_audit` mediante la ejecución del siguiente comando, sustituyendo `objects_schema` en el código siguiente por el nombre del esquema que se va a utilizar.

   ```
   CREATE TABLE objects_schema.awsdms_ddl_audit
   (
     c_key    bigserial primary key,
     c_time   timestamp,    -- Informational
     c_user   varchar(64),  -- Informational: current_user
     c_txn    varchar(16),  -- Informational: current transaction
     c_tag    varchar(24),  -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE'
     c_oid    integer,      -- For future use - TG_OBJECTID
     c_name   varchar(64),  -- For future use - TG_OBJECTNAME
     c_schema varchar(64),  -- For future use - TG_SCHEMANAME. For now - holds current_schema
     c_ddlqry  text         -- The DDL query associated with the current DDL event
   );
   ```

1. Cree la función `awsdms_intercept_ddl`. Para ello, ejecute el siguiente comando y sustituya `objects_schema` en el código siguiente por el nombre del esquema que se va a utilizar.

   ```
   CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl()
     RETURNS event_trigger
   LANGUAGE plpgsql
   SECURITY DEFINER
     AS $$
     declare _qry text;
   BEGIN
     if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then
            SELECT current_query() into _qry;
            insert into objects_schema.awsdms_ddl_audit
            values
            (
            default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry
            );
            delete from objects_schema.awsdms_ddl_audit;
   end if;
   END;
   $$;
   ```

1. Cierre sesión en la cuenta `OtherThanMaster` e inicie sesión con una cuenta que tenga el rol `rds_superuser` asignado.

1. Cree el activador de eventos `awsdms_intercept_ddl`; para ello, ejecute el siguiente comando.

   ```
   CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end 
   EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
   ```

1. Asegúrese de que todos los usuarios y roles que acceden a estos eventos tengan los permisos de DDL necesarios. Por ejemplo:

   ```
   grant all on public.awsdms_ddl_audit to public;
   grant all on public.awsdms_ddl_audit_c_key_seq to public;
   ```

Cuando haya completado el procedimiento anterior, puede crear el punto de enlace de origen de AWS DMS utilizando la cuenta `OtherThanMaster`.

**nota**  
Estos eventos se desencadenan mediante instrucciones `CREATE TABLE`, `ALTER TABLE` y `DROP TABLE`.

## Habilitación de la captura de datos de cambios (CDC) mediante replicación lógica
<a name="CHAP_Source.PostgreSQL.Security"></a>

Puede utilizar la característica de replicación lógica nativa de PostgreSQL para habilitar la captura de datos de cambios (CDC) durante la migración de bases de datos para orígenes de PostgreSQL. Puede utilizar esta característica con una instancia de base de datos SQL de PostgreSQL autoadministrada y también con una instancia de base de datos SQL de Amazon RDS para PostgreSQL. Este enfoque reduce el tiempo de inactividad y le ayuda a asegurar que la base de datos de destino esté sincronizada con la base de datos de PostgreSQL de origen.

AWS DMS admite tablas CDC para PostgreSQL con claves principales. Si una tabla no tiene una clave principal, los registros de escritura anticipada (WAL) no incluyen una imagen anterior de la fila de la base de datos. En este caso, DMS no puede actualizar la tabla. En este caso, puede utilizar opciones de configuración adicionales y utilizar la identidad de réplica de la tabla como solución alternativa. Sin embargo, este enfoque puede generar registros adicionales. Le recomendamos que utilice la identidad de réplica de la tabla como solución alternativa solo después de realizar pruebas exhaustivas. Para obtener más información, consulte [Ajustes de configuración adicionales al utilizar una base de datos de PostgreSQL como origen de DMS](#CHAP_Source.PostgreSQL.Advanced).

**nota**  
REPLICA IDENTITY FULL es compatible con un complemento de decodificación lógica, pero no con un complemento pglogical. Para obtener más información, consulte la [documentación de pglogical](https://github.com/2ndQuadrant/pglogical#primary-key-or-replica-identity-required).

Para tareas de carga completa y solo para CDC y CDC, AWS DMS utiliza ranuras de replicación lógica para conservar los registros de WAL para la replicación hasta que se decodifiquen. Cuando se reinicia (no se reanuda) durante una tarea de carga completa y CDC o una tarea de CDC, se vuelve a crear la ranura de replicación.

**nota**  
Para la decodificación lógica, DMS utiliza el complemento test\$1decocoding o pglogical. Si el complemento pglogical está disponible en una base de datos de PostgreSQL de origen, DMS crea una ranura de replicación con pglogical, de lo contrario se utiliza un complemento test\$1decoding. Para obtener más información acerca del complemento test\$1decoding, consulte la [documentación de PostgreSQL](https://www.postgresql.org/docs/9.4/test-decoding.html).  
Si el parámetro de la base de datos `max_slot_wal_keep_size` está establecido en un valor que no es el predeterminado y el tamaño `restart_lsn` de la ranura de replicación es inferior al LSN actual, la tarea de DMS no se realizará correctamente debido a la eliminación de los archivos WAL necesarios.

### Configuración del complemento pglogical
<a name="CHAP_Source.PostgreSQL.Security.Pglogical"></a>

Implementado como una extensión de PostgreSQL, el complemento pglogical es un sistema y modelo de replicación lógica para la replicación selectiva de datos. La siguiente tabla identifica las versiones de base de datos PostgreSQL de origen que admiten el complemento pglogical.


|  Origen de PostgreSQL   |  Admite pglogical  | 
| --- | --- | 
|  PostgreSQL 9.4 o superiores autoadministrado  |  Sí  | 
|  Amazon RDS PostgreSQL 9.5 o versiones anteriores  |  No  | 
|  Amazon RDS PostgreSQL 9.6 o versiones superiores  |  Sí  | 
|  Aurora PostgreSQL 1.x hasta 2.5.x  |  No  | 
|  Aurora PostgreSQL 2.6.x o versiones superiores  |  Sí  | 
|  Aurora PostgreSQL 3.3.x o versiones superiores  |  Sí  | 

Antes de configurar pglogical para su uso con AWS DMS, active primero la replicación lógica para la captura de datos de cambios (CDC) en la base de datos de origen de PostgreSQL. 
+ Para obtener información sobre cómo habilitar la replicación lógica para CDC en bases de datos de origen PostgreSQL *autoadministradas*, consulte [Permitir a los CDC utilizar una base de datos PostgreSQL autogestionada como fuente AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites.CDC)
+ Para obtener información sobre cómo habilitar la replicación lógica para CDC en bases de datos de origen PostgreSQL *administradas por AWS*, consulte [Habilitar CDC con una instancia de base AWS de datos PostgreSQL administrada con AWS DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC).

Una vez habilitada la replicación lógica en la base de datos de origen PostgreSQL, siga los siguientes pasos para configurar pglogical para su uso con DMS.

**Para usar el complemento pglogical para la replicación lógica en una base de datos fuente de PostgreSQL con AWS DMS**

1. Cree una extensión pglogical en la base de datos PostgreSQL de origen:

   1. Establezca el parámetro correcto:
      + Para las bases de datos PostgreSQL autoadministradas, establezca el parámetro `shared_preload_libraries= 'pglogical'` de la base de datos.
      + Para las bases de datos PostgreSQL en Amazon RDS y Amazon Aurora PostgreSQL-Compatible Edition, establezca el parámetro `shared_preload_libraries` en `pglogical` en el mismo grupo de parámetros de RDS.

   1. Reinicie la base de datos de origen de PostgreSQL.

   1. En la base de datos PostgreSQL, ejecute el comando, `create extension pglogical;`

1. Ejecute el siguiente comando para comprobar que pglogical se ha instalado correctamente:

   `select * FROM pg_catalog.pg_extension`

Ahora puede crear una AWS DMS tarea que realice la captura de datos de cambios para el punto final de la base de datos de origen de PostgreSQL.

**nota**  
Si no habilita pglogical en la base de datos de origen de PostgreSQL, AWS DMS utiliza el complemento `test_decoding` de forma predeterminada. Cuando pglogical está activado para la decodificación lógica, AWS DMS utiliza pglogical de forma predeterminada. Pero puede configurar el atributo de conexión adicional `PluginName` para usar el complemento `test_decoding` en su lugar.

## Uso de puntos de inicio de CDC nativo para configurar una carga de CDC de un origen de PostgreSQL
<a name="CHAP_Source.PostgreSQL.v10"></a>

Para habilitar puntos de inicio de CDC nativos con PostgreSQL como origen, establezca el atributo de conexión adicional `slotName` en el nombre de una ranura de replicación lógica existente al crear el punto de conexión. Esta ranura de replicación lógica guarda los cambios continuos desde el momento en que se creó el punto de enlace, por lo que permite replicar desde un punto anterior. 

PostgreSQL escribe los cambios de la base de datos en archivos WAL que solamente se descartan cuando AWS DMS lee correctamente los cambios de la ranura de replicación lógica. El uso de ranuras de replicación lógica puede evitar que los cambios registrados se eliminen antes de que el motor de replicación los consuma. 

Sin embargo, en función de la tasa de cambio y consumo, los cambios que contiene una ranura de replicación lógica pueden provocar un uso elevado del disco. Se recomienda establecer alarmas de uso de espacio en la instancia de PostgreSQL de origen cuando se utilizan ranuras de replicación lógica. Para obtener más información acerca de cómo establecer el atributo `slotName` de conexión adicional, consulte [Configuración de punto final y atributos de conexión adicionales (ECAs) cuando se utiliza PostgreSQL como fuente de DMS](#CHAP_Source.PostgreSQL.ConnectionAttrib).

En el siguiente procedimiento, se explica este enfoque paso a paso con más detalle.

**Para utilizar un punto de inicio de CDC nativo con el fin de configurar una carga de CDC de un punto de enlace de origen de PostgreSQL**

1. Identifique una ranura de replicación lógica que se haya empleado en una tarea de replicación anterior (una tarea principal) para utilizarla como punto de inicio. A continuación, consulte la vista `pg_replication_slots` de la base de datos de origen para asegurarse de que esta ranura no tenga ninguna conexión activa. Si tiene, resuélvalas y ciérrelas antes de continuar.

   En los siguientes pasos, vamos a suponer que la ranura de replicación lógica es `abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef`. 

1. Cree un nuevo punto de enlace de origen que incluya la siguiente configuración adicional de atributos de conexión:

   ```
   slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;
   ```

1. Cree una nueva tarea exclusiva para los CDC mediante la consola o la API. AWS CLI AWS DMS Por ejemplo, puede usar la CLI para ejecutar el siguiente comando `create-replication-task`. 

   ```
   aws dms create-replication-task --replication-task-identifier postgresql-slot-name-test 
   --source-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ABCD1EFGHIJK2LMNOPQRST3UV4 
   --target-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ZYX9WVUTSRQONM8LKJIHGF7ED6 
   --replication-instance-arn arn:aws:dms:us-west-2:012345678901:rep:AAAAAAAAAAA5BB4CCC3DDDD2EE 
   --migration-type cdc --table-mappings "file://mappings.json" --cdc-start-position "4AF/B00000D0" 
   --replication-task-settings "file://task-pg.json"
   ```

   En el comando anterior, se establecen las siguientes opciones:
   + La opción `source-endpoint-arn` se establece en el nuevo valor que creó en el paso 2.
   + La opción `replication-instance-arn` se establece en el mismo valor que en la tarea principal del paso 1.
   + Las opciones `table-mappings` y `replication-task-settings` se establecen en los mismos valores que en la tarea principal del paso 1.
   + Se establece la opción `cdc-start-position` para iniciar un valor de posición. Para encontrar esta posición inicial, consulte la vista `pg_replication_slots` de la base de datos de origen o vea los detalles de la consola de la tarea principal en el paso 1. Para obtener más información, consulte [Determinar un punto de inicio de CDC nativo](CHAP_Task.CDC.md#CHAP_Task.CDC.StartPoint.Native).

   Para activar el modo de inicio personalizado de los CDC al crear una nueva tarea exclusiva para los CDC mediante la AWS DMS consola, haga lo siguiente:
   + En la sección **Configuración de tareas**, para el **modo de inicio de CDC para las transacciones de origen**, elija **Habilitar el modo de inicio de CDC personalizado**.
   + Para el **punto de inicio personalizado de CDC para las transacciones de origen**, elija **Especificar un número de secuencia de registro**. Especifique el número de cambio del sistema o elija **Especificar un punto de control de recuperación** y proporcione un punto de control de recuperación.

   Cuando se ejecuta esta tarea de CDC, se AWS DMS genera un error si la ranura de replicación lógica especificada no existe. También se genera un error si la tarea no se crea con una configuración válida para `cdc-start-position`.

Si utiliza puntos de partida nativos de CDC con el complemento pglogical y desea utilizar una nueva ranura de replicación, complete los pasos de configuración que se indican a continuación antes de crear una tarea de CDC. 

**Uso de una nueva ranura de replicación que no se haya creado anteriormente como parte de otra tarea de DMS**

1. Cree una ranura de replicación, como se muestra a continuación:

   ```
   SELECT * FROM pg_create_logical_replication_slot('replication_slot_name', 'pglogical');
   ```

1. Una vez que la base de datos crea la ranura de replicación, obtenga y anote los valores **restart\$1lsn** y **confirmed\$1flush\$1lsn** de la ranura:

   ```
   select * from pg_replication_slots where slot_name like 'replication_slot_name';
   ```

   Tenga en cuenta que la posición de inicio nativa de CDC para una tarea de CDC creada después de la ranura de replicación no puede ser anterior al valor **confirmed\$1flush\$1lsn**.

   Para obtener información sobre los valores **restart\$1lsn** y **confirmed\$1flush\$1lsn**, consulte [pg\$1replication\$1slots](https://www.postgresql.org/docs/14/view-pg-replication-slots.html) 

1. Cree un nodo pglogical.

   ```
   SELECT pglogical.create_node(node_name := 'node_name', dsn := 'your_dsn_name');
   ```

1. Cree dos conjuntos de replicación mediante la función `pglogical.create_replication_set`. El primer conjunto de replicación realiza un seguimiento de las actualizaciones y eliminaciones de las tablas que tienen claves principales. El segundo conjunto de replicación rastrea solo las inserciones y tiene el mismo nombre que el primer conjunto de replicación, con el prefijo “i” agregado.

   ```
   SELECT pglogical.create_replication_set('replication_slot_name', false, true, true, false);
   SELECT pglogical.create_replication_set('ireplication_slot_name', true, false, false, true);
   ```

1. Agregue una tabla al conjunto de replicación.

   ```
   SELECT pglogical.replication_set_add_table('replication_slot_name', 'schemaname.tablename', true);
   SELECT pglogical.replication_set_add_table('ireplication_slot_name', 'schemaname.tablename', true);
   ```

1. Establezca el atributo de conexión adicional (ECA) que se muestra a continuación al crear el punto de conexión de origen.

   ```
   PluginName=PGLOGICAL;slotName=slot_name;
   ```

Ahora puede crear una tarea exclusiva de CDC con un punto de partida nativo de PostgreSQL mediante la nueva ranura de replicación. Para obtener más información sobre el complemento de pglogical, consulte la [documentación de pglogical 3.7](https://www.enterprisedb.com/docs/pgd/3.7/pglogical/)

## Migración de PostgreSQL a PostgreSQL mediante AWS DMS
<a name="CHAP_Source.PostgreSQL.Homogeneous"></a>

Cuando se migra de un motor de base de datos distinto de PostgreSQL a una base de datos PostgreSQL AWS DMS , casi siempre es la mejor herramienta de migración que se puede utilizar. Pero cuando migre de una base de datos de PostgreSQL a una base de datos de PostgreSQL, las herramientas de PostgreSQL pueden ser más eficaces.

### Uso de herramientas nativas de PostgreSQL para migrar datos
<a name="CHAP_Source.PostgreSQL.Homogeneous.Native"></a>

Es recomendable usar las herramientas de migración de bases de datos de PostgreSQL como `pg_dump` si se dan las condiciones siguientes: 
+ Se trata de una migración homogénea, en la que se migra desde una base de datos de PostgreSQL de origen a una base de datos de PostgreSQL de destino. 
+ Se va a migrar una base de datos completa.
+ Las herramientas nativas le permiten migrar sus datos con un tiempo de inactividad mínimo. 

La utilidad pg\$1dump usa el comando COPY para crear un esquema y un volcado de datos de una base de datos de PostgreSQL. El script de volcado generado por pg\$1dump carga los datos en una base de datos con el mismo nombre y vuelve a crear las tablas, los índices y las claves externas. Para restaurar los datos en una base de datos con un nombre diferente, use el comando `pg_restore` y el parámetro `-d`.

Si va a migrar datos de una base de datos de origen de PostgreSQL que se ejecuta en EC2 a un destino de Amazon RDS para PostgreSQL, puede utilizar el complemento pglogical.

Para obtener más información sobre la importación de una base de datos de PostgreSQL en Amazon RDS para PostgreSQL o Amazon Aurora PostgreSQL-Compatible Edition, consulte [https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html).

### Uso de DMS para migrar datos de PostgreSQL a PostgreSQL
<a name="CHAP_Source.PostgreSQL.Homogeneous.DMS"></a>

 AWS DMS puede migrar datos, por ejemplo, de una base de datos PostgreSQL de origen local a una instancia de Amazon RDS for PostgreSQL o Aurora PostgreSQL de destino. Los tipos de datos de PostgreSQL básicos se migran normalmente sin problemas.

**nota**  
Al replicar tablas particionadas de un origen de PostgreSQL a un destino de PostgreSQL, no es necesario que mencione la tabla principal como parte de los criterios de selección en la tarea de DMS. Mencionar la tabla principal provoca que los datos se dupliquen en las tablas secundarias del destino, lo que podría provocar una infracción de PK. Al seleccionar solo las tablas secundarias en los criterios de selección de la asignación de tablas, la tabla principal se rellena automáticamente.

Es posible que los tipos de datos que se admiten en la base de datos de origen pero que no se admiten en la de destino no se migren correctamente. AWS DMS transmite algunos tipos de datos como cadenas si se desconoce el tipo de datos. Algunos tipos de datos, como XML y JSON, se pueden migrar correctamente como archivos pequeños, pero se puede producir un error si los documentos son grandes. 

Cuando realice la migración de un tipo de datos, tenga en cuenta lo siguiente:
+ En algunos casos, el tipo de datos NUMERIC(p,s) de PostgreSQL no especifica ninguna precisión ni escala. Para las versiones 3.4.2 y anteriores de DMS, DMS usa una precisión de 28 y una escala de 6 de forma predeterminada, NUMERIC(28,6). Por ejemplo, el valor 0.611111104488373 del origen se convierte a 0.611111 en el destino de PostgreSQL.
+ Una tabla con un tipo de datos de MATRIZ debe contar con una clave principal. Una tabla con un tipo de datos de MATRIZ a la que le falta una clave principal se suspende durante la carga completa.

En la siguiente tabla se muestran los tipos de datos de PostgreSQL de origen y se indica si pueden migrarse correctamente:


| Tipo de datos: | Se migra correctamente | Se migra parcialmente | no migra | Comentarios | 
| --- | --- | --- | --- | --- | 
| INTEGER | X |  |  |  | 
| SMALLINT | X |  |  |  | 
| BIGINT | X |  |  |  | 
| NUMERIC/DECIMAL(p,s) |  | X |  | Donde 0<p<39 y 0<s | 
| NUMERIC/DECIMAL |  | X |  | Donde p>38 o p=s=0 | 
| REAL | X |  |  |  | 
| DOUBLE | X |  |  |  | 
| SMALLSERIAL | X |  |  |  | 
| SERIAL | X |  |  |  | 
| BIGSERIAL | X |  |  |  | 
| MONEY | X |  |  |  | 
| CHAR |  | X |  | Sin precisión especificada | 
| CHAR(n) | X |  |  |  | 
| VARCHAR |  | X |  | Sin precisión especificada | 
| VARCHAR(n) | X |  |  |  | 
| TEXT | X |  |  |  | 
| BYTEA | X |  |  |  | 
| TIMESTAMP | X |  |  | Los valores infinitos positivos y negativos se truncan a “9999-12-31 23:59:59” y “4713-01-01 00:00:00 a. C.”, respectivamente. | 
| MARCA DE TIEMPO CON ZONA HORARIA |  | X |  |  | 
| DATE | X |  |  |  | 
| TIME | X |  |  |  | 
| HORA CON ZONA HORARIA | X |  |  |  | 
| INTERVAL |  | X |  |  | 
| BOOLEANO | X |  |  |  | 
| ENUM |  |  | X |  | 
| CIDR | X |  |  |  | 
| INET |  |  | X |  | 
| MACADDR |  |  | X |  | 
| TSVECTOR |  |  | X |  | 
| TSQUERY |  |  | X |  | 
| XML |  | X |  |  | 
| POINT | X |  |  | Tipo de datos espaciales PostGIS | 
| LINE |  |  | X |  | 
| LSEG |  |  | X |  | 
| BOX |  |  | X |  | 
| PATH |  |  | X |  | 
| POLYGON | X |  |  | Tipo de datos espaciales PostGIS | 
| CIRCLE |  |  | X |  | 
| JSON |  | X |  |  | 
| ARRAY | X |  |  | Requiere clave principal | 
| COMPOSITE |  |  | X |  | 
| RANGE |  |  | X |  | 
| LINESTRING | X |  |  | Tipo de datos espaciales PostGIS | 
| MULTIPOINT | X |  |  | Tipo de datos espaciales PostGIS | 
| MULTILINESTRING | X |  |  | Tipo de datos espaciales PostGIS | 
| MULTIPOLYGON | X |  |  | Tipo de datos espaciales PostGIS | 
| GEOMETRYCOLLECTION | X |  |  | Tipo de datos espaciales PostGIS | 

### Migración de tipos de datos espaciales PostGIS
<a name="CHAP_Source.PostgreSQL.DataTypes.Spatial"></a>

Los *datos espaciales* identifican la información de geometría de un objeto o ubicación en el espacio. Las bases de datos relacionales de objetos de PostgreSQL admiten los tipos de datos espaciales PostGIS. 

Antes de migrar objetos de datos espaciales de PostgreSQL, asegúrese de que el complemento PostGIS esté habilitado en el nivel global. De este modo, se garantiza que se AWS DMS crean las columnas de datos espaciales de origen exactas para la instancia de base de datos de destino de PostgreSQL.

Para las migraciones homogéneas de PostgreSQL a PostgreSQL AWS DMS , admite la migración de tipos y subtipos de objetos de datos geométricos y geográficos (coordenadas geodésicas) de PostGIS, como los siguientes:
+  POINT 
+  LINESTRING 
+  POLYGON 
+  MULTIPOINT 
+  MULTILINESTRING 
+  MULTIPOLYGON 
+  GEOMETRYCOLLECTION 

## Migración de Babelfish a Amazon Aurora PostgreSQL mediante AWS DMS
<a name="CHAP_Source.PostgreSQL.Babelfish"></a>

Puede migrar las tablas fuente de PostgreSQL de Babelfish para Aurora a cualquier punto final de destino compatible utilizando. AWS DMS

Al crear el punto de enlace de AWS DMS origen mediante la consola de DMS, la API o los comandos CLI, establece el origen en **Amazon Aurora PostgreSQL** y el nombre de la base de datos en. **babelfish\$1db** En la sección **Endpoint Settings**, asegúrese de que **DatabaseMode**esté establecido en **Babelfish** y en el nombre de la base de datos **BabelfishDatabaseName**T-SQL Babelfish de origen. En lugar de usar el puerto TCP de Babelfish **1433**, utilice el puerto TCP de Aurora PostgreSQL **5432**.

Debe crear las tablas antes de migrar los datos para asegurarse de que DMS utiliza los tipos de datos y los metadatos de las tablas correctos. Si no crea las tablas en el destino antes de ejecutar la migración, es posible que DNS cree las tablas con permisos y tipos de datos incorrectos.

### Agregar reglas de transformación a la tarea de migración
<a name="CHAP_Source.PostgreSQL.Babelfish.Transform"></a>

Al crear una tarea de migración para un origen de Babelfish, debe incluir reglas de transformación que garanticen que DMS utilice las tablas de destino creadas previamente.

Si configuró el modo de migración de bases de datos múltiples al definir el clúster de Babelfish para PostgreSQL, agregue una regla de transformación que cambie el nombre del esquema al del esquema de T-SQL. Por ejemplo, si el nombre del esquema de T-SQL es `dbo` y el nombre del esquema de Babelfish para PostgreSQL es `mydb_dbo`, cambie el nombre del esquema a `dbo` mediante una regla de transformación. Para encontrar el nombre del esquema de PostgreSQL, consulte [Arquitectura de Babelfish](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-architecture.html) en la *Guía del usuario de Amazon Aurora*. 

Si utiliza el modo de base de datos única, no necesita una regla de transformación para cambiar el nombre de los esquemas de base de datos. Los nombres de los esquemas de PostgreSQL tienen one-to-one un mapeo con los nombres de los esquemas de la base de datos de T-SQL.

El siguiente ejemplo de regla de transformación muestra cómo volver a cambiar el nombre del esquema de `mydb_dbo` a `dbo`:

```
{
    "rules": [
        {
            "rule-type": "transformation",
            "rule-id": "566251737",
            "rule-name": "566251737",
            "rule-target": "schema",
            "object-locator": {
                "schema-name": "mydb_dbo"
            },
            "rule-action": "rename",
            "value": "dbo",
            "old-value": null
        },
        {
            "rule-type": "selection",
            "rule-id": "566111704",
            "rule-name": "566111704",
            "object-locator": {
                "schema-name": "mydb_dbo",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        }
    ]
}
```

### Restricciones en el uso de un punto de conexión de origen de PostgreSQL con tablas de Babelfish
<a name="CHAP_Source.PostgreSQL.Babelfish.Limitations"></a>

Las siguientes restricciones se aplican al usar un punto de conexión de origen de PostgreSQL con tablas de Babelfish:
+ DMS solo admite la migración desde las versiones 16.2/15.6 y posteriores de Babelfish y desde la versión 3.5.3 y posteriores de DMS.
+ DMS no replica los cambios de la definición de tabla de Babelfish en el punto de conexión de destino. Una solución para esta limitación consiste en aplicar primero los cambios de la definición de tabla en el destino y, a continuación, cambiar la definición de la tabla en el origen de Babelfish.
+ Al crear tablas de Babelfish con el tipo de datos BYTEA, DMS las convierte al tipo de datos `varbinary(max)` al migrar a SQL Server como destino.
+ DMS no admite el modo de LOB completo para los tipos de datos binarios. En su lugar, utilice el modo de LOB limitado para los tipos de datos binarios.
+ DMS no admite la validación de datos de Babelfish como origen.
+ Para la configuración de la tarea **Modo de preparación de la tabla de destino** utilice solo los modos **No hacer nada** o **Truncar**. No utilice el modo **Borrar tablas en el destino**. Al utilizar **Descartar las tablas en el destino**, DMS puede crear las tablas con tipos de datos incorrectos.
+ Cuando utilice la replicación continua (CDC o Carga completa y CDC), establezca el atributo de conexión adicional `PluginName` en `TEST_DECODING`.
+ DMS no admite la replicación (CDC o Carga completa y CDC) de tablas particionadas para Babelfish como origen.

## Eliminar AWS DMS artefactos de una base de datos fuente de PostgreSQL
<a name="CHAP_Source.PostgreSQL.CleanUp"></a>

Para capturar eventos de DDL, AWS DMS crea varios artefactos en la base de datos de PostgreSQL cuando se inicia una tarea de migración. Cuando se complete la tarea, es posible que quiera eliminar estos artefactos.

Para eliminar los artefactos, emita las instrucciones siguientes (en el orden en el que aparecen), donde `{AmazonRDSMigration}` es el esquema en el que se crearon los artefactos. La operación de ingresar un esquema se debe realizar con su sumo cuidado. No ingrese nunca un esquema operativo, especialmente si es público.

```
drop event trigger awsdms_intercept_ddl;
```

El desencadenador de eventos no pertenece a un esquema específico.

```
drop function {AmazonRDSMigration}.awsdms_intercept_ddl()
drop table {AmazonRDSMigration}.awsdms_ddl_audit
drop schema {AmazonRDSMigration}
```

## Ajustes de configuración adicionales al utilizar una base de datos de PostgreSQL como origen de DMS
<a name="CHAP_Source.PostgreSQL.Advanced"></a>

Puede añadir parámetros de configuración adicionales cuando migre datos desde una base de datos de PostgreSQL de dos maneras:
+ Puede añadir valores al atributo extra connection para capturar eventos DDL y especificar el esquema en el que se crean los artefactos de la base de datos DDL. Para obtener más información, consulte [Configuración de punto final y atributos de conexión adicionales (ECAs) cuando se utiliza PostgreSQL como fuente de DMS](#CHAP_Source.PostgreSQL.ConnectionAttrib).
+ Puede anular parámetros de cadenas de conexión. Elija esta opción para hacer cualquiera de las siguientes acciones:
  + Especifique los parámetros internos. AWS DMS Estos parámetros se necesitan en contadas ocasiones, no están a la vista en la interfaz de usuario.
  + Especifique los valores de transferencia (passthru) para el cliente de base de datos específico. AWS DMS incluye los parámetros de transferencia en la cadena de conexión transferida al cliente de base de datos.
+ Al utilizar el parámetro de nivel de tabla en las versiones 9.4 y posteriores de `REPLICA IDENTITY` PostgreSQL, puede controlar la información que se escribe en los registros de escritura anticipada (). WALs En concreto, lo hace para identificar las filas WALs que se actualizan o eliminan. `REPLICA IDENTITY FULL`registra los valores antiguos de todas las columnas de la fila. Úselo `REPLICA IDENTITY FULL` con cuidado para cada tabla, ya que `FULL` genera un número adicional WALs que puede no ser necesario. Para obtener más información, consulte [ALTER TABLE-REPLICA IDENTITY](https://www.postgresql.org/docs/devel/sql-altertable.html) 

## Réplica de lectura como origen para PostgreSQL
<a name="CHAP_Source.PostgreSQL.ReadReplica"></a>

Utilice réplicas de lectura de PostgreSQL como fuentes de CDC para reducir la carga de la base de datos AWS DMS principal. Esta función está disponible en PostgreSQL 16.x y AWS DMS requiere la versión 3.6.1 o posterior. El uso de réplicas de lectura para el procesamiento de la CDC reduce el impacto operativo en la base de datos principal.

**nota**  
La versión 16.x de Amazon RDS para PostgreSQL presenta limitaciones para la replicación lógica de réplicas de lectura en las configuraciones de tres zonas de disponibilidad (TAZ). Para obtener compatibilidad total con la replicación lógica de réplicas de lectura en las implementaciones de TAZ, debe usar PostgreSQL 17.x o posterior.

### Requisitos previos
<a name="CHAP_Source.PostgreSQL.ReadReplica.prereq"></a>

Antes de utilizar una réplica de lectura como fuente de CDC AWS DMS, debe habilitar la replicación lógica tanto en la instancia de base de datos principal como en su réplica de lectura para crear una decodificación lógica en una réplica de lectura. Lleve a cabo las siguientes acciones:
+ Active la replicación lógica tanto en la instancia de base de datos principal como en su réplica de lectura, junto con cualquier otro parámetro de base de datos necesario. Para obtener más información, consulte [Trabajar con bases de datos PostgreSQL AWS administradas](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.RDSPostgreSQL) como fuente de DMS.
+ Para las tareas exclusivas de la CDC, cree una ranura de replicación en la instancia principal (de escritura). Para obtener más información, consulte [Uso de puntos de inicio de CDC nativa para configurar una carga de CDC de un origen de PostgreSQL](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.v10). Esta acción es necesaria, ya que las réplicas de lectura no admiten la creación de ranuras de replicación.
+ Para la versión 16 de PostgreSQL, la ranura debe crearse manualmente en la réplica de lectura.
+ Para la versión 17 y posteriores de PostgreSQL, la ranura de replicación debe crearse en la principal y se sincroniza automáticamente con la réplica de lectura.
+ Al utilizar tareas a plena carga o solo con CDC, AWS DMS puede gestionar automáticamente los intervalos de replicación lógica en las instancias principales, pero no en las réplicas de lectura. Para las réplicas de lectura de PostgreSQL versión 16, debe eliminar y volver a crear manualmente las ranuras de replicación antes de reiniciar una tarea (no reanudarla). Omitir este paso puede provocar errores en las tareas o posiciones de inicio de la CDC incorrectas. A partir de la versión 17 de PostgreSQL, la sincronización de ranuras lógicas desde la instancia principal automatiza este proceso.

Tras cumplir los requisitos previos, puede configurar su terminal de origen replicando la AWS DMS fuente `SlotName` de lectura y réplica en la configuración del terminal y configurar su AWS DMS tarea utilizando los puntos de partida nativos de los CDC. Para obtener más información, consulte [Configuración de puntos de conexión y atributos de conexión adicionales (ECAs) cuando se utiliza PostgreSQL como fuente de DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib) [y Uso de puntos de inicio nativos de CDC para configurar una carga de CDC de una fuente de](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.v10) PostgreSQL.

## Uso de la configuración del punto de conexión `MapBooleanAsBoolean` de PostgreSQL
<a name="CHAP_Source.PostgreSQL.ConnectionAttrib.Endpointsetting"></a>

Puede usar la configuración del punto de conexión de PostgreSQL para asignar un booleano como booleano desde el origen de PostgreSQL a un destino de Amazon Redshift. De forma predeterminada, un tipo BOOLEANO se migra como varchar(5). Puede especificar `MapBooleanAsBoolean` para permitir que PostgreSQL migre el tipo booleano como booleano, como se muestra en el siguiente ejemplo.

```
--postgre-sql-settings '{"MapBooleanAsBoolean": true}'
```

Tenga en cuenta que debe establecer esta configuración en los puntos de conexión de origen y destino para que surta efecto.

Como MySQL no tiene ningún tipo BOOLEANO, utilice una regla de transformación en lugar de esta configuración al migrar datos BOOLEANOS a MySQL.

## Configuración de punto final y atributos de conexión adicionales (ECAs) cuando se utiliza PostgreSQL como fuente de DMS
<a name="CHAP_Source.PostgreSQL.ConnectionAttrib"></a>

Puede utilizar la configuración del punto final y los atributos de conexión adicionales (ECAs) para configurar la base de datos fuente de PostgreSQL. Los ajustes de punto final se especifican al crear el punto final de origen mediante la AWS DMS consola o mediante el `create-endpoint` comando de [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--postgre-sql-settings '{"EndpointSetting": "value", ...}'` JSON.

En la siguiente tabla se muestran los ajustes de punto final ECAs que puede utilizar con PostgreSQL como fuente.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.PostgreSQL.html)

## Restricciones en el uso de una base de datos de PostgreSQL como origen de DMS
<a name="CHAP_Source.PostgreSQL.Limitations"></a>

Al utilizar PostgreSQL como origen para AWS DMS se aplican las siguientes restricciones:
+ AWS DMS no funciona con Amazon RDS para PostgreSQL 10.4 ni con Amazon Aurora PostgreSQL 10.4 ni como origen ni como destino.
+ Las tablas de captura deben contar con una clave principal. Si una tabla no tiene una clave principal, AWS DMS ignora las operaciones de eliminación y actualización de registros de esa tabla. Como solución alternativa, consulte [Habilitación de la captura de datos de cambios (CDC) mediante replicación lógica](#CHAP_Source.PostgreSQL.Security). 

  **Nota:** No recomendamos migrar sin un Key/Unique índice principal; de lo contrario, se aplicarán limitaciones adicionales, como la capacidad de aplicación por lotes «NO», la capacidad de LOB total, la validación de datos y la incapacidad de replicar en Redshift Target de manera eficiente.
+ AWS DMS ignora el intento de actualizar un segmento clave principal. En estos casos, el destino identifica la actualización como una que no ha actualizado ninguna fila. Sin embargo, dado que los resultados de actualizar una clave primaria en PostgreSQL son imprevisibles, no se escriben registros en la tabla de excepciones.
+ AWS DMS no admite la opción **Iniciar los cambios del proceso desde la ejecución de la marca de tiempo**.
+ AWS DMS no replica los cambios que resulten de las operaciones de partición o subpartición (`ADD`,`DROP`, o). `TRUNCATE`
+ La replicación de varias tablas con el mismo nombre, donde cada nombre tiene mayúsculas y minúsculas diferentes (por ejemplo, tabla1 y tabla1) puede provocar un comportamiento impredecible. TABLE1 Debido a este problema, AWS DMS no admite este tipo de replicación.
+ En la mayoría de los casos, AWS DMS admite el procesamiento de cambios de las instrucciones DDL CREATE, ALTER y DROP para tablas. AWS DMS no admite este procesamiento de cambios si las tablas se encuentran en un bloque interno del cuerpo de una función o procedimiento o en otras estructuras anidadas.

  Por ejemplo, el siguiente cambio no se capturó.

  ```
  CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void
  LANGUAGE plpgsql
  AS $$
  BEGIN
  create table attu.distributors1(did serial PRIMARY KEY,name
  varchar(40) NOT NULL);
  END;
  $$;
  ```
+ Actualmente, los tipos de datos `boolean` de un origen de PostgreSQL se migran a un destino de SQL Server como tipo de datos `bit` con valores incoherentes. Como solución alternativa, cree previamente la tabla con un tipo de `VARCHAR(1)` datos para la columna (o haga que AWS DMS cree la tabla). A continuación, haga que el procesamiento descendente trate la "F" como falso y la "T" como verdadero.
+ AWS DMS no admite el procesamiento de cambios de las operaciones TRUNCATE.
+ El tipo de datos de LOB OID no se migra al destino.
+ AWS DMS admite el tipo de datos PostGIS solo para migraciones homogéneas.
+ Si el origen es una base de datos de PostgreSQL en las instalaciones o una instancia de Amazon EC2, asegúrese de que el complemento de salida test\$1decoding esté instalado en el punto de conexión de origen. Puede encontrar este complemento en el paquete contrib de PostgreSQL. Para obtener más información acerca del complemento test-decoding consulte la [ documentación de PostgreSQL](https://www.postgresql.org/docs/10/static/test-decoding.html).
+ AWS DMS no admite el procesamiento de cambios para establecer y desconfigurar los valores predeterminados de las columnas (mediante la cláusula ALTER COLUMN SET DEFAULT en las sentencias ALTER TABLE).
+ AWS DMS no admite el procesamiento de cambios para establecer la nulabilidad de las columnas (se utiliza la cláusula ALTER COLUMN [SET\$1DROP] NOT NULL en las sentencias ALTER TABLE).
+ Cuando la replicación lógica está habilitada, el número máximo de cambios guardados en la memoria por transacción es de 4 MB. Después de eso, los cambios se transfieren al disco. Como resultado, `ReplicationSlotDiskUsage` aumenta y `restart_lsn` no avanza hasta que la transacción se complete o detenga y finalice la reversión. Como se trata de una transacción larga, puede tardar mucho tiempo en restaurarse. Por lo tanto, evite las transacciones de larga duración o muchas subtransacciones cuando la replicación lógica esté habilitada. En su lugar, divida la transacción en varias transacciones más pequeñas. 

  En las versiones 13 y posteriores de Aurora PostgreSQL, puede ajustar el parámetro `logical_decoding_work_mem` para controlar cuándo vuelca DMS los datos de cambios en el disco. Para obtener más información, consulte [Archivos de volcado en Aurora PostgreSQL](CHAP_Troubleshooting_Latency_Source_PostgreSQL.md#CHAP_Troubleshooting_Latency_Source_PostgreSQL_Spill).
+ Una tabla con un tipo de datos de MATRIZ debe contar con una clave principal. Una tabla con un tipo de datos de MATRIZ a la que le falta una clave principal se suspende durante la carga completa.
+ AWS DMS [no admite la migración de metadatos de tablas relacionados con la partición o la herencia de tablas.](https://www.postgresql.org/docs/15/ddl-inherit.html) Cuando AWS DMS encuentra una tabla particionada o una tabla que utiliza la herencia, se observa el siguiente comportamiento:
  + AWS DMS identifica e informa de las tablas principales y secundarias que participan en la partición o la herencia en la base de datos de origen.
  + **Creación de tablas en la base de datos de destino**: en la base de datos de destino, AWS DMS crea la tabla como una tabla estándar (no particionada ni heredada), conservando la estructura y las propiedades de las tablas seleccionadas, pero no la lógica de partición o herencia.
  + **Diferenciación de registros en tablas heredadas**: en el caso de las tablas que utilizan la herencia, AWS DMS no distingue los registros que pertenecen a las tablas secundarias al rellenar la tabla principal. Como resultado, no utiliza consultas SQL con sintaxis como: `SELECT * FROM ONLY parent_table_name`.
+ Para replicar tablas con particiones desde un origen de PostgreSQL a un destino de PostgreSQL, primero debe crear manualmente las tablas principal y secundaria en el destino. A continuación, defina una tarea independiente para replicar en estas tablas. En tal caso, establezca la configuración de la tarea en **Truncar antes de cargar**.
+ El tipo de datos `NUMERIC` de PostgreSQL no tiene un tamaño fijo. Cuando se transfieren datos que tienen el tipo de datos `NUMERIC` pero sin precisión ni escala, DMS utiliza `NUMERIC(28,6)` (con una precisión de 28 y una escala de 6) de forma predeterminada. Por ejemplo, el valor 0,611111104488373 del origen se convierte a 0,611111 en el destino de PostgreSQL.
+ AWS DMS admite Aurora PostgreSQL Serverless V1 como fuente únicamente para tareas de carga completa. AWS DMS admite Aurora PostgreSQL Serverless V2 como fuente para tareas de carga completa, carga completa, CDC y únicamente CDC.
+ AWS DMS no admite la replicación de una tabla con un índice único creado con una función de fusión.
+ Si la definición de la clave principal en el origen y el destino no coinciden, los resultados de la replicación pueden ser impredecibles.
+ Cuando se utiliza la característica de carga paralela, no se admite la segmentación de tablas en función de particiones o subparticiones. Para obtener más información acerca de la carga paralela, consulte [Uso de carga paralela para tablas, vistas y recopilaciones seleccionadas](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.ParallelLoad) 
+ AWS DMS no admite restricciones diferidas.
+ AWS DMS La versión 3.4.7 admite PostgreSQL 14.x como fuente con las siguientes limitaciones:
  + AWS DMS no admite el procesamiento de cambios de las confirmaciones en dos fases.
  + AWS DMS no admite la replicación lógica para transmitir transacciones prolongadas en curso.
+ AWS DMS no admite CDC para Amazon RDS Proxy para PostgreSQL como fuente.
+ Si se utilizan [filtros de origen](CHAP_Tasks.CustomizingTasks.Filters.md) que no contienen una columna de clave principal, no se capturarán las operaciones `DELETE`.
+ Si la base de datos de origen también es el destino de otro sistema de replicación de terceros, es posible que los cambios de DDL no se migren durante CDC. Porque esa situación puede impedir que se active el desencadenador del evento `awsdms_intercept_ddl`. Para evitar la situación, modifique ese desencadenador en la base de datos de origen de la siguiente manera:

  ```
  alter event trigger awsdms_intercept_ddl enable always;
  ```
+ AWS DMS no admite la replicación de los cambios realizados en las definiciones de las claves principales de la base de datos de origen. Si la estructura de clave principal se modifica durante una tarea de replicación activa, los cambios posteriores en las tablas afectadas no se replican en la de destino.
+ En la replicación DDL como parte de un script, el número total máximo de comandos DDL por script es de 8192 y el número total máximo de líneas por script es de 8192 líneas.
+ AWS DMS no admite vistas materializadas.
+ Para tareas de carga completa y de CDC que utilizan una réplica de lectura como fuente, AWS DMS no se pueden crear ranuras de replicación en las réplicas de lectura.

## Tipos de datos de origen para PostgreSQL
<a name="CHAP_Source-PostgreSQL-DataTypes"></a>

En la siguiente tabla se muestran los tipos de datos de origen de PostgreSQL que se admiten cuando se AWS DMS utiliza y la asignación AWS DMS predeterminada a los tipos de datos.

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte. [Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  Tipos de datos de PostgreSQL  |  Tipos de datos de DMS  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  NUMERIC (p,s)  |  Si la precisión es de 0 a 38, utilice NUMERIC. Si la precisión es 39 o superior, utilice STRING.  | 
|  DECIMAL(P,S)  |  Si la precisión es de 0 a 38, utilice NUMERIC. Si la precisión es 39 o superior, utilice STRING.  | 
|  REAL  |  REAL4  | 
|  DOBLE  |  REAL8  | 
|  SMALLSERIAL  |  INT2  | 
|  SERIAL  |  INT4  | 
|  BIGSERIAL  |  INT8  | 
|  MONEY  |  NUMERIC(38,4) El tipo de datos MONEY se asigna a FLOAT en SQL Server.  | 
|  CHAR  |  WSTRING (1)  | 
|  CHAR(N)  |  WSTRING (n)  | 
|  VARCHAR(N)  |  WSTRING (n)  | 
|  TEXT  |  NCLOB  | 
|  CITEXT  |  NCLOB  | 
|  BYTEA  |  BLOB  | 
|  TIMESTAMP  |  DATETIME  | 
|  MARCA DE TIEMPO CON ZONA HORARIA  |  DATETIME  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  HORA CON ZONA HORARIA  |  TIME  | 
|  INTERVAL  |  STRING (128): 1 YEAR, 2 MONTHS, 3 DAYS, 4 HOURS, 5 MINUTES, 6 SECONDS  | 
|  BOOLEANO  |  CHAR (5) false o true  | 
|  ENUM  |  STRING (64)  | 
|  CIDR  |  STRING (50)  | 
|  INET  |  STRING (50)  | 
|  MACADDR  |  STRING (18)  | 
|  BIT (n)  |  STRING (n)  | 
|  BIT VARYING (n)  |  STRING (n)  | 
|  UUID  |  STRING  | 
|  TSVECTOR  |  CLOB  | 
|  TSQUERY  |  CLOB  | 
|  XML  |  CLOB  | 
|  POINT  |  STRING (255) "(x,y)"  | 
|  LINE  |  STRING (255) "(x,y,z)"  | 
|  LSEG  |  STRING (255) "((x1,y1),(x2,y2))"  | 
|  BOX  |  STRING (255) "((x1,y1),(x2,y2))"  | 
|  PATH  |  CLOB "((x1,y1),(xn,yn))"  | 
|  POLYGON  |  CLOB "((x1,y1),(xn,yn))"  | 
|  CIRCLE  |  STRING (255) "(x,y),r"  | 
|  JSON  |  NCLOB  | 
|  JSONB  |  NCLOB  | 
|  ARRAY  |  NCLOB  | 
|  COMPOSITE  |  NCLOB  | 
|  HSTORE  |  NCLOB  | 
|  INT4RANGO  |  STRING (255)  | 
|  INT8ALCANCE  |  STRING (255)  | 
|  NUMRANGE  |  STRING (255)  | 
|  STRRANGE  |  STRING (255)  | 

### Trabajo con tipos de datos de origen de LOB para PostgreSQL
<a name="CHAP_Source-PostgreSQL-DataTypes-LOBs"></a>

Los tamaños de columna de PostgreSQL afectan a la conversión de tipos de datos LOB de PostgreSQL a tipos de datos de AWS DMS . Para trabajar con esto, siga los pasos que se indican a continuación para los tipos de AWS DMS datos siguientes:
+ BLOB: establezca **Limitar tamaño de LOB a** en el valor **Tamaño máximo de LOB (KB)** al crear la tarea.
+ CLOB: la replicación trata a cada personaje como un UTF8 personaje. Por lo tanto, encuentre la longitud del texto con más caracteres en la columna, que se muestra aquí como `max_num_chars_text`. Utilice esta longitud para especificar el valor de **Limitar el tamaño de LOB a**. Si los datos incluyen caracteres de 4 bytes, multiplique por 2 para especificar el valor **Limit LOB size to (Limitar tamaño de LOB a)**, que está en bytes. En este caso, **Limit LOB size to (Limitar tamaño de LOB a)** es igual a `max_num_chars_text` multiplicado por 2.
+ NCLOB: la replicación gestiona cada carácter como carácter de dos bytes. Por lo tanto, busque la longitud del texto con más caracteres en la columna (`max_num_chars_text`) y multiplíquela por 2. Hace esto para especificar el valor de **Limitar el tamaño de LOB a**. En este caso, **Limit LOB size to (Limitar tamaño de LOB a)** es igual a `max_num_chars_text` multiplicado por 2. Si los datos incluyen caracteres de 4 bytes, multiplíquelos por 2 de nuevo. En este caso, **Limit LOB size to (Limitar tamaño de LOB a)** es igual a `max_num_chars_text` multiplicado por 4.

# Uso de una base de datos compatible con MySQL como fuente para AWS DMS
<a name="CHAP_Source.MySQL"></a>

Puede migrar datos desde cualquier base de datos compatible con MySQL (MySQL, MariaDB o Amazon Aurora MySQL) mediante Database Migration Service. AWS 

Para obtener información sobre las versiones de MySQL que se AWS DMS admiten como fuente, consulte[Fuentes de AWS DMS](CHAP_Introduction.Sources.md). 

Puede utilizar SSL para cifrar las conexiones entre su punto de enlace compatible con MySQL y la instancia de replicación. Para obtener más información acerca de cómo utilizar SSL con un punto de enlace compatible con MySQL, consulte [Uso de SSL con AWS Database Migration Service](CHAP_Security.SSL.md).

En las secciones siguientes, el término “autoadministrado” se aplica a cualquier base de datos que se instala en las instalaciones o en Amazon EC2. El término “administrado por AWS” se aplica a cualquier base de datos en Amazon RDS, Amazon Aurora o Amazon S3.

Para obtener información adicional sobre cómo trabajar con bases de datos compatibles con MySQL AWS DMS, consulte las siguientes secciones.

**Topics**
+ [Migración de MySQL a MySQL mediante AWS DMS](#CHAP_Source.MySQL.Homogeneous)
+ [Usar cualquier base de datos compatible con MySQL como fuente para AWS DMS](#CHAP_Source.MySQL.Prerequisites)
+ [Uso de una base de datos autogestionada compatible con MySQL como fuente para AWS DMS](#CHAP_Source.MySQL.CustomerManaged)
+ [Uso de una base AWS de datos compatible con MySQL administrada como fuente para AWS DMS](#CHAP_Source.MySQL.AmazonManaged)
+ [Limitaciones del uso de una base de datos MySQL como fuente para AWS DMS](#CHAP_Source.MySQL.Limitations)
+ [Compatibilidad con transacciones XA](#CHAP_Source.MySQL.XA)
+ [Configuración de punto final cuando se utiliza MySQL como fuente para AWS DMS](#CHAP_Source.MySQL.ConnectionAttrib)
+ [Tipos de datos de origen para MySQL](#CHAP_Source.MySQL.DataTypes)

**nota**  
Al configurar las reglas de mapeo AWS Database Migration Service (AWS DMS), es importante evitar el uso de caracteres comodín (%) en los nombres de bases de datos o esquemas. En su lugar, solo debe especificar de forma explícita las bases de datos creadas por los usuarios que deben migrarse. El uso de un carácter comodín incluye todas las bases de datos del proceso de migración, incluidas las bases de datos del sistema que no son necesarias en la instancia de destino. Como el usuario maestro de Amazon RDS para MySQL carece de los permisos necesarios para importar datos a las bases de datos del sistema de destino, se produce un error al intentar migrar estas bases de datos del sistema.

## Migración de MySQL a MySQL mediante AWS DMS
<a name="CHAP_Source.MySQL.Homogeneous"></a>

Para una migración heterogénea, en la que se migra de un motor de base de datos distinto de MySQL a una base de datos MySQL, casi siempre AWS DMS es la mejor herramienta de migración que se puede utilizar. Sin embargo, para una migración homogénea, en la que se migra de una base de datos de MySQL a una base de datos de MySQL, le recomendamos que utilice un proyecto de migración de migraciones de datos homogéneas. Las migraciones de datos homogéneas utilizan herramientas de bases de datos nativas para proporcionar un rendimiento y una precisión de migración de datos mejorados en comparación con AWS DMS.

## Usar cualquier base de datos compatible con MySQL como fuente para AWS DMS
<a name="CHAP_Source.MySQL.Prerequisites"></a>

Antes de empezar a trabajar con una base de datos MySQL como fuente AWS DMS, asegúrese de cumplir los siguientes requisitos previos. Estos requisitos previos se aplican a las fuentes autogestionadas o AWS gestionadas.

Debe tener una cuenta AWS DMS que tenga la función de administrador de replicación. El rol necesita los siguientes privilegios:
+ **REPLICATION CLIENT**: este privilegio es necesario solo para tareas de CDC. En otras palabras, full-load-only las tareas no requieren este privilegio. 
**nota**  
Para MariaDB versión 10.5.2\$1, puede usar BINLOG MONITOR, que reemplaza al CLIENTE DE REPLICACIÓN.
+ **REPLICATION SLAVE**: este privilegio es necesario solo para tareas de CDC. En otras palabras, las full-load-only tareas no requieren este privilegio.
+ **SUPER**: este privilegio es necesario únicamente en versiones de MySQL anteriores a la 5.6.6.

El AWS DMS usuario también debe tener privilegios SELECT para las tablas de origen designadas para la replicación.

Otorgue los siguientes privilegios si utiliza evaluaciones previas a la migración específicas de MySQL:

```
grant select on mysql.user to <dms_user>;
grant select on mysql.db to <dms_user>;
grant select on mysql.tables_priv to <dms_user>;
grant select on mysql.role_edges to <dms_user>  #only for MySQL version 8.0.11 and higher
grant select on performance_schema.replication_connection_status to <dms_user>;  #Required for primary instance validation - MySQL version 5.7 and higher only
```

Si utiliza una fuente de RDS y planea ejecutar evaluaciones previas a la migración específicas de MySQL, añada el siguiente permiso:

```
grant select on mysql.rds_configuration to <dms_user>;  #Required for binary log retention check
```

Si el parámetro `BatchEnable` es `true` es obligatorio conceder:

```
grant create temporary tables on `<schema>`.* to <dms_user>;
```

## Uso de una base de datos autogestionada compatible con MySQL como fuente para AWS DMS
<a name="CHAP_Source.MySQL.CustomerManaged"></a>

Puede utilizar las siguientes bases de datos compatibles con MySQL autoadministradas como orígenes para AWS DMS:
+ MySQL Community Edition
+ MySQL Standard Edition
+ MySQL Enterprise Edition
+ MySQL Cluster Carrier Grade Edition
+ MariaDB Community Edition
+ MariaDB Enterprise Edition
+ Column Store de MariaDB

Para usar CDC, asegúrese de habilitar el registro binario. Para habilitar el registro binario, se deben configurar los siguientes parámetros en el archivo de MySQL `my.ini` (Windows) o `my.cnf` (UNIX).


| Parámetro | Valor | 
| --- | --- | 
| `server_id` | Establezca este parámetro con un valor de 1 o superior. | 
| `log-bin` | Establezca la ruta del archivo de registro binario, como por ejemplo `log-bin=E:\MySql_Logs\BinLog`. No incluya la extensión del archivo. | 
| `binlog_format` | Establezca este parámetro en `ROW`. Recomendamos esta configuración durante la replicación porque, en determinados casos, cuando `binlog_format` se establece en `STATEMENT`, puede provocar incoherencias al replicar los datos en el destino. El motor de base de datos también escribe datos similares e incoherentes en el destino cuando `binlog_format` está establecido en `MIXED`, ya que el motor de base de datos cambia automáticamente al registro basado en `STATEMENT` que puede resultar en datos incoherentes de escritura en la base de datos de destino. | 
| `expire_logs_days` | Establezca este parámetro con un valor de 1 o superior. Para evitar la sobrecarga de espacio en disco, se recomienda que no utilice el valor 0, que es el predeterminado. | 
| `binlog_checksum` | Establezca este parámetro en `NONE` para la versión 3.4.7 o anteriores de DMS. | 
| `binlog_row_image` | Establezca este parámetro en `FULL`. | 
| `log_slave_updates` | Establezca este parámetro en `TRUE` si está utilizando una réplica de lectura de MySQL o MariaDB como origen. | 

Si utiliza una réplica de lectura de MySQL o MariaDB como origen de una tarea de migración de DMS con el modo **Migrar los datos existentes y replicar los cambios continuos**, existe la posibilidad de pérdida de datos. DMS no escribirá una transacción durante la carga completa o la captura de datos de cambio en las siguientes condiciones:
+ La transacción se había confirmado en la instancia principal antes de que se iniciara la tarea de DMS.
+ La transacción no se había confirmado en la réplica hasta que se inició la tarea de DMS, debido al desfase entre la instancia principal y la réplica.

Cuanto mayor sea el intervalo entre la instancia principal y la réplica, mayor será la posibilidad de pérdida de datos.

Si su origen utiliza el motor de base de datos NDB (agrupado), deben configurarse los siguientes parámetros para habilitar la CDC en tablas que utilicen ese motor de almacenamiento. Agregue estos cambios al archivo de MySQL `my.ini` (Windows) o `my.cnf` (UNIX).


| Parámetro | Valor | 
| --- | --- | 
| `ndb_log_bin` | Establezca este parámetro en `ON`. Este valor garantiza que los cambios en las tablas en clúster se anotan en los registros binarios. | 
| `ndb_log_update_as_write` | Establezca este parámetro en `OFF`. Este valor impide escribir instrucciones UPDATE como instrucciones INSERT en el registro binario. | 
| `ndb_log_updated_only` | Establezca este parámetro en `OFF`. Este valor garantiza que el registro binario contiene la totalidad de la fila y no solo las columnas que se han modificado. | 

## Uso de una base AWS de datos compatible con MySQL administrada como fuente para AWS DMS
<a name="CHAP_Source.MySQL.AmazonManaged"></a>

Puede utilizar las siguientes bases de datos AWS gestionadas compatibles con MySQL como fuentes para: AWS DMS
+ MySQL Community Edition
+ MariaDB Community Edition
+ Amazon Aurora MySQL-Compatible Edition

Cuando utilice como fuente una base AWS de datos gestionada compatible con MySQL AWS DMS, asegúrese de cumplir los siguientes requisitos previos para los CDC:
+ Para habilitar los registros binarios de RDS para MySQL y para RDS para MariaDB, habilite las copias de seguridad automáticas en el nivel de instancia. Para habilitar los registros binarios para un clúster de Aurora MySQL, cambie la variable `binlog_format` en el grupo de parámetros.

  Para obtener más información sobre la configuración de copias de seguridad automáticas, consulte [Trabajo con copias de seguridad automáticas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html) en la *Guía del usuario de Amazon RDS*.

  Para obtener más información sobre la configuración del registro binario para una base de datos de Amazon RDS para MySQL, consulte [Configuración del formato de registro binario](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html) en la *Guía del usuario de Amazon RDS*. 

  Para obtener más información sobre la configuración del registro binario para un clúster de Aurora MySQL, consulte [¿Cómo activo el registro binario para mi clúster de Amazon Aurora MySQL?](https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/). 
+ Si piensa usar CDC, active el registro binario. Para obtener más información sobre la configuración del registro binario para una base de datos de Amazon RDS para MySQL, consulte [Configuración del formato de registro binario](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html) en la *Guía del usuario de Amazon RDS*.
+ Asegúrese de que los registros binarios estén disponibles para. AWS DMS Dado que las bases de datos AWS administradas compatibles con MySQL purgan los registros binarios lo antes posible, debe aumentar el tiempo que los registros permanecen disponibles. Por ejemplo, para incrementar la retención de logs a 24 horas, ejecute el siguiente comando. 

  ```
   call mysql.rds_set_configuration('binlog retention hours', 24);
  ```
+ Establezca el parámetro `binlog_format` como `"ROW"`.
**nota**  
En MySQL o MariaDB, `binlog_format` es un parámetro dinámico, por lo que no es necesario reiniciar el sistema para que el nuevo valor surta efecto. Sin embargo, el nuevo valor solo se aplicará a las sesiones nuevas. Si cambia `binlog_format` a `ROW` con fines de replicación, la base de datos puede seguir creando registros binarios posteriores con el mismo formato `MIXED`, si esas sesiones se iniciaron antes de que cambiara el valor. Esto puede impedir que se capturen correctamente todos AWS DMS los cambios en la base de datos de origen. Al cambiar la configuración de `binlog_format` en una base de datos de MariaDB o MySQL, asegúrese de reiniciar la base de datos para cerrar todas las sesiones existentes o de reiniciar cualquier aplicación que realice operaciones de DML (lenguaje de manipulación de datos). Obligar a la base de datos a reiniciar todas las sesiones después de cambiar el `binlog_format` parámetro `ROW` garantizará que la base de datos escriba todos los cambios posteriores en la base de datos de origen con el formato correcto, de forma que AWS DMS pueda capturar esos cambios correctamente.
+ Establezca el parámetro `binlog_row_image` como `"Full"`. 
+ Establezca el parámetro `binlog_checksum` en `"NONE"` para la versión 3.4.7 o anteriores de DMS. Para obtener más información acerca de la configuración de parámetros en Amazon RDS MySQL, consulte [Trabajo con copias de seguridad automatizadas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html) en la *Guía del usuario de Amazon RDS*.
+ Si utiliza una réplica de lectura de Amazon RDS MySQL o Amazon RDS MariaDB como origen, habilite las copias de seguridad en la réplica de lectura y asegúrese de que el parámetro `log_slave_updates` esté establecido en `TRUE`.

## Limitaciones del uso de una base de datos MySQL como fuente para AWS DMS
<a name="CHAP_Source.MySQL.Limitations"></a>

Cuando utilice una base de datos MySQL como origen, tenga en cuenta lo siguiente:
+  No se admite la captura de datos de cambios (CDC) para Amazon RDS MySQL 5.5 o inferior. Para MySQL de Amazon RDS, debe usar la versión 5.6, 5.7 u 8.0 para habilitar CDC. CDC es compatible con orígenes MySQL 5.5 autoadministrados. 
+ Para CDC, se admiten `CREATE TABLE`, `ADD COLUMN` y `DROP COLUMN` que cambian el tipo de datos de columna y `renaming a column`. Sin embargo, no se admiten `DROP TABLE`, `RENAME TABLE` y las actualizaciones realizadas en otros atributos, como el valor predeterminado de la columna, la nulabilidad de la columna, el conjunto de caracteres, etc.
+  En el caso de las tablas particionadas en el origen, al configurar el **modo de preparación** de **tablas de destino en Drop tables on target**, AWS DMS crea una tabla sencilla sin particiones en el destino de MySQL. Para migrar tablas con particiones a una tabla particionada en el destino, cree previamente las tablas con particiones en la base de datos de MySQL de destino.
+  Los objetivos relacionales no admiten el uso de una `ALTER TABLE table_name ADD COLUMN column_name` sentencia para añadir columnas al principio (FIRST) o al centro de una tabla (AFTER). Las columnas siempre se añaden al final de la tabla. Cuando el destino es Amazon S3 o Amazon Kinesis Data Streams, se admite la adición de columnas mediante FIRST o AFTER.
+ No se admite la CDC cuando un nombre de tabla contiene mayúsculas y minúsculas y el motor de origen está alojado en un sistema operativo con nombres de archivo que no distinguen entre mayúsculas y minúsculas. Un ejemplo es Microsoft Windows u OS X con HFS\$1.
+ Puede usar la edición compatible con MySQL de Aurora sin servidor versión 1 para la carga completa, pero no puede usarla para CDC. Esto se debe a que no se pueden habilitar los requisitos previos de MySQL. Para obtener más información, consulte [Grupos de parámetros y Aurora sin servidor v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.parameter-groups). 

  La versión 2 de la edición compatible con MySQL de Aurora sin servidor admite CDC.
+  El atributo AUTO\$1INCREMENT en una columna no se migra a una columna de la base de datos de destino.
+  No se admite la captura de los cambios cuando los registros binarios no se almacenan en almacenamiento de bloques estándar. Por ejemplo, CDC no funciona cuando los registros binarios se almacenan en Amazon S3.
+  AWS DMS crea tablas de destino con el motor de almacenamiento InnoDB de forma predeterminada. Si necesita utilizar un motor de almacenamiento distinto de InnoDB, debe crear manualmente la tabla y migrar a ella mediante el modo [no hacer nada](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html).
+ No puede utilizar réplicas de Aurora MySQL como fuente a AWS DMS menos que su modo de tarea de migración de DMS sea **Migrar datos existentes**, solo a carga completa.
+  Si el origen compatible con MySQL se detiene durante la carga completa, la tarea de AWS DMS no se detiene con un error. La tarea finaliza correctamente, pero es posible que el destino no esté sincronizado con el origen. Si esto ocurre, reinicie la tarea o vuelva a cargar las tablas afectadas.
+  Los índices creados en una parte del valor de una columna no se migran. Por ejemplo, el índice CREATE INDEX first\$1ten\$1chars ON customer (name(10)) no se crea en el destino.
+ En algunos casos, la tarea está configurada para no replicarse LOBs (SupportLobs«» es falsa en la configuración de la tarea o se selecciona **No incluir columnas LOB** en la consola de tareas). En estos casos, AWS DMS no migra ninguna columna MEDIUMBLOB, LONGBLOB, MEDIUMTEXT ni LONGTEXT al destino.

  Las columnas BLOB, TINYBLOB, TEXT y TINYTEXT no se ven afectadas y se migran al destino.
+ Tablas o sistemas de datos temporales: las tablas de versión no son compatibles con las bases de datos de origen y destino de MariaDB.
+ Si migra entre dos clústeres Aurora MySQL de Amazon RDS, el punto de enlace de origen de Aurora MySQL de RDS debe ser read/write una instancia, no una instancia de réplica. 
+ AWS DMS actualmente no admite la migración de vistas para MariaDB.
+ AWS DMS no admite cambios de DDL para tablas particionadas para MySQL. Para omitir la suspensión de tablas por cambios de DDL de particiones durante la CDC, establezca `skipTableSuspensionForPartitionDdl` en `true`.
+ AWS DMS solo admite transacciones XA en la versión 3.5.0 y versiones posteriores. Las versiones anteriores no admiten transacciones XA. AWS DMS no admite transacciones XA en la versión 10.6 o superior de MariaDB. Para obtener más información, consulte lo siguiente. [Compatibilidad con transacciones XA](#CHAP_Source.MySQL.XA)
+ AWS DMS no se utiliza GTIDs para la replicación, incluso si los datos de origen los contienen. 
+ AWS DMS no es compatible con el registro binario mejorado de Aurora MySQL.
+ AWS DMS no admite la compresión de transacciones de registros binarios.
+ AWS DMS no propaga los eventos ON DELETE CASCADE y ON UPDATE CASCADE para bases de datos MySQL mediante el motor de almacenamiento InnoDB. Para estos eventos, MySQL no genera eventos binlog que reflejen las operaciones en cascada en las tablas secundarias. Por lo tanto, no AWS DMS puede replicar los cambios correspondientes en las tablas secundarias. Para obtener más información, consulte [Los índices, las claves externas o las actualizaciones o eliminaciones en cascada no se migran](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.FKsAndIndexes).
+ AWS DMS no captura los cambios en las columnas calculadas (`VIRTUAL`y`GENERATED ALWAYS`). Para evitar esta limitación, haga lo siguiente:
  + Cree previamente la tabla de destino en la base de datos de destino y cree la tarea de AWS DMS con la configuración de tareas de carga completa `DO_NOTHING` o `TRUNCATE_BEFORE_LOAD`.
  + Agregue una regla de transformación para eliminar la columna calculada del ámbito de la tarea. Para obtener información sobre las reglas de transformación, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).
+ Debido a la limitación interna de MySQL, BINLOGs no AWS DMS puede procesar un tamaño superior a 4 GB. BINLOGs Un tamaño superior a 4 GB puede provocar fallos en las tareas del DMS u otros comportamientos impredecibles. Debe reducir el tamaño de las transacciones para evitar que superen los BINLOGs 4 GB.
+ AWS DMS no admite comillas invertidas (```) ni comillas simples (`'`) en los nombres de esquemas, tablas y columnas.
+ AWS DMS no migra los datos de las columnas invisibles de la base de datos de origen. Para incluir estas columnas en el ámbito de la migración, use la instrucción ALTER TABLE para hacer visibles estas columnas.

## Compatibilidad con transacciones XA
<a name="CHAP_Source.MySQL.XA"></a>

Una transacción de arquitectura ampliada (XA) es una transacción que se puede usar para agrupar una serie de operaciones de varios recursos transaccionales en una sola transacción global fiable. Una transacción XA utiliza un protocolo de confirmación en dos fases. En general, la captura de cambios mientras hay transacciones XA abiertas puede provocar la pérdida de datos. Si la base de datos no utiliza transacciones XA, puede ignorar este permiso y la configuración `IgnoreOpenXaTransactionsCheck` mediante el uso del valor predeterminado `TRUE`. Para empezar a replicar desde un origen que tiene transacciones XA, haga lo siguiente:
+ Asegúrese de que el usuario del AWS DMS punto final tenga el siguiente permiso:

  ```
  grant XA_RECOVER_ADMIN on *.* to 'userName'@'%';
  ```
+ Establezca la configuración del punto de conexión `IgnoreOpenXaTransactionsCheck` en `false`.

**nota**  
AWS DMS no admite transacciones XA en MariaDB Source DB versión 10.6 o superior.

## Configuración de punto final cuando se utiliza MySQL como fuente para AWS DMS
<a name="CHAP_Source.MySQL.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de origen de MySQL de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de origen mediante la AWS DMS consola o mediante el `create-endpoint` comando de [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--my-sql-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con MySQL como origen.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.MySQL.html)

## Tipos de datos de origen para MySQL
<a name="CHAP_Source.MySQL.DataTypes"></a>

La siguiente tabla muestra los tipos de datos de origen de la base de datos MySQL que se admiten cuando se utilizan AWS DMS y la asignación predeterminada de AWS DMS los tipos de datos.

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Tipos de datos de MySQL  |  AWS DMS tipos de datos  | 
| --- | --- | 
|  INT  |  INT4  | 
|  BIGINT  |  INT8  | 
|  MEDIUMINT  |  INT4  | 
|  TINYINT  |  INT1  | 
|  SMALLINT  |  INT2  | 
|  UNSIGNED TINYINT  |  UINT1  | 
|  UNSIGNED SMALLINT  |  UINT2  | 
|  UNSIGNED MEDIUMINT  |  UINT4  | 
|  UNSIGNED INT  |  UINT4  | 
|  UNSIGNED BIGINT  |  UINT8  | 
|  DECIMAL (10)  |  NUMERIC (10,0)  | 
|  BINARIO  |  BYTES(1)  | 
|  BIT  |  BOOLEANO  | 
|  BIT(64)  |  BYTES(8)  | 
|  BLOB  |  BYTES(65535)  | 
|  LONGBLOB  |  BLOB  | 
|  MEDIUMBLOB  |  BLOB  | 
|  TINYBLOB  |  BYTES(255)  | 
|  DATE  |  DATE  | 
|  DATETIME  |  DATETIME DATETIME sin un valor entre paréntesis se replica sin milisegundos. DATETIME con un valor entre paréntesis de 1 a 5 (como `DATETIME(5)`) se replica con milisegundos. Al replicar una columna DATETIME, la hora sigue siendo la misma en el destino. No se convierte a UTC.  | 
|  TIME  |  STRING  | 
|  TIMESTAMP  |  DATETIME Al replicar una columna TIMESTAMP, la hora se convierte a UTC en el destino.  | 
|  YEAR  |  INT2  | 
|  DOUBLE  |  REAL8  | 
|  FLOAT  |  REAL(DOUBLE) Si los valores FLOAT no están en el rango siguiente, use una transformación para asignar FLOAT a STRING. Para obtener más información sobre transformaciones, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md). El rango FLOAT admitido es de -1.79E\$1308 a -2.23E-308, 0 y de 2.23E-308 a 1.79E\$1308  | 
|  VARCHAR (45)  |  WSTRING (45)  | 
|  VARCHAR (2000)  |  WSTRING (2000)  | 
|  VARCHAR (4000)  |  WSTRING (4000)  | 
|  VARBINARY (4000)  |  BYTES (4000)  | 
|  VARBINARY (2000)  |  BYTES (2000)  | 
|  CHAR  |  WSTRING  | 
|  TEXT  |  WSTRING  | 
|  LONGTEXT  |  NCLOB  | 
|  MEDIUMTEXT  |  NCLOB  | 
|  TINYTEXT  |  WSTRING(255)  | 
|  GEOMETRY  |  BLOB  | 
|  POINT  |  BLOB  | 
|  LINESTRING  |  BLOB  | 
|  POLYGON  |  BLOB  | 
|  MULTIPOINT  |  BLOB  | 
|  MULTILINESTRING  |  BLOB  | 
|  MULTIPOLYGON  |  BLOB  | 
|  GEOMETRYCOLLECTION  |  BLOB  | 
|  ENUM  |  CADENA () *length* Aquí, *length* es la longitud del valor más largo de la ENUM.  | 
|  SET  |  CADENA () *length* Aquí, *length* es la longitud total de todos los valores del SET, incluidas las comas.  | 
|  JSON  |  CLOB  | 

**nota**  
En algunos casos, puede especificar los tipos de datos DATETIME y TIMESTAMP con un valor “cero” (es decir, 00-00-0000). Si es así, asegúrese de que la base de datos de destino de la tarea de replicación admita valores “cero” para los tipos de datos DATETIME y TIMESTAMP. De lo contrario, estos valores se registran con un valor NULL en el destino.

# Uso de una base de datos SAP ASE como fuente para AWS DMS
<a name="CHAP_Source.SAP"></a>

Puede migrar los datos de una base de datos de SAP Adaptive Server Enterprise (ASE), anteriormente conocida como Sybase, mediante. AWS DMS Con una base de datos SAP ASE como fuente, puede migrar los datos a cualquiera de las demás bases de datos de destino compatibles. AWS DMS 

Para obtener información sobre las versiones de SAP ASE que son AWS DMS compatibles como fuente, consulte[Fuentes de AWS DMS](CHAP_Introduction.Sources.md).

Para obtener más información sobre cómo trabajar con bases de datos de SAP ASE AWS DMS, consulte las siguientes secciones.

**Topics**
+ [Requisitos previos para utilizar una base de datos SAP ASE como fuente de AWS DMS](#CHAP_Source.SAP.Prerequisites)
+ [Limitaciones del uso de SAP ASE como fuente de AWS DMS](#CHAP_Source.SAP.Limitations)
+ [Se requieren permisos para utilizar SAP ASE como fuente de AWS DMS](#CHAP_Source.SAP.Security)
+ [Quitar el punto de truncado](#CHAP_Source.SAP.Truncation)
+ [Configuración del punto final cuando se utiliza SAP ASE como fuente de AWS DMS](#CHAP_Source.SAP.ConnectionAttrib)
+ [Tipos de datos de origen para SAP ASE](#CHAP_Source.SAP.DataTypes)

## Requisitos previos para utilizar una base de datos SAP ASE como fuente de AWS DMS
<a name="CHAP_Source.SAP.Prerequisites"></a>

Para que una base de datos SAP ASE sea una fuente de datos AWS DMS, haga lo siguiente:
+ Habilite la replicación de SAP ASE para las tablas mediante el comando `sp_setreptable`. Para obtener más información, consulte [Sybase Infocenter Archive]( http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc32410_1501/html/refman/X37830.htm). 
+ Inhabilite `RepAgent` en la base de datos de SAP ASE. Para obtener más información, consulte [Detener y deshabilitar el RepAgent subproceso en la base de datos principal](http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.dc20096_1260/html/mra126ag/mra126ag65.htm). 
+ Para replicar a la versión 15.7 de SAP ASE en una instancia EC2 de Windows configurada para caracteres no latinos (por ejemplo, chino), instale SAP ASE 15.7 SP121 en el equipo de destino.

**nota**  
Para la replicación continua de la captura de datos de cambios (CDC), DMS ejecuta `dbcc logtransfer` y `dbcc log` para leer los datos del registro de transacciones.

## Limitaciones del uso de SAP ASE como fuente de AWS DMS
<a name="CHAP_Source.SAP.Limitations"></a>

Al utilizar una base de datos SAP ASE como origen para AWS DMS se aplican las siguientes restricciones:
+ Solo puede ejecutar una AWS DMS tarea con replicación continua o CDC para cada base de datos de SAP ASE. Puede ejecutar varias full-load-only tareas en paralelo.
+ No se puede cambiar el nombre de una tabla. Por ejemplo, el siguiente comando produce un error.

  ```
  sp_rename 'Sales.SalesRegion', 'SalesReg;
  ```
+ No se puede cambiar el nombre de una columna. Por ejemplo, el siguiente comando produce un error.

  ```
  sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';
  ```
+ Los valores situados al final de las cadenas de tipo de datos binarios se truncan cuando se replican para la base de datos de destino. Por ejemplo, `0x0000000000000000000000000100000100000000` en la tabla de origen se convierte en `0x00000000000000000000000001000001`, en la tabla de destino.
+ Si el valor predeterminado de la base de datos no permite valores NULL, AWS DMS crea la tabla de destino con columnas que no permiten valores NULL. En consecuencia, si una tarea de replicación de CDC o de carga completa contiene valores vacíos, AWS DMS se produce un error. Puede evitar que se produzcan estos errores permitiendo valores NULL en la base de datos de origen ejecutando los siguientes comandos.

  ```
  sp_dboption database_name, 'allow nulls by default', 'true'
  go
  use database_name
  CHECKPOINT
  go
  ```
+ No se admite el comando de índice `reorg rebuild`.
+ AWS DMS no admite clústeres ni utiliza MSA (disponibilidad multisitio) o Warm Standby como fuente.
+ Cuando se utiliza la expresión del encabezado de transformación `AR_H_TIMESTAMP` en las reglas de asignación, no se capturarán los milisegundos de una columna agregada.
+ Si se ejecutan operaciones de fusión durante CDC, se producirá un error irrecuperable. Para volver a sincronizar el objetivo, ejecute una carga completa.
+ Los eventos desencadenantes de la reversión no se admiten en las tablas que utilizan un esquema de bloqueo de filas de datos.
+ AWS DMS no puede reanudar una tarea de replicación después de eliminar una tabla del ámbito de la tarea desde una base de datos SAP de origen. Si la tarea de replicación de DMS se detuvo y se realizó alguna operación de DML (INSERTAR, ACTUALIZAR, ELIMINAR) y, a continuación, eliminar la tabla, debe reiniciar la tarea de replicación.

## Se requieren permisos para utilizar SAP ASE como fuente de AWS DMS
<a name="CHAP_Source.SAP.Security"></a>

Para utilizar una base de datos SAP ASE como fuente en una AWS DMS tarea, debe conceder los permisos. Otorgue a la cuenta de usuario especificada en las definiciones AWS DMS de la base de datos los siguientes permisos en la base de datos SAP ASE: 
+ sa\$1role
+ replication\$1role
+ sybase\$1ts\$1role
+ De forma predeterminada, cuando necesita tener permiso para ejecutar el procedimiento `sp_setreptable` almacenado, AWS DMS habilita la opción de replicación de SAP ASE. Si desea ejecutar una tabla directamente desde `sp_setreptable` el punto final de la base de datos y no a través de AWS DMS ella misma, puede utilizar el atributo de conexión `enableReplication` adicional. Para obtener más información, consulte [Configuración del punto final cuando se utiliza SAP ASE como fuente de AWS DMS](#CHAP_Source.SAP.ConnectionAttrib).

## Quitar el punto de truncado
<a name="CHAP_Source.SAP.Truncation"></a>

Cuando se inicia una tarea, AWS DMS establece una `$replication_truncation_point` entrada en la vista `syslogshold` del sistema que indica que hay un proceso de replicación en curso. Mientras AWS DMS está funcionando, avanza el punto de truncamiento de la replicación a intervalos regulares, en función de la cantidad de datos que ya se hayan copiado en el destino.

Una vez establecida la `$replication_truncation_point` entrada, mantenga la AWS DMS tarea en ejecución para evitar que el registro de la base de datos se vuelva excesivamente grande. Si desea detener la AWS DMS tarea de forma permanente, elimine el punto de truncamiento de la replicación ejecutando el siguiente comando:

```
dbcc settrunc('ltm','ignore')
```

Una vez eliminado el punto de truncamiento, no podrá reanudar la tarea. AWS DMS La sesión se seguirá truncando de forma automática en los puntos de control (si se ha establecido el truncado automático).

## Configuración del punto final cuando se utiliza SAP ASE como fuente de AWS DMS
<a name="CHAP_Source.SAP.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de origen de SAP ASE de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de origen mediante la AWS DMS consola o mediante el `create-endpoint` comando del [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--sybase-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con SAP ASE como origen.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.SAP.html)

## Tipos de datos de origen para SAP ASE
<a name="CHAP_Source.SAP.DataTypes"></a>

Para obtener una lista de los tipos de datos de origen de SAP ASE que se admiten cuando se utiliza AWS DMS y el mapeo predeterminado a partir de AWS DMS los tipos de datos, consulte la siguiente tabla. AWS DMS no admite tablas de origen de SAP ASE con columnas del tipo de datos definido por el usuario (UDT). Las columnas que se replican con este tipo de datos se crean como NULL. 

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección [Destinos para la migración de datos](CHAP_Target.md) de su punto de enlace de destino.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte. [Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  Tipos de datos de SAP ASE  |  AWS DMS tipos de datos  | 
| --- | --- | 
| BIGINT | INT8 | 
| UNSIGNED BIGINT | UINT8 | 
| INT | INT4 | 
| UNSIGNED INT | UINT4 | 
| SMALLINT | INT2 | 
| UNSIGNED SMALLINT | UINT2 | 
| TINYINT | UINT1 | 
| DECIMAL | NUMERIC | 
| NUMERIC | NUMERIC | 
| FLOAT | REAL8 | 
| DOUBLE | REAL8 | 
| REAL | REAL4 | 
| MONEY | NUMERIC | 
| SMALLMONEY | NUMERIC | 
| DATETIME | DATETIME | 
| BIGDATETIME | DATETIME(6) | 
| SMALLDATETIME | DATETIME | 
| DATE | DATE | 
| TIME | TIME | 
| BIGTIME | TIME | 
| CHAR | STRING | 
| UNICHAR | WSTRING | 
| NCHAR | WSTRING | 
| VARCHAR | STRING | 
| UNIVARCHAR | WSTRING | 
| NVARCHAR | WSTRING | 
| BINARIO | BYTES | 
| VARBINARY | BYTES | 
| BIT | BOOLEANO | 
| TEXT | CLOB | 
| UNITEXT | NCLOB | 
| IMAGE | BLOB | 

# Uso de MongoDB como fuente para AWS DMS
<a name="CHAP_Source.MongoDB"></a>

 Para obtener información sobre las versiones de MongoDB AWS DMS compatibles como fuente, consulte. [Fuentes de AWS DMS](CHAP_Introduction.Sources.md) 

Tenga en cuenta lo siguiente sobre la compatibilidad de versiones de MongoDB:
+ Las versiones AWS DMS 3.4.5 y posteriores admiten las versiones 4.2 y 4.4 de MongoDB. 
+ Las versiones AWS DMS 3.4.5 y posteriores y las versiones de MongoDB 4.2 y posteriores admiten transacciones distribuidas. Para obtener más información sobre las transacciones distribuidas de MongoDB, consulte [Transacciones](https://docs.mongodb.com/manual/core/transactions/) en la [documentación de MongoDB](https://www.mongodb.com/docs/).
+ Las versiones AWS DMS 3.5.0 y posteriores no admiten versiones de MongoDB anteriores a la 3.6.
+ Las versiones AWS DMS 3.5.1 y posteriores son compatibles con MongoDB versión 5.0.
+ Las versiones AWS DMS 3.5.2 y posteriores admiten la versión 6.0 de MongoDB.
+ Las versiones AWS DMS 3.5.4 y posteriores admiten las versiones 7.0 y 8.0 de MongoDB.



Si no está familiarizado con MongoDB, tenga en cuenta los siguientes conceptos importantes sobre las bases de datos MongoDB: 
+ Un registro en MongoDB es un *documento* formado por una estructura de datos compuesta de pares de campo y valor. El valor de un campo puede incluir otros documentos, matrices y matrices de documentos. Un documento es más o menos equivalente a una fila en una tabla de base de datos relacional.
+ Una *colección* en MongoDB es un grupo de documentos y es aproximadamente equivalente a una tabla de base de datos relacional.
+ Una *base de datos* de MongoDB es un conjunto de recopilaciones y equivale aproximadamente a un esquema de una base de datos relacional.
+ Internamente, un documento de MongoDB se almacena como archivo JSON binario (BSON) en formato comprimido, que incluye un tipo para cada campo del documento. Cada documento tiene un identificador único.

AWS DMS *admite dos modos de migración cuando se usa MongoDB como fuente*, modo documento o modo tabla*.* Se especifica qué modo de migración usar al crear el punto de conexión de MongoDB o al configurar el parámetro del **Modo metadatos** desde la consola de AWS DMS . Otra opción, puede crear una segunda columna con un nombre `_id` que actúe como clave principal. Para ello, seleccione el botón de verificación de **\$1id como columna independiente** en el panel de configuración del punto de conexión. 

La selección del modo de migración afecta al formato resultante de los datos de destino, como se indica a continuación. 

**Modo documento**  
En el modo documento, el documento de MongoDB se migra tal cual, es decir, sus datos se consolidan en una única columna de una tabla de destino denominada `_doc`. El modo documento es la configuración predeterminada al usar MongoDB como punto de enlace de origen.  
Por ejemplo, tenga en cuenta los siguientes documentos en una colección de MongoDB llamada myCollection.  

```
 db.myCollection.find()
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }
```
Después de migrar los datos a una tabla de base de datos relacional utilizando el modo documento, los datos se estructuran de la siguiente forma. Los campos de datos del documento de MongoDB se consolidan en la columna` _doc`.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.MongoDB.html)
Si lo desea, puede establecer el `extractDocID` del atributo de conexión adicional en *true* para crear otra columna denominada `"_id"` que actúe como clave principal. Si va a utilizar CDC, establezca este parámetro en *verdadero*.  
*Cuando se utiliza CDC con fuentes que generan [transacciones con varios documentos](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction), el `ExtractDocId` parámetro **debe estar** establecido en true.* Si este parámetro no está activado, la AWS DMS tarea fallará cuando detecte una transacción con varios documentos.  
En el modo documento, AWS DMS gestiona la creación y el cambio de nombre de las colecciones de la siguiente manera:  
+ Si agrega una nueva colección a la base de datos de origen, AWS DMS crea una nueva tabla de destino para la colección y replica cualquier documento. 
+ Si se cambia el nombre de una recopilación existente en la base de datos de origen, AWS DMS no cambia el nombre de la tabla de destino. 
Si el punto de conexión de destino es MongoDB o Amazon DocumentDB, ejecute la migración en **Modo documento**.

**Modo de tabla**  
En modo tabla, AWS DMS transforma cada campo de nivel superior de un documento de MongoDB en una columna de la tabla de destino. Si un campo está anidado, AWS DMS aplana los valores anidados en una sola columna. AWS DMS a continuación, agrega un campo clave y tipos de datos al conjunto de columnas de la tabla de destino.   
Para cada documento de MongoDB AWS DMS , agrega cada clave y tipo al conjunto de columnas de la tabla de destino. Por ejemplo, si utiliza el modo de tabla, AWS DMS migra el ejemplo anterior a la tabla siguiente.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.MongoDB.html)
Los valores anidados se aplanan en una columna que contiene nombres de clave separados por puntos. El nombre de la columna será la concatenación de los nombres de los campos reunidos, separados por puntos. Por ejemplo, AWS DMS migra un documento JSON con un campo de valores anidados, por ejemplo, `{"a" : {"b" : {"c": 1}}}` a una columna llamada `a.b.c.`  
Para crear las columnas de destino, AWS DMS escanea un número específico de documentos de MongoDB y crea un conjunto de todos los campos y sus tipos. AWS DMS luego usa este conjunto para crear las columnas de la tabla de destino. Si crea o modifica el punto de enlace de origen de MongoDB mediante la consola de , puede especificar el número de documentos que se van a analizar. El valor predeterminado es de 1000 documentos. Si usa el AWS CLI, puede usar el atributo de conexión adicional`docsToInvestigate`.  
En el modo tabla, AWS DMS gestiona los documentos y las colecciones de la siguiente manera:  
+ Cuando añada un documento a una colección existente, el documento se replica. Si hay campos que no existen en el destino, estos campos no se replican.
+ Al actualizar un documento, el documento actualizado se replican. Si hay campos que no existen en el destino, estos campos no se replican.
+ Se admite en toda su extensión la eliminación de documentos.
+ Cuando se añade una colección nueva, no se crea una tabla nueva en el destino si se efectúa mientras se desarrolla una tarea de CDC.
+ En la fase de captura de datos de cambio (CDC), AWS DMS no permite cambiar el nombre de una colección.

**Topics**
+ [Permisos necesarios cuando se utiliza MongoDB como fuente para AWS DMS](#CHAP_Source.MongoDB.PrerequisitesCDC)
+ [Configuración de un conjunto de réplicas de MongoDB para CDC](#CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet)
+ [Requisitos de seguridad al utilizar MongoDB como fuente de AWS DMS](#CHAP_Source.MongoDB.Security)
+ [Segmentación de recopilaciones y migración en paralelo de MongoDB](#CHAP_Source.MongoDB.ParallelLoad)
+ [Migración de varias bases de datos cuando se usa MongoDB como fuente de AWS DMS](#CHAP_Source.MongoDB.Multidatabase)
+ [Limitaciones al usar MongoDB como fuente de AWS DMS](#CHAP_Source.MongoDB.Limitations)
+ [Ajustes de configuración del punto final cuando se utiliza MongoDB como fuente para AWS DMS](#CHAP_Source.MongoDB.Configuration)
+ [Tipos de datos de origen para MongoDB](#CHAP_Source.MongoDB.DataTypes)

## Permisos necesarios cuando se utiliza MongoDB como fuente para AWS DMS
<a name="CHAP_Source.MongoDB.PrerequisitesCDC"></a>

Para una AWS DMS migración con una fuente de MongoDB, puede crear una cuenta de usuario con privilegios de root o un usuario con permisos únicamente en la base de datos para migrar. 

El código siguiente crear un usuario para que sea la cuenta raíz.

```
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
)
```

Para un origen de MongoDB 3.x, el código siguiente crea un usuario con privilegios mínimos en la base de datos que se va a migrar.

```
use database_to_migrate
db.createUser( 
{ 
    user: "dms-user",
    pwd: "password",
    roles: [ { role: "read", db: "local" }, "read"] 
})
```

Para un origen de MongoDB 4.x, el siguiente código crea un usuario con privilegios mínimos.

```
{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }
```

Por ejemplo, cree el siguiente rol en la base de datos “admin”.

```
use admin
db.createRole(
{
role: "changestreamrole",
privileges: [
{ resource: { db: "", collection: "" }, actions: [ "find","changeStream" ] }
],
roles: []
}
)
```

Y una vez creado el rol, cree un usuario en la base de datos que se va a migrar.

```
 use test
> db.createUser( 
{ 
user: "dms-user12345",
pwd: "password",
roles: [ { role: "changestreamrole", db: "admin" }, "read"] 
})
```

## Configuración de un conjunto de réplicas de MongoDB para CDC
<a name="CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet"></a>

Para utilizar la replicación continua o la CDC con MongoDB AWS DMS , se requiere acceso al registro de operaciones de MongoDB (oplog). Para crear dicho log, debe implementar un conjunto de réplicas si no existe ninguno. Para obtener más información, consulte la [ documentación de MongoDB](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/).

Puede utilizar CDC con el nodo principal o secundario de un conjunto de réplicas de MongoDB como punto de enlace de origen.

**Para convertir una instancia independiente a un conjunto de réplicas**

1. Usar la línea de comandos, conectarse a `mongo`.

   ```
   mongo localhost
   ```

1. Detenga el servicio `mongod`.

   ```
   service mongod stop
   ```

1. Reinicie `mongod` utilizando el siguiente comando:

   ```
   mongod --replSet "rs0" --auth -port port_number
   ```

1. Pruebe la conexión con el conjunto de réplicas con los siguientes comandos:

   ```
   mongo -u root -p password --host rs0/localhost:port_number 
     --authenticationDatabase "admin"
   ```

Si tiene previsto realizar una migración con el modo documento, seleccione la opción `_id as a separate column` al crear el punto de enlace de MongoDB. Si se selecciona esta opción, se crea otra columna denominada `_id`, que actúa como clave principal. Esta segunda columna es necesaria AWS DMS para admitir las operaciones con el lenguaje de manipulación de datos (DML).

**nota**  
AWS DMS utiliza el registro de operaciones (oplog) para capturar los cambios durante la replicación en curso. Si MongoDB vacía los registros del oplog antes de leerlos, las tareas fallarán. AWS DMS Recomendamos ajustar el tamaño de oplog para retener los cambios durante al menos 24 horas. 

## Requisitos de seguridad al utilizar MongoDB como fuente de AWS DMS
<a name="CHAP_Source.MongoDB.Security"></a>

AWS El DMS admite dos métodos de autenticación para MongoDB. Los dos métodos de autenticación se utilizan para cifrar la contraseña, de forma que solo se pueda utilizar cuando el parámetro `authType` se haya establecido en *PASSWORD (CONTRASEÑA)*.

Los métodos de autenticación de MongoDB son los siguientes:
+ **MONGODB-CR**: para compatibilidad con versiones anteriores
+ **SCRAM-SHA-1**: el valor predeterminado cuando se usa MongoDB versión 3.x y 4.0

Si no se especifica un método de autenticación, AWS DMS utiliza el método predeterminado para la versión de la fuente de MongoDB.

## Segmentación de recopilaciones y migración en paralelo de MongoDB
<a name="CHAP_Source.MongoDB.ParallelLoad"></a>

Para mejorar el rendimiento de una tarea de migración, los puntos de conexión de origen de MongoDB admiten dos opciones de carga completa paralela en la asignación de tablas. 

En otras palabras, puede migrar una recopilación en paralelo mediante la segmentación automática o de segmentación por rango de la asignación de tablas para una carga completa paralela en la configuración de JSON. Con la segmentación automática, puede especificar los criterios para segmentar automáticamente la fuente AWS DMS para la migración en cada subproceso. Con la segmentación por rangos, puede determinar AWS DMS el rango específico de cada segmento para que DMS migre en cada subproceso. Para obtener más información sobre estas configuraciones, consulte [Reglas y operaciones de configuración de tablas y recopilaciones](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

### Migración de una base de datos de MongoDB en paralelo mediante rangos de segmentación automática
<a name="CHAP_Source.MongoDB.ParallelLoad.AutoPartitioned"></a>

Puede migrar los documentos en paralelo especificando los criterios para que AWS DMS particione (segmentar) automáticamente los datos de cada subproceso. En concreto, se especifica el número de documentos que se van a migrar por subproceso. Con este enfoque, AWS DMS intenta optimizar los límites de los segmentos para obtener el máximo rendimiento por hilo.

Puede especificar los criterios de segmentación mediante las siguientes opciones de configuración de tabla en la asignación de tablas.


|  Opción de configuración de tabla  |  Description (Descripción)  | 
| --- | --- | 
|  `"type"`  |  (Obligatorio) Establezca `"partitions-auto"` para MongoDB como origen.  | 
|  `"number-of-partitions"`  |  (Opcional) Número total de particiones (segmentos) utilizadas para la migración. El valor predeterminado es 16.  | 
|  `"collection-count-from-metadata"`  |  (Opcional) Si esta opción se establece en `true`, AWS DMS utiliza un recuento de recopilaciones estimado para determinar el número de particiones. Si esta opción está establecida en`false`, AWS DMS utiliza el recuento de colecciones real. El valor predeterminado es `true`.  | 
|  `"max-records-skip-per-page"`  |  (Opcional) El número de registros que se van a omitir a la vez al determinar los límites de cada partición. AWS DMS utiliza un método de omisión paginada para determinar el límite mínimo de una partición. El valor predeterminado es 10 000.  El establecimiento de un valor relativamente alto puede provocar tiempos de espera del cursor y errores en las tareas. Si se establece un valor relativamente bajo, se realizan más operaciones por página y se ralentiza la carga completa.   | 
|  `"batch-size"`  |  (Opcional) Limita el número de documentos que se devuelven en un lote. Cada lote requiere un viaje de ida y vuelta al servidor. Si el tamaño del lote es cero (0), el cursor utiliza el tamaño máximo de lote definido por el servidor. El valor predeterminado es 0.  | 

En el siguiente ejemplo, se muestra una tabla de asignación para la segmentación automática.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "table-settings",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "parallel-load": {
                "type": "partitions-auto",
                "number-of-partitions": 5,
                "collection-count-from-metadata": "true",
                "max-records-skip-per-page": 1000000,
                "batch-size": 50000
            }
        }
    ]
}
```

La segmentación automática tiene la siguiente limitación. La migración de cada segmento obtiene el recuento de la recopilación y el `_id` mínimo para la recopilación de forma individual. A continuación, utiliza un salto paginado para calcular el límite mínimo de ese segmento. 

Por lo tanto, asegúrese de que el valor de `_id` mínimo de cada recopilación permanezca constante hasta que se calculen todos los límites de los segmentos de la recopilación. Si cambia el valor de `_id` mínimo de una recopilación durante el cálculo del límite del segmento, puede provocar la pérdida de datos o errores en las filas duplicadas.

### Migración de una base de datos de MongoDB en paralelo mediante la segmentación por rango
<a name="CHAP_Source.MongoDB.ParallelLoad.Ranges"></a>

Puede migrar los documentos en paralelo especificando los rangos de cada segmento de un subproceso. Con este enfoque, usted indica AWS DMS los documentos específicos que se deben migrar en cada hilo de acuerdo con los rangos de documentos que haya elegido por hilo.

La siguiente imagen muestra una recopilación de MongoDB que tiene siete elementos y `_id` como la clave principal.

![\[Recopilación de MongoDB con siete artículos.\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/images/datarep-docdb-collection.png)


Para dividir la colección en tres segmentos específicos para AWS DMS migrar en paralelo, puede añadir reglas de mapeo de tablas a su tarea de migración. Este enfoque se muestra en el siguiente ejemplo de JSON.

```
{ // Task table mappings:
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "rule-action": "include"
    }, // "selection" :"rule-type"
    {
      "rule-type": "table-settings",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "parallel-load": {
        "type": "ranges",
        "columns": [
           "_id",
           "num"
        ],
        "boundaries": [
          // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79
          // and num less-than-or-equal-to 2.
          [
             "5f805c97873173399a278d79",
             "2"
          ],
          // Second segment selects documents with _id > 5f805c97873173399a278d79 and
          // _id less-than-or-equal-to 5f805cc5873173399a278d7c and
          // num > 2 and num less-than-or-equal-to 5.
          [
             "5f805cc5873173399a278d7c",
             "5"
          ]                                   
          // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c.
        ] // :"boundaries"
      } // :"parallel-load"
    } // "table-settings" :"rule-type"
  ] // :"rules"
} // :Task table mappings
```

Esa definición de asignación de tablas divide la recopilación de orígenes en tres segmentos y migra en paralelo. A continuación, se muestran límites de segmentación.

```
Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records)
Data with _id > "5f805c97873173399a278d79" and num > 2 and _id  less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 (3 records)
Data with _id > "5f805cc5873173399a278d7c" and num > 5 (2 records)
```

Una vez finalizada la tarea de migración, puede comprobar en los registros de tareas que las tablas se han cargado en paralelo, como se muestra en el siguiente ejemplo. También puede comprobar la cláusula `find` de MongoDB utilizada para descargar cada segmento de la tabla de origen.

```
[TASK_MANAGER    ] I:  Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86  (replicationtask_util.c:752)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is initialized.   (mongodb_unload.c:157)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } }  (mongodb_unload.c:328)

[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TASK_MANAGER    ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752)
 
[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) 

[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328)
 
[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TARGET_LOAD     ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480.

[TASK_MANAGER    ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.
```

Actualmente, AWS DMS admite los siguientes tipos de datos de MongoDB como columna de clave de segmento:
+ Double
+ Cadena
+ ObjectId
+ Entero de 32 bits
+ Entero de 64 bits

## Migración de varias bases de datos cuando se usa MongoDB como fuente de AWS DMS
<a name="CHAP_Source.MongoDB.Multidatabase"></a>

AWS DMS las versiones 3.4.5 y superiores admiten la migración de varias bases de datos en una sola tarea para todas las versiones de MongoDB compatibles. Si desea migrar varias bases de datos, realice estos pasos:

1. Al crear el punto de conexión de origen de MongoDB, realice alguna de las siguientes operaciones:
   + En la página **Crear punto de conexión** de la consola de DMS, asegúrese de que el **nombre de la base de datos** esté vacío en la **configuración del punto de conexión**.
   + Con el AWS CLI `CreateEndpoint` comando, asigne un valor de cadena vacío al parámetro in. `DatabaseName` `MongoDBSettings`

1. Para cada base de datos que desee migrar desde un origen de MongoDB, especifique el nombre de la base de datos como nombre de esquema en la tabla de asignación de la tarea. Puede hacerlo mediante la entrada guiada de la consola o directamente en JSON. Para obtener más información sobre la entrada guiada, consulte [Especificación de selección de tablas y reglas de transformaciones desde la consola](CHAP_Tasks.CustomizingTasks.TableMapping.Console.md). Para obtener más información sobre el archivo JSON, consulte [Reglas y acciones de selección](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.md).

Por ejemplo, es posible que especifique el siguiente JSON para migrar tres bases de datos de MongoDB.

**Example Migrar todas las tablas de un esquema**  
El siguiente JSON migra todas las tablas de base de datos de `Customers`, `Orders` y `Suppliers` del punto de conexión de origen al punto de conexión de destino.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Customers",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "Orders",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "3",
            "rule-name": "3",
            "object-locator": {
                "schema-name": "Inventory",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        }
    ]
}
```

## Limitaciones al usar MongoDB como fuente de AWS DMS
<a name="CHAP_Source.MongoDB.Limitations"></a>

Las siguientes son limitaciones al usar MongoDB como fuente para: AWS DMS
+ En el modo tabla, los documentos de una recopilación deben ser coherentes en cuanto al tipo de datos que utilizan para el valor del mismo campo. Por ejemplo, si un documento de una recopilación incluye `'{ a:{ b:value ... }'`, todos los documentos de la recopilación que hacen referencia al `value` del campo `a.b` deben usar el mismo tipo de datos para `value`, independientemente del lugar donde aparezcan en la recopilación.
+ Cuando la `_id` opción se establece como una columna independiente, la cadena del identificador no puede superar los 200 caracteres.
+ Las claves de ID de objeto y de tipo de matriz se convierten en columnas que tienen los prefijos `oid` y `array` en el modo de tabla.

  Internamente, se hace referencia a estas columnas con los nombres con prefijos. Si utiliza reglas de transformación AWS DMS que hacen referencia a estas columnas, asegúrese de especificar la columna con prefijo. Por ejemplo, especifique `${oid__id}` y no `${_id}` o `${array__addresses}` y no `${_addresses}`. 
+  Los nombres de recopilaciones y claves no pueden incluir el símbolo del dólar (\$1). 
+ AWS DMS no admite colecciones que contengan el mismo campo con mayúsculas y minúsculas diferentes (mayúsculas o inferiores) en el modo tabla con un objetivo de RDBMS. Por ejemplo, no AWS DMS admite tener dos colecciones `Field1` denominadas y. `field1` 
+ El modo de tabla y el modo de documento tienen las limitaciones descritas con anterioridad.
+ La migración en paralelo mediante la segmentación automática tiene las limitaciones descritas anteriormente.
+ Los filtros de origen no son compatibles con MongoDB.
+ AWS DMS no admite documentos en los que el nivel de anidación sea superior a 97.
+ AWS DMS requiere datos de origen codificados en UTF-8 al migrar a destinos que no son de DocumentDB. Para las fuentes con caracteres distintos de UTF-8, conviértalas a UTF-8 antes de la migración o, en su lugar, migre a Amazon DocumentDB.
+ AWS DMS no es compatible con las siguientes funciones de MongoDB versión 5.0:
  + Cambios de los fragmentos en directo
  + Cifrado en el nivel de campo del lado del cliente (CSFLE)
  + Migración de recopilación de series temporales
**nota**  
Una recopilación de series temporales migrada en la fase de carga completa se convertirá en una recopilación normal en Amazon DocumentDB, ya que DocumentDB no admite recopilaciones de series temporales.

## Ajustes de configuración del punto final cuando se utiliza MongoDB como fuente para AWS DMS
<a name="CHAP_Source.MongoDB.Configuration"></a>

Al configurar el punto final de origen de MongoDB, puede especificar varios ajustes de configuración del punto final mediante la consola. AWS DMS 

La siguiente tabla describe los ajustes de configuración disponibles cuando se utilizan bases de datos MongoDB como fuente. AWS DMS 


| Configuración (atributo) | Valores válidos | Valor predeterminado y descripción | 
| --- | --- | --- | 
|  **Modo de autenticación**  |  `"none"` `"password"`  |  El valor `"password"` solicita un nombre de usuario y una contraseña. Cuando se especifica `"none"`, no se utilizan los parámetros de nombre de usuario y contraseña.  | 
|  **Origen de autenticación**  |  Un nombre de la base de datos MongoDB válido.  |  Es el nombre de la base de datos de MongoDB que desea utilizar para validar las credenciales de autenticación. El valor predeterminado es `"admin"`.   | 
|  **Mecanismo de autenticación**  |  `"default"` `"mongodb_cr"` `"scram_sha_1"`  |  El mecanismo de autenticación. El valor de ` "default"` es `"scram_sha_1"`. Esta configuración no se utiliza cuando `authType` se establece en `"no"`.  | 
|  **Modo de metadatos**  |  Documento y tabla  |  Elige el modo de documento o de tabla.   | 
|  **Número de documentos que se van a escanear** (`docsToInvestigate`)  |  Un número entero positivo mayor que `0`.  |  Utilice esta opción solo en modo tabla para definir la tabla de destino.  | 
|  **\$1id como columna independiente**  |  Marca de comprobación en la casilla  |  Casilla de verificación de comprobación opcional que crea una segunda columna denominada `_id` que actúa como clave principal.  | 
|   `ExtractDocID`   |  `true` `false`  |  `false`: utilice este atributo cuando `NestingLevel` se establezca en `"none"`.  Cuando se utiliza CDC con fuentes que generan [transacciones con varios documentos](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction), el `ExtractDocId` parámetro **debe estar** establecido en. `true` Si este parámetro no está activado, la AWS DMS tarea fallará cuando detecte una transacción con varios documentos.  | 
|  `socketTimeoutMS`  |  Un entero mayor o igual a 0. Solo el atributo de conexión adicional (ECA).  |  Esta configuración está en unidades de milisegundos y configura el tiempo de espera de la conexión para los clientes de MongoDB. Si el valor es menor o igual a cero, se utiliza el valor predeterminado del cliente de MongoDB.  | 
|   `UseUpdateLookUp`   |  `true` `false`  |  Si es verdadero, durante los eventos de actualización de los CDC, AWS DMS copia todo el documento actualizado al objetivo. Cuando se establece en false, AWS DMS utiliza el comando de actualización de MongoDB para actualizar solo los campos modificados del documento en el destino.  | 
|   `ReplicateShardCollections`   |  `true` `false`  |  Si es verdadero, AWS DMS replica los datos en colecciones de fragmentos. AWS DMS solo usa esta configuración si el punto final de destino es un clúster elástico de DocumentDB. Cuando esta configuración es verdadera, tenga en cuenta lo siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.MongoDB.html)  | 
|  `useTransactionVerification`  |  `true` `false`  |  Si es `false`, desactiva la verificación entre el flujo de cambios y los oplog.   Puede omitir operaciones si se producen discrepancias entre los flujos de cambios y las entradas de oplog, ya que el comportamiento predeterminado de DMS es que la tarea falle en estos casos. Predeterminado: `true`.   | 
|  `useOplog`  |  `true` `false`  |  Si es `true`, permite que la tarea de DMS lea directamente del oplog en lugar de utilizar el flujo de cambios. Predeterminado: `false`.  | 

Si elige **Documento** como **modo de metadatos**, hay diferentes opciones disponibles. 

Si el punto de conexión de destino es DocumentDB, asegúrese de ejecutar la migración en **modo mocumento**. Además, modifique el punto de conexión de origen y seleccione la opción **\$1id como columna independiente**. Este es un requisito previo obligatorio si la carga de trabajo de MongoDB de origen incluye transacciones.

## Tipos de datos de origen para MongoDB
<a name="CHAP_Source.MongoDB.DataTypes"></a>

La migración de datos que utiliza MongoDB como fuente es AWS DMS compatible con la mayoría de los tipos de datos de MongoDB. En la siguiente tabla, puede encontrar los tipos de datos de origen de MongoDB que se admiten cuando se AWS DMS utiliza y el mapeo AWS DMS predeterminado a partir de los tipos de datos. Para obtener más información sobre los tipos de datos de MongoDB, consulte [BSON types](https://docs.mongodb.com/manual/reference/bson-types) en la documentación de MongoDB.

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte. [Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  Tipos de datos de MongoDB  |  AWS DMS tipos de datos  | 
| --- | --- | 
| Booleano | Bool | 
| Binario | BLOB | 
| Date | Date | 
| Marca temporal | Date | 
| Int | INT4 | 
| Largo | INT8 | 
| Doble | REAL8 | 
| Cadena (UTF-8) | CLOB | 
| Matriz | CLOB | 
| OID | Cadena | 
| REGEX | CLOB | 
| CODE | CLOB | 

# Uso de Amazon DocumentDB (compatible con MongoDB) como fuente para AWS DMS
<a name="CHAP_Source.DocumentDB"></a>

Para obtener información acerca de las versiones de Amazon DocumentDB (con compatibilidad con MongoDB) que AWS DMS admite como origen, consulte [Fuentes de AWS DMS](CHAP_Introduction.Sources.md).

 Con Amazon DocumentDB como origen, puede migrar datos de un clúster de Amazon DocumentDB a otro clúster de Amazon DocumentDB. También puede migrar datos de un clúster de Amazon DocumentDB a uno de los otros puntos de enlace de destino compatibles con. AWS DMS

Si es la primera vez que utiliza Amazon DocumentDB, tenga en cuenta los siguientes conceptos importantes para las bases de datos de Amazon DocumentDB:
+ Un registro en Amazon DocumentDB es un *documento*, una estructura de datos compuesta de pares de campo y valor. El valor de un campo puede incluir otros documentos, matrices y matrices de documentos. Un documento es más o menos equivalente a una fila en una tabla de base de datos relacional.
+ Una *recopilación* en Amazon DocumentDB es un grupo de documentos y es aproximadamente equivalente a una tabla de base de datos relacional.
+ Una *base de datos* de Amazon DocumentDB es un conjunto de recopilaciones y equivale aproximadamente a un esquema de una base de datos relacional.

AWS DMS admite dos modos de migración cuando se utiliza Amazon DocumentDB como fuente, modo documento y modo tabla. El modo de migración se especifica al crear el punto final de origen de Amazon DocumentDB en la AWS DMS consola, mediante la opción de **modo Metadata** o el atributo de conexión adicional. `nestingLevel` Después, puede encontrar una explicación sobre cómo la elección del modo de migración afecta al formato resultante de los datos de destino.

**Modo documento**  
En el *modo documento, *el documento JSON se migra tal cual. Eso significa que los datos del documento se consolidan en uno de dos elementos. Cuando se utiliza una base de datos relacional como destino, los datos son una sola columna denominada `_doc` en una tabla de destino. Cuando se utiliza una base de datos no relacional como destino, los datos son un único documento JSON. El modo documento es el modo predeterminado, que recomendamos al migrar a un destino de Amazon DocumentDB.  
Por ejemplo, tenga en cuenta los siguientes documentos en una recopilación de Amazon DocumentDB llamada `myCollection`.  

```
 db.myCollection.find()
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }
```
Después de migrar los datos a una tabla de base de datos relacional utilizando el modo documento, los datos se estructuran de la siguiente forma. Los campos de datos del documento se consolidan en la columna` _doc`.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.DocumentDB.html)
Si lo desea, puede establecer el atributo de conexión adicional `extractDocID` en `true` para crear otra columna denominada `"_id"` que actúe como clave principal. Si va a utilizar la captura de datos de cambios (CDC), establezca este parámetro en `true` excepto cuando utilice Amazon DocumentDB como destino.  
Cuando se utiliza CDC con fuentes que generan [transacciones con varios documentos](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction), el `ExtractDocId` parámetro **debe estar establecido en**. `true` Si este parámetro no está activado, la AWS DMS tarea fallará cuando detecte una transacción con varios documentos.  
Si agrega una nueva colección a la base de datos de origen, AWS DMS crea una nueva tabla de destino para la colección y replica todos los documentos. 

**Modo de tabla**  
En el *modo tabla, *AWS DMS transforma cada uno de los campos de nivel superior en un documento de Amazon DocumentDB en una columna en la tabla de destino. Si un campo está anidado, AWS DMS aplana los valores anidados en una sola columna. AWS DMS a continuación, agrega un campo clave y tipos de datos al conjunto de columnas de la tabla de destino.   
Para cada documento de Amazon DocumentDB, AWS DMS añada cada clave y tipo al conjunto de columnas de la tabla de destino. Por ejemplo, si utiliza el modo de tabla, AWS DMS migra el ejemplo anterior a la tabla siguiente.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.DocumentDB.html)
Los valores anidados se aplanan en una columna que contiene nombres de clave separados por puntos. La columna se nombra con la concatenación de los nombres de los campos reunidos, separados por puntos. Por ejemplo, AWS DMS migra un documento JSON con un campo de valores anidados, por ejemplo, `{"a" : {"b" : {"c": 1}}}` a una columna llamada `a.b.c.`  
Para crear las columnas de destino, AWS DMS escanea un número específico de documentos de Amazon DocumentDB y crea un conjunto de todos los campos y sus tipos. AWS DMS a continuación, utiliza este conjunto para crear las columnas de la tabla de destino. Si crea o modifica el punto de conexión de origen de Amazon DocumentDB mediante la consola, puede especificar el número de documentos que se van a analizar. El valor predeterminado es de 1000 documentos. Si usa el AWS CLI, puede usar el atributo de conexión adicional`docsToInvestigate`.  
En el modo tabla, AWS DMS gestiona los documentos y las colecciones de la siguiente manera:  
+ Cuando añada un documento a una colección existente, el documento se replica. Si hay campos que no existen en el destino, estos campos no se replican.
+ Al actualizar un documento, el documento actualizado se replican. Si hay campos que no existen en el destino, estos campos no se replican.
+ Se admite en toda su extensión la eliminación de documentos.
+ Cuando se añade una colección nueva, no se crea una tabla nueva en el destino si se efectúa mientras se desarrolla una tarea de CDC.
+ En la fase de captura de datos de cambio (CDC), AWS DMS no permite cambiar el nombre de una colección.

**Topics**
+ [Configuración de permisos para usar Amazon DocumentDB como origen](#CHAP_Source.DocumentDB.Permissions)
+ [Configuración de CDC para un clúster de Amazon DocumentDB](#CHAP_Source.DocumentDB.ConfigureCDC)
+ [Conexión a Amazon DocumentDB mediante TLS](#CHAP_Source.DocumentDB.TLS)
+ [Creación de un punto de conexión de origen de Amazon DocumentDB](#CHAP_Source.DocumentDB.ConfigureEndpoint)
+ [Segmentación de recopilaciones de Amazon DocumentDB y migración en paralelo](#CHAP_Source.DocumentDB.ParallelLoad)
+ [Migración de varias bases de datos cuando se utiliza Amazon DocumentDB como fuente de AWS DMS](#CHAP_Source.DocumentDB.Multidatabase)
+ [Limitaciones del uso de Amazon DocumentDB como fuente para AWS DMS](#CHAP_Source.DocumentDB.Limitations)
+ [Uso de la configuración de puntos de conexión con Amazon DocumentDB como origen](#CHAP_Source.DocumentDB.ECAs)
+ [Tipos de datos de origen de Amazon DocumentDB](#CHAP_Source.DocumentDB.DataTypes)

## Configuración de permisos para usar Amazon DocumentDB como origen
<a name="CHAP_Source.DocumentDB.Permissions"></a>

Al utilizar el código fuente de Amazon DocumentDB para una AWS DMS migración, puede crear una cuenta de usuario con privilegios de root. O bien, puede crear un usuario con permisos solo para la base de datos que se va a migrar. 

El código siguiente crea un usuario como la cuenta raíz.

```
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  })
```

Para Amazon DocumentDB 3.6, el código siguiente crea un usuario con privilegios mínimos en la base de datos que se va a migrar.

```
use db_name
db.createUser( 
    {
        user: "dms-user",
        pwd: "password",
        roles: [{ role: "read", db: "db_name" }]
    }
)
```

Para Amazon DocumentDB 4.0 y versiones posteriores, AWS DMS utiliza un flujo de cambios para toda la implementación. A continuación, el código siguiente crea un usuario con privilegios mínimos.

```
db.createUser( 
{ 
    user: "dms-user",
    pwd: "password",
    roles: [ { role: "readAnyDatabase", db: "admin" }] 
})
```

## Configuración de CDC para un clúster de Amazon DocumentDB
<a name="CHAP_Source.DocumentDB.ConfigureCDC"></a>

Para utilizar la replicación continua o la CDC con Amazon DocumentDB, AWS DMS necesita acceso a las secuencias de cambios del clúster de Amazon DocumentDB. Para obtener una descripción de la secuencia ordenada por tiempo de los eventos de actualización en las recopilaciones y bases de datos del clúster, consulte [Uso de flujos de cambios](https://docs.aws.amazon.com/documentdb/latest/developerguide/change_streams.html) en la *Guía para desarrolladores de Amazon DocumentDB*. 

Autentíquese en el clúster de Amazon DocumentDB mediante el shell de MongoDB. A continuación, ejecute el siguiente comando para habilitar los flujos de cambios.

```
db.adminCommand({modifyChangeStreams: 1,
    database: "DB_NAME",
    collection: "", 
    enable: true});
```

Este enfoque habilita el flujo de cambios para todas las recopilaciones de la base de datos. Una vez habilitados los flujos de cambios, puede crear una tarea de migración que migre los datos existentes y, al mismo tiempo, replique los cambios en curso. AWS DMS sigue capturando y aplicando los cambios incluso después de cargar los datos masivos. Con el tiempo, las bases de datos de origen y de destino se sincronizarán, por lo que el tiempo de inactividad de la migración será mínimo.

**nota**  
AWS DMS utiliza el registro de operaciones (oplog) para capturar los cambios durante la replicación en curso. Si Amazon DocumentDB vacía los registros del oplog antes de leerlos, las tareas AWS DMS fallarán. Recomendamos ajustar el tamaño de oplog para retener los cambios durante al menos 24 horas.

## Conexión a Amazon DocumentDB mediante TLS
<a name="CHAP_Source.DocumentDB.TLS"></a>

De forma predeterminada, un clúster de Amazon DocumentDB recién creado solo acepta conexiones seguras mediante la seguridad de la capa de transporte (TLS). Cuando TLS está habilitado, cada conexión a Amazon DocumentDB requiere una clave pública.

Puede recuperar la clave pública de Amazon DocumentDB descargando el archivo `rds-combined-ca-bundle.pem` desde un bucket AWS de Amazon S3 alojado. Para obtener más información acerca de la descarga de este archivo, consulte [Cifrado de conexiones mediante TLS](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) en la *Guía para desarrolladores de Amazon DocumentDB.* 

Tras descargar el `rds-combined-ca-bundle.pem` archivo, puede importar la clave pública que contiene. AWS DMS En los pasos siguientes, se describe cómo hacerlo así.

**Para importar la clave pública mediante la AWS DMS consola**

1. Inicie sesión en Consola de administración de AWS y elija AWS DMS.

1. En el panel de navegación, elija **Certificates**.

1. Seleccione **Importar certificado**. Aparece la página **Importar nuevo certificado de entidad de certificación**.

1. En la sección **Configuración de certificado**, realice una de las siguientes acciones:
   + Para **Identificador del certificado**, escriba un nombre único para el certificado, como `docdb-cert`.
   + Elija **Elegir archivo**, vaya a la ubicación en la que guardó el archivo `rds-combined-ca-bundle.pem` y selecciónelo.

1. Elija **Add new CA certificate (Agregar un nuevo certificado de entidad de certificación)**.

 AWS CLI En el siguiente ejemplo, se utiliza el AWS DMS `import-certificate` comando para importar el `rds-combined-ca-bundle.pem` archivo de clave pública.

```
aws dms import-certificate \
    --certificate-identifier docdb-cert \
    --certificate-pem file://./rds-combined-ca-bundle.pem
```

## Creación de un punto de conexión de origen de Amazon DocumentDB
<a name="CHAP_Source.DocumentDB.ConfigureEndpoint"></a>

Puede crear un punto de conexión de origen de Amazon DocumentDB mediante la consola o la AWS CLI. Utilice el siguiente procedimiento con la consola.

**Para configurar un punto final de origen de Amazon DocumentDB mediante la consola AWS DMS**

1. Inicie sesión en Consola de administración de AWS y elija AWS DMS.

1. Elija **Puntos de conexión** en el panel de navegación y, a continuación, elija **Crear punto de conexión**.

1. Para **identificador de punto de conexión**, proporcione un nombre que le ayude a identificarlo fácilmente, por ejemplo `docdb-source`.

1. Para **Motor de origen**, elija **Amazon DocumentDB (con compatibilidad con MongoDB)**.

1. Para **Nombre del servidor**, ingrese el nombre del servidor en el que reside el punto de conexión de la base de datos de Amazon DocumentDB. Por ejemplo, puede ingresar el nombre de DNS público de la instancia de Amazon EC2, como `democluster.cluster-cjf6q8nxfefi.us-east-2.docdb.amazonaws.com`.

1. Para **Puerto**, escriba 27 017.

1. En **SSL mode (Modo de SSL)**, elija **verify-full**. Si ha desactivado SSL en el clúster de Amazon DocumentDB, puede omitir este paso.

1. Para el **certificado de entidad de certificación**, elija el certificado de Amazon DocumentDB, `rds-combined-ca-bundle.pem`. Para obtener instrucciones sobre cómo agregar este certificado, consulte [Conexión a Amazon DocumentDB mediante TLS](#CHAP_Source.DocumentDB.TLS).

1. Para **Nombre de base de datos**, escriba el nombre de la base de datos que se va a migrar.

Utilice el procedimiento siguiente con la CLI.

**Para configurar un punto final de origen de Amazon DocumentDB mediante el AWS CLI**
+ Ejecute el siguiente AWS DMS `create-endpoint` comando para configurar un punto final de origen de Amazon DocumentDB y sustituir los marcadores de posición por sus propios valores.

  ```
  aws dms create-endpoint \
             --endpoint-identifier a_memorable_name \
             --endpoint-type source \
             --engine-name docdb \
             --username value \
             --password value \
             --server-name servername_where_database_endpoint_resides \
             --port 27017 \
             --database-name name_of_endpoint_database
  ```

## Segmentación de recopilaciones de Amazon DocumentDB y migración en paralelo
<a name="CHAP_Source.DocumentDB.ParallelLoad"></a>

Para mejorar el rendimiento de una tarea de migración, los puntos de conexión de origen de Amazon DocumentDB admiten dos opciones de la característica de carga completa paralela en la asignación de tablas. En otras palabras, puede migrar una recopilación en paralelo mediante las opciones de segmentación automática o de segmentación por rango de la asignación de tablas para una carga completa paralela en la configuración de JSON. Las opciones de segmentación automática le permiten especificar los criterios para segmentar automáticamente la fuente AWS DMS para la migración en cada subproceso. Las opciones de segmentación por rango permiten indicar AWS DMS el rango específico de cada segmento para que el DMS migre en cada subproceso. Para obtener más información sobre estas configuraciones, consulte [Reglas y operaciones de configuración de tablas y recopilaciones](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

### Migración de una base de datos de Amazon DocumentDB en paralelo mediante rangos de segmentación automática
<a name="CHAP_Source.DocumentDB.ParallelLoad.AutoPartitioned"></a>

Puede migrar los documentos en paralelo si especifica los criterios para que AWS DMS particione (segmente) de forma automática los datos de cada subproceso, especialmente el número de documentos que se van a migrar por subproceso. Con este enfoque, AWS DMS intenta optimizar los límites de los segmentos para obtener el máximo rendimiento por subproceso.

Puede especificar los criterios de segmentación mediante las siguientes opciones de configuración de tablas en la asignación de tablas:


|  Opción de configuración de tabla  |  Description (Descripción)  | 
| --- | --- | 
|  `"type"`  |  (Obligatorio) Establezca `"partitions-auto"` para Amazon DocumentDB como origen.  | 
|  `"number-of-partitions"`  |  (Opcional) Número total de particiones (segmentos) utilizadas para la migración. El valor predeterminado es 16.  | 
|  `"collection-count-from-metadata"`  |  (Opcional) Si se establece en`true`, AWS DMS utiliza un recuento de recopilaciones estimado para determinar el número de particiones. Si se establece en`false`, AWS DMS utiliza el recuento de colecciones real. El valor predeterminado es `true`.  | 
|  `"max-records-skip-per-page"`  |  (Opcional) El número de registros que se van a omitir a la vez al determinar los límites de cada partición. AWS DMS utiliza un método de omisión paginada para determinar el límite mínimo de una partición. El valor predeterminado es 10 000. Si se establece un valor relativamente alto es posible que se produzcan tiempos de espera del cursor y errores en las tareas. Si se establece un valor relativamente bajo, se realizan más operaciones por página y se ralentiza la carga completa.   | 
|  `"batch-size"`  |  (Opcional) Limita el número de documentos que se devuelven en un lote. Cada lote requiere un viaje de ida y vuelta al servidor. Si el tamaño del lote es cero (0), el cursor utiliza el tamaño máximo de lote definido por el servidor. El valor predeterminado es 0.  | 

En el siguiente ejemplo, se muestra una tabla de asignación para la segmentación automática.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "table-settings",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "parallel-load": {
                "type": "partitions-auto",
                "number-of-partitions": 5,
                "collection-count-from-metadata": "true",
                "max-records-skip-per-page": 1000000,
                "batch-size": 50000
            }
        }
    ]
}
```

La segmentación automática tiene la siguiente limitación. La migración de cada segmento obtiene el recuento de la recopilación y el `_id` mínimo para la recopilación de forma individual. A continuación, utiliza un salto paginado para calcular el límite mínimo de ese segmento. Por lo tanto, asegúrese de que el valor de `_id` mínimo de cada recopilación permanezca constante hasta que se calculen todos los límites de los segmentos de la recopilación. Si cambia el valor de `_id` mínimo de una recopilación durante el cálculo del límite del segmento, esto podría provocar la pérdida de datos o errores en las filas duplicadas.

### Migración de una base de datos de Amazon DocumentDB en paralelo mediante rangos de segmentos específicos
<a name="CHAP_Source.DocumentDB.ParallelLoad.Ranges"></a>

El siguiente ejemplo muestra una recopilación de Amazon DocumentDB que tiene siete elementos y `_id` como la clave principal.

![\[Recopilación de Amazon DocumentDB con siete artículos.\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/images/datarep-docdb-collection.png)


Para dividir la recopilación en tres segmentos y migrar en paralelo, puede agregar reglas de asignación de tablas a la tarea de migración, como se muestra en el siguiente ejemplo de JSON.

```
{ // Task table mappings:
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "rule-action": "include"
    }, // "selection" :"rule-type"
    {
      "rule-type": "table-settings",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "parallel-load": {
        "type": "ranges",
        "columns": [
           "_id",
           "num"
        ],
        "boundaries": [
          // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79
          // and num less-than-or-equal-to 2.
          [
             "5f805c97873173399a278d79",
             "2"
          ],
          // Second segment selects documents with _id > 5f805c97873173399a278d79 and
          // _id less-than-or-equal-to 5f805cc5873173399a278d7c and
          // num > 2 and num less-than-or-equal-to 5.
          [
             "5f805cc5873173399a278d7c",
             "5"
          ]                                   
          // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c.
        ] // :"boundaries"
      } // :"parallel-load"
    } // "table-settings" :"rule-type"
  ] // :"rules"
} // :Task table mappings
```

Esa definición de asignación de tablas divide la recopilación de orígenes en tres segmentos y migra en paralelo. A continuación, se muestran límites de segmentación.

```
Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records)
Data with _id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 and not in (_id less-than-or-equal-to  "5f805c97873173399a278d79" and num less-than-or-equal-to 2) (3 records)
Data not in (_id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5) (2 records)
```

Una vez finalizada la tarea de migración, puede comprobar en los registros de tareas que las tablas se han cargado en paralelo, como se muestra en el siguiente ejemplo. También puede comprobar la cláusula `find` de Amazon DocumentDB utilizada para descargar cada segmento de la tabla de origen.

```
[TASK_MANAGER    ] I:  Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86  (replicationtask_util.c:752)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is initialized.   (mongodb_unload.c:157)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } }  (mongodb_unload.c:328)

[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TASK_MANAGER    ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752)
 
[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) 

[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328)
 
[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TARGET_LOAD     ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480.

[TASK_MANAGER    ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.
```

Actualmente, AWS DMS admite los siguientes tipos de datos de Amazon DocumentDB como columna de clave de segmento:
+ Double
+ Cadena
+ ObjectId
+ Entero de 32 bits
+ Entero de 64 bits

## Migración de varias bases de datos cuando se utiliza Amazon DocumentDB como fuente de AWS DMS
<a name="CHAP_Source.DocumentDB.Multidatabase"></a>

AWS DMS las versiones 3.4.5 y superiores admiten la migración de varias bases de datos en una sola tarea solo para las versiones 4.0 y posteriores de Amazon DocumentDB. Si desea migrar varias bases de datos, haga lo siguiente:

1. Al crear el punto de conexión de origen de Amazon DocumentDB:
   + En el formulario AWS DMS, deje el Consola de administración de AWS **nombre de la base de datos** vacío en la sección **Configuración de puntos de conexión de** la página **Crear** puntos de conexión.
   + En AWS Command Line Interface (AWS CLI), asigne un valor de cadena vacío al **DatabaseName**parámetro del **documento DBSettings** que especifique para la **CreateEndpoint**acción.

1. Para cada base de datos que desee migrar desde este punto de conexión de origen de Amazon DocumentDB, especifique el nombre de cada base de datos como nombre de un esquema en la asignación de tabla de la tarea mediante la entrada guiada de la consola o directamente en JSON. Para obtener más información sobre la entrada guiada, consulte la descripción de [Especificación de selección de tablas y reglas de transformaciones desde la consola](CHAP_Tasks.CustomizingTasks.TableMapping.Console.md). Para obtener más información sobre el archivo JSON, consulte [Reglas y acciones de selección](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.md).

Por ejemplo, es posible que especifique el siguiente JSON para migrar tres bases de datos de Amazon DocumentDB.

**Example Migrar todas las tablas de un esquema**  
El siguiente JSON migra todas las tablas de base de datos de `Customers`, `Orders` y `Suppliers` del punto de conexión de origen al punto de conexión de destino.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Customers",
                "table-name": "%"
            },
            "object-locator": {
                "schema-name": "Orders",
                "table-name": "%"
            },
            "object-locator": {
                "schema-name": "Inventory",
                "table-name": "%"
            },
            "rule-action": "include"
        }
    ]
}
```

## Limitaciones del uso de Amazon DocumentDB como fuente para AWS DMS
<a name="CHAP_Source.DocumentDB.Limitations"></a>

Las siguientes son limitaciones a la hora de utilizar Amazon DocumentDB como fuente para: AWS DMS
+ Cuando la `_id` opción se establece como una columna independiente, la cadena del identificador no puede superar los 200 caracteres.
+ Las claves de ID de objeto y de tipo de matriz se convierten en columnas que tienen los prefijos `oid` y `array` en el modo de tabla.

  Internamente, se hace referencia a estas columnas con los nombres con prefijos. Si utiliza reglas de transformación AWS DMS que hacen referencia a estas columnas, asegúrese de especificar la columna con prefijo. Por ejemplo, especifique `${oid__id}` y no `${_id}` o `${array__addresses}` y no `${_addresses}`. 
+  Los nombres de recopilaciones y claves no pueden incluir el símbolo del dólar (\$1). 
+ El modo de tabla y el modo de documento tienen las limitaciones tratadas con anterioridad.
+ La migración en paralelo mediante la segmentación automática tiene las limitaciones descritas anteriormente.
+ Un origen de Amazon DocumentDB (compatible con MongoDB) no admite el uso de una marca temporal específica como punto de partida para la captura de datos de cambios (CDC). Una tarea de replicación continua comienza a capturar los cambios independientemente de la marca temporal.
+ AWS DMS no admite documentos en los que el nivel de anidación sea superior a 97 para AWS DMS versiones anteriores a la 3.5.2.
+ DocumentDB no admite filtros de origen.
+ AWS DMS no admite la replicación CDC (captura de datos de cambios) para DocumentDB como fuente en modo de clúster elástico.

## Uso de la configuración de puntos de conexión con Amazon DocumentDB como origen
<a name="CHAP_Source.DocumentDB.ECAs"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de origen de Amazon DocumentDB de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de origen mediante la AWS DMS consola o mediante el `create-endpoint` comando de [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--doc-db-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Amazon DocumentDB como origen.


| Nombre de atributo | Valores válidos | Valor predeterminado y descripción | 
| --- | --- | --- | 
|   `NestingLevel`   |  `"none"` `"one"`  |  `"none"`: especifique `"none"` para utilizar el modo de documento. Especifique `"one"` para utilizar el modo de tabla.  | 
|   `ExtractDocID`   |  `true` `false`  |  `false`: utilice este atributo cuando `NestingLevel` se establezca en `"none"`.  Cuando se utiliza CDC con fuentes que generan [transacciones con varios documentos](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction), el `ExtractDocId` parámetro **debe estar** `true` establecido en. Si este parámetro no está activado, la AWS DMS tarea fallará cuando detecte una transacción con varios documentos.  | 
|   `DocsToInvestigate`   |  Un número entero positivo mayor que `0`.  |  `1000`: utilice este atributo cuando `NestingLevel` se establezca en `"one"`.   | 
|   `ReplicateShardCollections `   |  `true` `false`  |  Si es verdadero, AWS DMS replica los datos en colecciones fragmentadas. AWS DMS solo usa esta configuración si el punto final de destino es un clúster elástico de DocumentDB. Cuando esta configuración es verdadera, tenga en cuenta lo siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.DocumentDB.html)  | 

## Tipos de datos de origen de Amazon DocumentDB
<a name="CHAP_Source.DocumentDB.DataTypes"></a>

En la siguiente tabla, podrá encontrar los tipos de datos de origen de Amazon DocumentDB que se admiten cuando se utiliza AWS DMS. También puede encontrar el mapeo predeterminado a partir de AWS DMS los tipos de datos en esta tabla. Para obtener más información sobre tipos de datos, consulte [Tipos de BSON](https://docs.mongodb.com/manual/reference/bson-types) en la documentación de MongoDB.

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Tipos de datos de Amazon DocumentDB  |  AWS DMS tipos de datos  | 
| --- | --- | 
| Booleano | Bool | 
| Binario | BLOB | 
| Date | Date | 
| Marca temporal | Date | 
| Int | INT4 | 
| Largo | INT8 | 
| Doble | REAL8 | 
| Cadena (UTF-8) | CLOB | 
| Matriz | CLOB | 
| OID | Cadena | 

# Uso de Amazon S3 como fuente de AWS DMS
<a name="CHAP_Source.S3"></a>

Puede migrar datos desde un bucket de Amazon S3 mediante AWS DMS. Para ello, proporcione acceso a un bucket de Amazon S3 que contenga uno o varios archivos de datos. En ese bucket de S3 incluya un archivo JSON que describa el mapeo entre los datos y las tablas de la base de datos de los datos de esos archivos.

Los archivos de datos de origen deben estar en el bucket de Amazon S3 antes de que comience la carga completa. El nombre del bucket se especifica mediante el parámetro `bucketName`. 

Los archivos de datos de origen pueden tener los siguientes formatos:
+ Valores separados por comas (.csv)
+ Parquet (versión 3.5.3 de DMS y posteriores). Para obtener más información sobre el uso de archivos con formato Parquet, consulte [Uso de archivos con formato Parquet en Amazon S3 como fuente para AWS DMS](#CHAP_Source.S3.Parquet).

En el caso de los archivos de datos de origen en formato de valores separados por comas (.csv), asígneles un nombre con la convención de nomenclatura siguiente. En esta convención, *`schemaName`* es el esquema de origen y *`tableName`* es el nombre de una tabla dentro de dicho esquema.

```
/schemaName/tableName/LOAD001.csv
/schemaName/tableName/LOAD002.csv
/schemaName/tableName/LOAD003.csv
...
```

 Por ejemplo, supongamos que los archivos de datos están en `amzn-s3-demo-bucket`, en la siguiente ruta de Amazon S3.

```
s3://amzn-s3-demo-bucket/hr/employee
```

En el momento de la carga, AWS DMS asume que el nombre del esquema de origen es `hr` y que el nombre de la tabla de origen es`employee`.

Además `bucketName` (obligatorio), puede proporcionar opcionalmente un `bucketFolder` parámetro para especificar dónde AWS DMS deben buscarse los archivos de datos en el bucket de Amazon S3. Continuando con el ejemplo anterior, si se establece `bucketFolder` en`sourcedata`, AWS DMS lee los archivos de datos en la siguiente ruta.

```
s3://amzn-s3-demo-bucket/sourcedata/hr/employee
```

Puede especificar el delimitador de columnas, el delimitador de filas, el indicador de valor nulo y otros parámetros mediante los atributos de conexión adicionales. Para obtener más información, consulte [Configuración de puntos de conexión para Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.Configuring).

Puede especificar el propietario de un bucket y evitar saqueos mediante la configuración del punto de conexión de Amazon S3 `ExpectedBucketOwner`, como se muestra a continuación. A continuación, cuando realice una solicitud para probar una conexión o realizar una migración, S3 comprobará el ID de cuenta del propietario del bucket con el parámetro especificado.

```
--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'
```

**Topics**
+ [Definir tablas externas para Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.ExternalTableDef)
+ [Uso de CDC con Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.CDC)
+ [Requisitos previos al utilizar Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.Prerequisites)
+ [Limitaciones al usar Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.Limitations)
+ [Configuración de puntos de conexión para Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.Configuring)
+ [Tipos de datos de origen de Amazon S3](#CHAP_Source.S3.DataTypes)
+ [Uso de archivos con formato Parquet en Amazon S3 como fuente para AWS DMS](#CHAP_Source.S3.Parquet)

## Definir tablas externas para Amazon S3 como fuente de AWS DMS
<a name="CHAP_Source.S3.ExternalTableDef"></a>

Además de los archivos de datos, debe indicar también una definición de tabla externa. Una *definición de tabla externa* es un documento JSON que describe cómo se AWS DMS deben interpretar los datos de Amazon S3. El tamaño máximo de este documento es de 2 MB. Si crea un punto final de origen mediante la consola AWS DMS de administración, puede introducir el JSON directamente en el cuadro de mapeo de tablas. Si utilizas AWS Command Line Interface (AWS CLI) o la AWS DMS API para realizar migraciones, puedes crear un archivo JSON para especificar la definición de la tabla externa.

Supongamos que tiene un archivo de datos que contiene la información siguiente.

```
101,Smith,Bob,2014-06-04,New York
102,Smith,Bob,2015-10-08,Los Angeles
103,Smith,Bob,2017-03-13,Dallas
104,Smith,Bob,2017-03-13,Dallas
```

A continuación se muestra un ejemplo de definición de tabla externa para estos datos.

```
{
    "TableCount": "1",
    "Tables": [
        {
            "TableName": "employee",
            "TablePath": "hr/employee/",
            "TableOwner": "hr",
            "TableColumns": [
                {
                    "ColumnName": "Id",
                    "ColumnType": "INT8",
                    "ColumnNullable": "false",
                    "ColumnIsPk": "true"
                },
                {
                    "ColumnName": "LastName",
                    "ColumnType": "STRING",
                    "ColumnLength": "20"
                },
                {
                    "ColumnName": "FirstName",
                    "ColumnType": "STRING",
                    "ColumnLength": "30"
                },
                {
                    "ColumnName": "HireDate",
                    "ColumnType": "DATETIME"
                },
                {
                    "ColumnName": "OfficeLocation",
                    "ColumnType": "STRING",
                    "ColumnLength": "20"
                }
            ],
            "TableColumnsTotal": "5"
        }
    ]
}
```

Los elementos de este documento JSON son los siguientes:

`TableCount`: el número de tablas de origen. En este ejemplo, solo hay una tabla.

`Tables`: una matriz que consta de un mapa JSON por tabla de origen. En este ejemplo, solo hay un mapa. Cada mapa está formado por los siguientes elementos:
+ `TableName`: el nombre de la tabla de origen.
+ `TablePath`: la ruta del bucket de Amazon S3 donde AWS DMS puede encontrar el archivo de carga de datos completa. Si se especifica un valor `bucketFolder`, el valor se anexa delante de la ruta.
+ `TableOwner`: nombre del esquema para esta tabla.
+ `TableColumns`: una matriz de uno o varios mapas, en la que cada mapa describe una columna de la tabla de origen:
  + `ColumnName`: el nombre de una columna de la tabla de origen.
  + `ColumnType`: el tipo de datos de la columna. Para consultar los tipos de datos válidos, vea [Tipos de datos de origen de Amazon S3](#CHAP_Source.S3.DataTypes).
  + `ColumnLength`: el número de bytes de esta columna. La longitud máxima de las columnas está limitada a 2147483647 bytes (2.047 MegaBytes), ya que una fuente de S3 no admite el modo FULL LOB. `ColumnLength`es válido para los siguientes tipos de datos:
    + BYTE
    + STRING
  + `ColumnNullable`: valor booleano que es `true` si esta columna puede contener valores NULL (predeterminado=`false`).
  + `ColumnIsPk`: un valor booleano que es `true` si esta columna es parte de la clave principal (predeterminado=`false`).
  + `ColumnDateFormat`: el formato de fecha de entrada de una columna con los tipos DATE, TIME y DATETIME, y se utiliza para analizar una cadena de datos y convertirla en un objeto de fecha. Los valores posibles son:

    ```
    - YYYY-MM-dd HH:mm:ss
    - YYYY-MM-dd HH:mm:ss.F
    - YYYY/MM/dd HH:mm:ss
    - YYYY/MM/dd HH:mm:ss.F
    - MM/dd/YYYY HH:mm:ss
    - MM/dd/YYYY HH:mm:ss.F
    - YYYYMMdd HH:mm:ss
    - YYYYMMdd HH:mm:ss.F
    ```
+ `TableColumnsTotal`: el número total de columnas. Este número debe coincidir con el número de elementos de la matriz `TableColumns`.

Si no especifica lo contrario, se AWS DMS supone que `ColumnLength` es cero.

**nota**  
En las versiones compatibles de AWS DMS, los datos de origen de S3 también pueden contener una columna de operaciones opcional como primera columna antes del valor de la `TableName` columna. Esta columna de operación identifica la operación (`INSERT`) utilizada para migrar los datos a un punto de enlace de destino S3 durante una carga completa.   
Si está presente, el valor de esta columna es el carácter inicial de la `INSERT`palabra clave de operación (`I`). Si se especifica, esta columna generalmente indica que el origen S3 fue creado por DMS como un destino S3 durante una migración anterior.   
En versiones anteriores a 3.4.2 de DMS, esta columna no estaba presente en los datos de origen de S3 creados a partir de una carga completa de DMS anterior. Agregar esta columna a los datos de destino S3 permite que el formato de todas las filas escritas en el objetivo S3 sea coherente, ya sea que se escriban durante una carga completa o durante una carga CDC. Para obtener más información acerca de las opciones para el formateo de datos de destino de S3, consulte [Indicar operaciones de base de datos de origen en datos de S3 migrados](CHAP_Target.S3.md#CHAP_Target.S3.Configuring.InsertOps).

Para una columna de tipo NUMERIC, especifique la precisión y la escala. *Precisión* es el número total de dígitos de un número y *escala* es el número de dígitos situados a la derecha de la coma decimal. Utilice los elementos `ColumnPrecision` y `ColumnScale` para esto, tal y como se muestra a continuación.

```
...
    {
        "ColumnName": "HourlyRate",
        "ColumnType": "NUMERIC",
        "ColumnPrecision": "5"
        "ColumnScale": "2"
    }
...
```

Para una columna del tipo DATETIME con datos que contienen fracciones de segundos, especifique la escala. La *escala* es el número de dígitos de las fracciones de segundo y puede oscilar entre 0 y 9. Utilice el elemento de `ColumnScale` para esto, tal y como se muestra a continuación.

```
...
{
      "ColumnName": "HireDate",
      "ColumnType": "DATETIME",
      "ColumnScale": "3"
}
...
```

Si no especifica lo contrario, AWS DMS asume que `ColumnScale` es cero y trunca las fracciones de segundo.

## Uso de CDC con Amazon S3 como fuente de AWS DMS
<a name="CHAP_Source.S3.CDC"></a>

Después de AWS DMS realizar una carga de datos completa, puede replicar opcionalmente los cambios de datos en el punto final de destino. Para ello, debe cargar archivos de captura de datos de cambios (archivos CDC) en su bucket de Amazon S3. AWS DMS lee estos archivos CDC cuando los carga y, a continuación, aplica los cambios en el punto final de destino. 

Las archivos CDC se denominan de la forma siguiente:

```
CDC00001.csv
CDC00002.csv
CDC00003.csv
...
```

**nota**  
Para poder replicar archivos de CDC correctamente en la carpeta de datos de cambios, cárguelos por orden léxico (secuencial). Por ejemplo, cargue el archivo CDC00002 .csv antes del archivo CDC00003 .csv. De lo contrario, CDC00002 .csv se omite y no se replica si lo cargas después de .csv. CDC00003 Sin embargo, el archivo CDC00004 .csv se replica correctamente si se carga después de .csv. CDC00003

Para indicar dónde AWS DMS puede encontrar los archivos, especifique el parámetro. `cdcPath` Prosiguiendo con el ejemplo anterior, si establece `cdcPath` en `changedata`, entonces AWS DMS leerá los archivos de CDC en la ruta siguiente.

```
s3://amzn-s3-demo-bucket/changedata
```

Si establece `cdcPath` en `changedata` y `bucketFolder` en `myFolder`, AWS DMS lee los archivos CDC en la siguiente ruta.

```
s3://amzn-s3-demo-bucket/myFolder/changedata
```

Los registros de un archivo CDC se formatean de la siguiente manera:
+ Operación: la operación de cambio que realizar: `INSERT` o `I`, `UPDATE` o `U` o `DELETE` o `D`. Estos valores de palabras clave y caracteres no distinguen entre mayúsculas y minúsculas.
**nota**  
En AWS DMS las versiones compatibles, AWS DMS puede identificar la operación a realizar para cada registro de carga de dos maneras. AWS DMS puede hacerlo a partir del valor de la palabra clave del registro (por ejemplo,`INSERT`) o desde el carácter inicial de la palabra clave (por ejemplo,`I`). En versiones anteriores, AWS DMS reconocía la operación de carga solo a partir del valor completo de la palabra clave.   
En versiones anteriores de AWS DMS, el valor completo de la palabra clave se escribía para registrar los datos de los CDC. Además, las versiones anteriores escribieron el valor de la operación en cualquier destino de S3 utilizando solo la inicial de la palabra clave.   
Reconocer ambos formatos AWS DMS permite gestionar la operación independientemente de cómo se escriba la columna de operaciones para crear los datos de origen de S3. Este enfoque admite el uso de datos de destino de S3 como origen para una migración posterior. Con este enfoque, no necesita cambiar el formato de ningún valor inicial de palabra clave que aparezca en la columna de operación de la fuente S3 posterior.
+ Nombre de tabla: el nombre de la tabla de origen.
+ Nombre de esquema: el nombre del esquema de origen.
+ Datos: una o varias columnas que representan los datos que se van a cambiar.

A continuación se muestra un ejemplo de un archivo CDC para una tabla con el nombre `employee`.

```
INSERT,employee,hr,101,Smith,Bob,2014-06-04,New York
UPDATE,employee,hr,101,Smith,Bob,2015-10-08,Los Angeles
UPDATE,employee,hr,101,Smith,Bob,2017-03-13,Dallas
DELETE,employee,hr,101,Smith,Bob,2017-03-13,Dallas
```

## Requisitos previos al utilizar Amazon S3 como fuente de AWS DMS
<a name="CHAP_Source.S3.Prerequisites"></a>

Para utilizar Amazon S3 como fuente AWS DMS, el bucket de S3 de origen debe estar en la misma AWS región que la instancia de replicación de DMS que migra los datos. Además, la cuenta de AWS que utiliza para la migración debe tener acceso de lectura al bucket de origen. Para la AWS DMS versión 3.4.7 y versiones posteriores, el DMS debe acceder al bucket de origen a través de un punto final de VPC o una ruta pública. Para obtener información sobre los puntos de conexión de VPC, consulte [Configuración de puntos finales de VPC para AWS DMS](CHAP_VPC_Endpoints.md).

El rol AWS Identity and Access Management (IAM) asignado a la cuenta de usuario utilizada para crear la tarea de migración debe tener el siguiente conjunto de permisos.

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

****  

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

------

El rol AWS Identity and Access Management (IAM) asignado a la cuenta de usuario utilizada para crear la tarea de migración debe tener el siguiente conjunto de permisos si el control de versiones está habilitado en el bucket de Amazon S3.

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

****  

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

------

## Limitaciones al usar Amazon S3 como fuente de AWS DMS
<a name="CHAP_Source.S3.Limitations"></a>

Las siguientes limitaciones se aplican cuando se utiliza Amazon S3 como origen:
+ No habilite el control de versiones para S3. Si necesita el control de versiones de S3, utilice las políticas de ciclo de vida para eliminar activamente las versiones antiguas. De lo contrario, es posible que se produzcan errores en la conexión de las pruebas de punto de conexión debido al tiempo de espera de una llamada a `list-object` de S3. Para crear una política de ciclo de vida para un bucket de S3, consulte [Administración del ciclo de vida del almacenamiento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Para eliminar una versión de un objeto de S3, consulte [Eliminación de versiones de objetos de un bucket con control de versiones habilitado](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ En las versiones 3.4.7 y superiores se admite un bucket S3 habilitado para VPC (VPC de puerta de enlace).
+ MySQL convierte el tipo de datos `time` en `string`. Para ver los valores de los tipos de datos `time` en MySQL, defina la columna de la tabla de destino como `string` y establezca la configuración **Modo de preparación de la tabla de destino** de la tarea en **Truncar**.
+ AWS DMS utiliza el tipo de `BYTE` datos internamente para los datos de ambos `BYTE` tipos de `BYTES` datos.
+ Los puntos de conexión de origen de S3 no admiten la característica de recarga de tablas de DMS.
+ AWS DMS no admite el modo LOB completo con Amazon S3 como fuente.

Las siguientes limitaciones se aplican al usar archivos de formato Parquet en Amazon S3 como origen:
+ Las fechas en formato `MMYYYYDD` o `DDMMYYYY` no son compatibles con la característica de particionamiento de fechas de Parquet de S3 como origen.

## Configuración de puntos de conexión para Amazon S3 como fuente de AWS DMS
<a name="CHAP_Source.S3.Configuring"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de origen de Amazon S3 de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de origen mediante la AWS DMS consola o mediante el `create-endpoint` comando incluido [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)en la sintaxis `--s3-settings '{"EndpointSetting": "value", ...}'` JSON.

**nota**  
AWS DMS de forma predeterminada, es una conexión segura al punto de conexión Amazon S3 sin necesidad de especificar el modo o el certificado SSL.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Amazon S3 como origen.


| **Opción** | **Descripción** | 
| --- | --- | 
| BucketFolder |  (Opcional) Nombre de carpeta en el bucket de S3. Si se proporciona este atributo, los archivos de datos de origen y los archivos de CDC se leen desde la ruta `s3://amzn-s3-demo-bucket/bucketFolder/schemaName/tableName/` y `s3://amzn-s3-demo-bucket/bucketFolder/` respectivamente. Si no se especifica este atributo, la ruta utilizada es `schemaName/tableName/`.  `'{"BucketFolder": "sourceData"}'`  | 
| BucketName |  Nombre del bucket de S3. `'{"BucketName": "amzn-s3-demo-bucket"}'`  | 
| CdcPath | La ubicación de los archivos de CDC. Este atributo es obligatorio si una tarea captura datos de cambios; de lo contrario, es opcional. Si CdcPath está presente, AWS DMS lee los archivos CDC de esta ruta y replica los cambios de datos en el punto final de destino. Para obtener más información, consulte [Uso de CDC con Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.CDC). `'{"CdcPath": "changeData"}'`  | 
| CsvDelimiter |  Delimitador utilizado para separar columnas en los archivos de origen. El valor predeterminado es una coma. Ejemplo: `'{"CsvDelimiter": ","}'`  | 
| CsvNullValue |  Cadena definida por el usuario que se AWS DMS considera nula cuando se lee desde la fuente. El valor predeterminado es una cadena vacía. Si no establece este parámetro, AWS DMS trata una cadena vacía como un valor nulo. Si establece este parámetro en una cadena como «\$1 N», AWS DMS trata esta cadena como un valor nulo y trata las cadenas vacías como un valor de cadena vacío.  | 
| CsvRowDelimiter |  Delimitador utilizado para separar filas en los archivos de origen. El valor predeterminado es una nueva línea (`\n`). `'{"CsvRowDelimiter": "\n"}'`  | 
| DataFormat |  Establezca este valor en `Parquet` para leer los datos en formato Parquet. `'{"DataFormat": "Parquet"}'`  | 
| IgnoreHeaderRows |  Si este valor se establece en 1, AWS DMS ignora el encabezado de la primera fila de un archivo.csv. Un valor de 1 habilita la característica, un valor de 0 deshabilita la característica. El valor predeterminado es 0. `'{"IgnoreHeaderRows": 1}'`  | 
| Rfc4180 |  Cuando este valor se establece en `true` o `y`, las comillas dobles de inicio tienen que ir seguidas de comillas dobles finales. Este formato cumple con RFC 4180. Cuando este valor se establece en `false` o `n`, los literales de cadena se copian en el destino tal cual. En este caso, un delimitador (fila o columna) señala el final del campo. Por lo tanto, no puede utilizar un delimitador como parte de la cadena, ya que señala el final del valor. El valor predeterminado es `true`. Valores válidos: `true`, `false`, `y`, `n` `'{"Rfc4180": false}'`  | 

## Tipos de datos de origen de Amazon S3
<a name="CHAP_Source.S3.DataTypes"></a>

Migración de datos que utiliza Amazon S3 como fuente para AWS DMS las necesidades de mapear datos de Amazon S3 a tipos de AWS DMS datos. Para obtener más información, consulte [Definir tablas externas para Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.ExternalTableDef).

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).

Los siguientes tipos de AWS DMS datos se utilizan con Amazon S3 como fuente:
+ BYTE: requiere `ColumnLength`. Para obtener más información, consulte [Definir tablas externas para Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ DATE
+ TIME
+ DATETIME: para obtener más información y un ejemplo, consulte el ejemplo del tipo DATETIME en [Definir tablas externas para Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ INT1
+ INT2
+ INT4
+ INT8
+ NUMÉRICO: requiere `ColumnPrecision` y`ColumnScale`. AWS DMS admite los siguientes valores máximos:
  + **ColumnPrecision: 38**
  + **ColumnScale: 31**

  Para obtener más información y un ejemplo, consulte el ejemplo del tipo NUMERIC en [Definir tablas externas para Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ REAL4
+ REAL8
+ STRING: requiere `ColumnLength`. Para obtener más información, consulte [Definir tablas externas para Amazon S3 como fuente de AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ UINT1
+ UINT2
+ UINT4
+ UINT8
+ BLOB
+ CLOB
+ BOOLEANO

## Uso de archivos con formato Parquet en Amazon S3 como fuente para AWS DMS
<a name="CHAP_Source.S3.Parquet"></a>

En la AWS DMS versión 3.5.3 y posteriores, puede usar archivos con formato Parquet en un bucket de S3 como fuente tanto para la replicación a carga completa como para la replicación CDC. 

DMS solo admite archivos en formato Parquet como origen que DMS genera al migrar datos a un punto de conexión de destino de S3. Los nombres de los archivos deben estar en el formato compatible; de lo contrario, DMS no los incluirá en la migración.

En el caso de archivos de datos de origen en formato Parquet, estos deben estar en la carpeta y la convención de nomenclatura siguientes.

```
schema/table1/LOAD00001.parquet
schema/table2/LOAD00002.parquet
schema/table2/LOAD00003.parquet
```

En el caso de archivos de datos de origen para datos CDC en formato Parquet, asígneles un nombre y almacénelos con la carpeta y la convención de nomenclatura siguientes.

```
schema/table/20230405-094615814.parquet
schema/table/20230405-094615853.parquet
schema/table/20230405-094615922.parquet
```

Para acceder a los archivos en formato Parquet, establezca la siguiente configuración de punto de conexión:
+ Establece `DataFormat` en `Parquet`. 
+ No establezca el valor `cdcPath`. Asegúrese de crear los archivos con formato Parquet en las carpetas de esquemas o tablas especificadas. 

Para obtener más información sobre la configuración de los puntos de conexión de S3, consulte [S3Settings](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html) en la *Referencia de la API de AWS Database Migration Service *.

### Tipos de datos compatibles con los archivos en formato Parquet
<a name="CHAP_Source.S3.Parquet.Datatypes"></a>

AWS DMS admite los siguientes tipos de datos de origen y destino al migrar datos desde archivos con formato Parquet. Asegúrese de que la tabla de destino tenga columnas con los tipos de datos correctos antes de realizar la migración.


| Tipo de datos de origen | Tipo de datos de destino | 
| --- | --- | 
| BYTE | BINARY | 
| DATE | DATE32 | 
| TIME | TIME32 | 
| DATETIME | TIMESTAMP | 
| INT1 | INT8 | 
| INT2 | INT16 | 
| INT4 | INT32 | 
| INT8 | INT64 | 
| NUMERIC | DECIMAL | 
| REAL4 | FLOAT | 
| REAL8 | DOUBLE | 
| STRING | STRING | 
| UINT1 | UINT8 | 
| UINT2 | UINT16 | 
| UINT4 | UINT32 | 
| UINT8 | UINT | 
| WSTRING | STRING | 
| BLOB | BINARY | 
| NCLOB | STRING | 
| CLOB | STRING | 
| BOOLEAN | BOOL | 

# Uso de la base de datos IBM Db2 para Linux, Unix, Windows y Amazon RDS (Db2 LUW) como fuente para AWS DMS
<a name="CHAP_Source.DB2"></a>

Puede migrar datos de una base de datos IBM Db2 para Linux, Unix, Windows y Amazon RDS (Db2 LUW) a cualquier base de datos de destino compatible mediante (). AWS Database Migration Service AWS DMS

Para obtener información sobre las versiones de Db2 en Linux, Unix, Windows y RDS que son compatibles como fuente, consulte. AWS DMS [Fuentes de AWS DMS](CHAP_Introduction.Sources.md) 

Puede utilizar la Capa de conexión segura (SSL) para cifrar las conexiones entre el punto de enlace de Db2 LUW y la instancia de replicación. Para obtener más información sobre cómo utilizar SSL con un punto de enlace de Db2 LUW, consulte [Uso de SSL con AWS Database Migration Service](CHAP_Security.SSL.md).

Cuando AWS DMS lee los datos de una base de datos fuente de IBM Db2, utiliza el nivel de aislamiento CURSOR STABILITY (CS) predeterminado para la versión 9.7 y superior de Db2. Para obtener más información, consulte la documentación de [IBM Db2 for Linux, UNIX and Windows](https://www.ibm.com/docs/en/db2/12.1.0).

## Requisitos previos al utilizar Db2 LUW como fuente de AWS DMS
<a name="CHAP_Source.DB2.Prerequisites"></a>

Los siguientes requisitos previos son necesarios para poder utilizar una base de datos Db2 LUW como origen.

Para habilitar la replicación continua, también llamada captura de datos de cambios (CDC), haga lo siguiente:
+ Configure la base de datos para que sea recuperable, lo que AWS DMS requiere capturar los cambios. Una base de datos es recuperable si uno o ambos parámetros de configuración de la base de datos, `LOGARCHMETH1` y `LOGARCHMETH2`, se establecen en `ON`.

  Si su base de datos es recuperable, AWS DMS puede acceder al Db2 si es necesario. `ARCHIVE LOG`
+ Asegúrese de que los registros de DB2 transacciones estén disponibles, con un período de retención suficiente para procesarlos. AWS DMS
+ DB2 requiere `SYSADM` o `DBADM` autorización para extraer los registros del registro de transacciones. Conceda a la cuenta de usuario los siguientes permisos:
  + `SYSADM` o `DBADM`
  + `DATAACCESS`
**nota**  
Para las tareas exclusivas de carga completa, la cuenta de usuario de DMS necesita el permiso DATAACCESS.
+ Cuando utilice la versión 9.7 de IBM DB2 for LUW como fuente, defina el atributo de conexión adicional (ECA) de la `CurrentLsn` siguiente manera:

  `CurrentLsn=LSN` donde `LSN` especifica un número de secuencia de registro (LSN) donde desea que comience la replicación. O `CurrentLsn=scan`.
+ Cuando utilice Amazon RDS para Db2 LUW como fuente, asegúrese de que los registros del archivo estén disponibles para. AWS DMS Dado que las bases AWS de datos Db2 administradas purgan los registros del archivo lo antes posible, debe aumentar el tiempo que los registros permanecen disponibles. Por ejemplo, para incrementar la retención de registros a 24 horas, ejecute el siguiente comando:

  ```
  db2 "call rdsadmin.set_archive_log_retention( ?, 'TESTDB', '24')"
  ```

  Para obtener más información sobre los procedimientos de Amazon RDS para Db2 LUW, consulte la [Referencia de procedimientos almacenados de Amazon RDS para Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-stored-procedures.html) en la *Guía del usuario de Amazon Relational Database Service*.
+ Otorgue los siguientes privilegios si utiliza evaluaciones previas a la migración DB2 específicas:

  ```
  GRANT CONNECT ON DATABASE TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBM.SYSDUMMY1 TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBMADM.ENV_INST_INFO TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBMADM.DBCFG TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.SCHEMATA TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.COLUMNS TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.TABLES TO USER <DMS_USER>;
  GRANT EXECUTE ON FUNCTION SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID TO <DMS_USER>;
  GRANT EXECUTE ON PACKAGE NULLID.SYSSH200 TO USER <DMS_USER>;
  ```

## Limitaciones al utilizar Db2 LUW como fuente de AWS DMS
<a name="CHAP_Source.DB2.Limitations"></a>

AWS DMS no admite bases de datos agrupadas. Sin embargo, puede definir una base de datos Db2 LUW independiente para cada uno de los puntos de enlace de un clúster. Por ejemplo, puede crear una tarea de migración de carga completa con cualquiera de los nodos del clúster y, a continuación, crear tareas independientes de cada nodo.

AWS DMS no admite el tipo de `BOOLEAN` datos de la base de datos LUW Db2 de origen.

Al utilizar la replicación continua (CDC), se aplican las siguientes restricciones:
+ Cuando se trunca una tabla con varias particiones, el número de eventos DDL que se muestran en la AWS DMS consola es igual al número de particiones. Esto se debe a que Db2 LUW registra un DDL individual para cada partición.
+ Las siguientes acciones de DDL no se admiten en las tablas con particiones:
  + ALTER TABLE ADD PARTITION
  + ALTER TABLE DETACH PARTITION
  + ALTER TABLE ATTACH PARTITION
+ AWS DMS no admite una migración de replicación continua desde una instancia en espera de recuperación ante desastres (HADR) de DB2 alta disponibilidad. No se puede acceder al modo de espera.
+ No se admite el tipo de datos DECFLOAT. Por lo tanto, los cambios en las columnas DECFLOAT se omiten durante la replicación continua.
+ No se admite la instrucción RENAME COLUMN.
+ Al actualizar las tablas de agrupamiento multidimensional (MDC), cada actualización se muestra en la AWS DMS consola como INSERT \$1 DELETE.
+ Cuando la opción de tarea **Include LOB columns in replication (Incluir columnas LOB en la replicación)** no está habilitada, toda tabla que tenga columnas LOB se suspende durante la replicación continua.
+ En las versiones 10.5 y superiores de Db2 LUW, se omiten las columnas de cadenas de longitud variable con datos almacenados. out-of-row Esta limitación solo se aplica a las tablas creadas con un tamaño de fila ampliado para columnas con tipos de datos como VARCHAR y VARGRAPHIC. Para evitar esta limitación, mueva la tabla a un espacio de tabla con un tamaño de página superior. Para obtener más información, consulte [¿Qué puedo hacer si quiero cambiar el tamaño de página de los espacios de tabla]( https://www.ibm.com/support/pages/what-can-i-do-if-i-want-change-pagesize-db2-tablespaces )? DB2 
+ Para una replicación continua, DMS no admite la migración de los datos cargados a nivel de página mediante la utilidad LOAD. DB2 En su lugar, utilice la utilidad IMPORT, que utiliza inserciones SQL. Para obtener más información, consulte las [diferencias entre las utilidades de importación y carga]( https://www.ibm.com/docs/en/db2/11.1?topic=utilities-differences-between-import-load-utility). 
+ Mientras se ejecuta una tarea de replicación, DMS captura CREATE TABLE DDLs solo si las tablas se crearon con el atributo DATA CAPTURE CHANGE.
+ DMS presenta las siguientes limitaciones al utilizar la característica de partición de bases de datos de Db2:
  + DMS no puede coordinar las transacciones entre los nodos de Db2 en un entorno de partición de bases de datos. Esto se debe a las limitaciones de la interfaz API DB2 READLOG de IBM. En el DPF, las transacciones pueden abarcar varios nodos de Db2, en función de cómo se DB2 particionen los datos. Como resultado, la solución de DMS debe capturar las transacciones de cada nodo de Db2 de forma independiente.
  + DMS puede capturar las transacciones locales de cada nodo de Db2 en el clúster de partición de bases de datos si se establece `connectNode` en `1` en varios puntos de conexión de origen de DMS. Esta configuración corresponde a los números de nodos lógicos definidos en el archivo de configuración del DB2 servidor. `db2nodes.cfg`
  + Las transacciones locales en nodos individuales de Db2 pueden formar parte de una transacción global más grande. DMS aplica cada transacción local de forma independiente en el destino, sin coordinación con las transacciones de otros nodos de Db2. Este procesamiento independiente puede provocar complicaciones, sobre todo cuando se mueven las filas entre las particiones.
  + Cuando DMS se replica desde varios nodos de Db2, no se garantiza el orden correcto de las operaciones en el destino, ya que DMS aplica las operaciones de forma independiente para cada nodo de Db2. Debe asegurarse de que la captura de transacciones locales con independencia de cada nodo de Db2 funcione para su caso de uso específico.
  + Al migrar desde un entorno de partición de bases de datos, se recomienda ejecutar primero una tarea de carga completa sin eventos en caché y, después, ejecutar tareas exclusivas de CDC. Se recomienda ejecutar una tarea por nodo de Db2, empezando por la marca de tiempo de inicio a plena carga o el LRI (identificador de registro) que establezca con el atributo de conexión adicional del `StartFromContext` punto final. Para obtener información sobre cómo determinar el punto de inicio de la replicación, consulte [Finding the LSN or LRI value for replication start](https://www.ibm.com/support/pages/db2-finding-lsn-or-lri-value-replication-start) en la *documentación de soporte de IBM*. 
+ Para la replicación continua (CDC), si planea iniciar la replicación desde una marca de tiempo específica, debe establecer el atributo de conexión `StartFromContext` adicional en la marca de tiempo requerida.
+ Actualmente, DMS no admite la función PureScale de Db2, una extensión de DB2 LUW que puede utilizar para escalar su solución de base de datos.
+ La opción de `DATA CAPTURE CHANGES` tabla es un requisito previo fundamental para los procesos de replicación de datos. DB2 Si no se habilita esta opción al crear tablas, es posible que falten datos, especialmente en el caso de la CDC (Change Data Capture), que solo se trata de tareas de replicación iniciadas desde un punto de partida anterior. AWS DMS activará este atributo de forma predeterminada al reiniciar una tarea de CDC o FULL\$1CDC. Sin embargo, es posible que se omita cualquier cambio realizado en la base de datos de origen antes del reinicio de la tarea.

  ```
  ALTER TABLE TABLE_SCHEMA.TABLE_NAME DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;
  ```

## Configuración del punto final cuando se utiliza Db2 LUW como fuente de AWS DMS
<a name="CHAP_Source.DB2.ConnectionSettings"></a>

Puede especificar la configuración al crear el punto final de origen mediante la AWS DMS consola o mediante el `create-endpoint` comando de [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/create-endpoint.html), con la

`--ibm-db2-settings '{"EndpointSetting1": "value1","EndpointSetting2": "value2"}'`

Sintaxis JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Db2 LUW como origen.


| Nombre de configuración | Description (Descripción) | 
| --- | --- | 
|  `CurrentLsn`  |  Para la replicación continua de cambios (CDC), utilice `CurrentLsn` para especificar un número de secuencia de registro (LSN) donde desea que comience la replicación.   | 
|  `MaxKBytesPerRead`  |  Número máximo de bytes por lectura, como valor NUMBER. El valor predeterminado es 64 KB.  | 
|  `SetDataCaptureChanges`  |  Habilita la replicación continua (CDC) como valor booleano. El valor predeterminado es true.  | 

## Atributos de conexión adicionales (ECAs) cuando se utiliza Db2 LUW como fuente para AWS DMS
<a name="CHAP_Source.DB2.ConnectionAttrib"></a>

Puede especificar los atributos de conexión adicionales (ECAs) al crear el punto final de origen mediante la AWS DMS consola o mediante el `create-endpoint` comando de [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/create-endpoint.html), con el

`--extra-connection-attributes 'ECAname1=value1;ECAname2=value2;'`

En la siguiente tabla se muestran los ECAs que puede utilizar con Db2 LUW como fuente.


| Nombre de atributo | Description (Descripción) | 
| --- | --- | 
|  `ConnectionTimeout`  |  Utilice este ECA para configurar el tiempo de espera de la conexión del punto final LUW de Db2, en segundos. El valor de predeterminado es de 10 segundos. Ejemplo: `ConnectionTimeout=30;`  | 
|  `executeTimeout`  |  Atributo de conexión adicional que establece el tiempo de espera de la sentencia (consulta) para el punto final DB2 LUW, en segundos. El valor de predeterminado es de 60 segundos. Ejemplo: `executeTimeout=120;`  | 
|  `StartFromContext`  |  Para la replicación continua (CDC), utilice `StartFromContext` para especificar un límite inferior de un registro desde donde desea que comience la replicación. `StartFromContext` acepta diferentes formas de valores. Los valores válidos son: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Source.DB2.html) Para determinar el LRI/LSN rango de un archivo de registro, ejecute el `db2flsn` comando como se muestra en el siguiente ejemplo. <pre>db2flsn -db SAMPLE -lrirange 2</pre> El resultado de ese ejemplo es similar al siguiente.  <pre><br />S0000002.LOG: has LRI range 00000000000000010000000000002254000000000004F9A6 to <br />000000000000000100000000000022CC000000000004FB13</pre> En ese resultado, el archivo de registro es S0000002.LOG y el valor **StartFromContext**LRI son los 34 bytes al final del rango. <pre>0100000000000022CC000000000004FB13</pre>  | 

## Tipos de datos de origen para IBM Db2 LUW
<a name="CHAP_Source.DB2.DataTypes"></a>

La migración de datos que utiliza Db2 LUW como fuente es AWS DMS compatible con la mayoría de los tipos de datos LUW de Db2. La siguiente tabla muestra los tipos de datos de origen LUW de Db2 que se admiten cuando se utilizan AWS DMS y el mapeo predeterminado a partir de los tipos de datos. AWS DMS Para obtener más información sobre los tipos de datos de Db2 LUW, consulte la [documentación sobre Db2 LUW](https://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0008483.html).

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte. [Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  Tipos de datos de Db2 LUW  |  AWS DMS tipos de datos  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  DECIMAL (p,s)  |  NUMERIC (p,s)  | 
|  FLOAT  |  REAL8  | 
|  DOUBLE  |  REAL8  | 
|  REAL  |  REAL4  | 
|  DECFLOAT (p)  |  Si la precisión es 16, entonces REAL8; si la precisión es 34, entonces STRING  | 
|  GRAPHIC (n)  |  WSTRING, para cadenas de gráficos de longitud fija de caracteres de dos bytes con una longitud mayor que 0 y menor o igual a 127  | 
|  VARGRAPHIC (n)  |  WSTRING, para cadenas de gráficos de longitud variable con una longitud mayor que 0 y menor o igual a 16.352 caracteres de dos bytes  | 
|  LONG VARGRAPHIC (n)  |  CLOB, para cadenas de gráficos de longitud variable con una longitud mayor que 0 y menor o igual a 16.352 caracteres de dos bytes  | 
|  CHARACTER (n)  |  STRING, para cadenas de longitud fija de caracteres de dos bytes con una longitud mayor que 0 y menor o igual a 255  | 
|  VARCHAR (n)  |  STRING, para cadenas de longitud variable de caracteres de dos bytes con una longitud mayor que 0 y menor o igual a 32.704  | 
|  LONG VARCHAR (n)  |  CLOB, para cadenas de longitud variable de caracteres de dos bytes con una longitud mayor que 0 y menor o igual a 32.704  | 
|  CHAR (n) FOR BIT DATA  |  BYTES  | 
|  VARCHAR (n) FOR BIT DATA  |  BYTES  | 
|  LONG VARCHAR FOR BIT DATA  |  BYTES  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP  |  DATETIME  | 
|  BLOB (n)  |  BLOB La longitud máxima es de 2 147 483 647 bytes  | 
|  CLOB (n)  |  CLOB La longitud máxima es de 2 147 483 647 bytes  | 
|  DBCLOB (n)  |  CLOB La longitud máxima es 1 073 741 824 de caracteres de dos bytes  | 
|  XML  |  CLOB  | 

# Uso de IBM Db2 para z/OS bases de datos como fuente para AWS DMS
<a name="CHAP_Source.DB2zOS"></a>

Puede migrar datos de una base de datos de IBM for a cualquier z/OS base de datos de destino compatible mediante AWS Database Migration Service (AWS DMS). 

Para obtener información sobre las versiones de Db2 z/OS que se AWS DMS admiten como fuente, consulte[Fuentes de AWS DMS](CHAP_Introduction.Sources.md).

## Requisitos previos al utilizar Db2 for z/OS como fuente de AWS DMS
<a name="CHAP_Source.DB2zOS.Prerequisites"></a>

Para utilizar una z/OS base de datos IBM Db2 for como fuente AWS DMS, conceda los siguientes privilegios al Db2 para el z/OS usuario especificado en la configuración de conexión del punto final de origen.

```
GRANT SELECT ON SYSIBM.SYSTABLES TO Db2USER;
GRANT SELECT ON SYSIBM.SYSTABLESPACE TO Db2USER;
GRANT SELECT ON SYSIBM.SYSTABLEPART TO Db2USER;                    
GRANT SELECT ON SYSIBM.SYSCOLUMNS TO Db2USER;
GRANT SELECT ON SYSIBM.SYSDATABASE TO Db2USER;
GRANT SELECT ON SYSIBM.SYSDUMMY1 TO Db2USER
```

Conceda también las tablas de origen SELECT ON `user defined`.

Un punto final de AWS DMS IBM Db2 para z/OS origen se basa en el controlador IBM Data Server for ODBC para acceder a los datos. El servidor de base de datos debe tener una licencia IBM ODBC Connect válida para que DMS se conecte a este punto de conexión.

## Limitaciones a la hora de utilizar Db2 for z/OS como fuente para AWS DMS
<a name="CHAP_Source.DB2zOS.Limitations"></a>

Las siguientes limitaciones se aplican al utilizar una z/OS base de datos IBM Db2 for como fuente para: AWS DMS
+ Solo se admiten las tareas de replicación de carga completa. No se admite la captura de datos de cambios (CDC).
+ La carga paralela no es compatible.
+ La validación de datos de vistas no es compatible.
+ Los nombres de los esquemas, tablas y columnas deben especificarse en mayúsculas en las asignaciones de tablas para las transformaciones de nivel y los filtros de selección a Column/table nivel de fila.

## Tipos de datos de origen para IBM Db2 para z/OS
<a name="CHAP_Source.DB2zOS.DataTypes"></a>

Las migraciones de datos que utilizan Db2 z/OS como fuente son AWS DMS compatibles con la mayoría de los tipos de datos de Db2 for. z/OS La siguiente tabla muestra el Db2 para los tipos de datos de z/OS origen que se admiten cuando se utilizan y el mapeo predeterminado a AWS DMS partir de los tipos de datos. AWS DMS 

Para obtener más información sobre Db2 para z/OS los tipos de datos, consulte la documentación de [IBM Db2](https://www.ibm.com/docs/en/db2-for-zos/12?topic=elements-data-types). z/OS 

Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte. [Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  Db2 para tipos de z/OS datos  |  AWS DMS tipos de datos  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  DECIMAL (p,s)  |  NUMERIC (p,s) Si el punto decimal se establece en una coma (,) en la DB2 configuración, configure Replicate para que sea compatible con el DB2 ajuste.   | 
|  FLOAT  |  REAL8  | 
|  DOUBLE  |  REAL8  | 
|  REAL  |  REAL4  | 
|  DECFLOAT (p)  |  Si la precisión es 16, entonces REAL8; si la precisión es 34, entonces STRING  | 
|  GRAPHIC (n)  |  Si n>=127 entonces WSTRING, para cadenas de gráficos de longitud fija de caracteres de dos bytes con una longitud mayor que 0 y menor o igual a 127  | 
|  VARGRAPHIC (n)  |  WSTRING, para cadenas de gráficos de longitud variable con una longitud mayor que 0 y menor o igual a 16.352 caracteres de dos bytes  | 
|  LONG VARGRAPHIC (n)  |  CLOB, para cadenas de gráficos de longitud variable con una longitud mayor que 0 y menor o igual a 16.352 caracteres de dos bytes  | 
|  CHARACTER (n)  |  STRING, para cadenas de longitud fija de caracteres de dos bytes con una longitud mayor que 0 y menor o igual a 255  | 
|  VARCHAR (n)  |  STRING, para cadenas de longitud variable de caracteres de dos bytes con una longitud mayor que 0 y menor o igual a 32.704  | 
|  LONG VARCHAR (n)  |  CLOB, para cadenas de longitud variable de caracteres de dos bytes con una longitud mayor que 0 y menor o igual a 32.704  | 
|  CHAR (n) FOR BIT DATA  |  BYTES  | 
|  VARCHAR (n) FOR BIT DATA  |  BYTES  | 
|  LONG VARCHAR FOR BIT DATA  |  BYTES  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP  |  DATETIME  | 
|  BLOB (n)  |  BLOB La longitud máxima es de 2 147 483 647 bytes  | 
|  CLOB (n)  |  CLOB La longitud máxima es de 2 147 483 647 bytes  | 
|  DBCLOB (n)  |  CLOB La longitud máxima es 1 073 741 824 de caracteres de dos bytes  | 
|  XML  |  CLOB  | 
|  BINARIO  |  BYTES  | 
|  VARBINARY  |  BYTES  | 
|  ROWID  |  BYTES. Para obtener más información acerca de cómo trabajar con ROWID, consulte lo siguiente.   | 
|  MARCA DE TIEMPO CON ZONA HORARIA  |  No admitido.  | 

Las columnas ROWID se migran de forma predeterminada cuando el modo de preparación de la tabla de destino para la tarea está establecido en DROP\$1AND\$1CREATE (predeterminado). La validación de datos ignora estas columnas porque las filas no tienen sentido fuera de la base de datos y la tabla específicas. Para desactivar la migración de estas columnas, puede realizar uno de los siguientes pasos preparatorios: 
+ Cree previamente la tabla de destino sin estas columnas. A continuación, establezca el modo de preparación de la tabla de destino de la tarea en DO\$1NOTHING o TRUNCATE\$1BEFORE\$1LOAD. Puede usar AWS Schema Conversion Tool (AWS SCT) para crear previamente la tabla de destino sin las columnas.
+ Agregue una regla de asignación de tablas a una tarea que filtre estas columnas para ignorarlas. Para obtener más información, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Colaciones EBCDIC en PostgreSQL para el servicio de modernización de mainframe AWS
<a name="CHAP_Source.DB2zOS.EBCDIC"></a>

AWS El programa de modernización de mainframe le ayuda a modernizar sus aplicaciones de mainframe para convertirlas en entornos de tiempo de ejecución gestionados. AWS Ofrece herramientas y recursos para ayudarle a planificar e implementar los proyectos de migración y modernización. [Para obtener más información sobre la modernización y migración de mainframes, consulte Modernización de mainframes con. AWS](https://aws.amazon.com/mainframe/)

Algunos conjuntos de z/OS datos de IBM Db2 están codificados en el juego de caracteres EBCDIC (Extended Binary Coded Decimal Interchange). Se trata de un conjunto de caracteres que se desarrolló antes de que se generalizara el uso de ASCII (American Standard Code for Information Interchange). Una *página de códigos* asigna cada carácter del texto a los caracteres de un conjunto de caracteres. Una página de códigos tradicional contiene la información de asignación entre un punto de código y un ID de carácter. Un *ID de carácter* es una cadena de datos de caracteres de 8 bytes. Un *punto de código* es un número binario de 8 bits que representa un carácter. Los puntos de código se suelen mostrar como representaciones hexadecimales de los valores binarios.

Si actualmente utiliza Micro Focus o BluAge un componente del servicio de modernización del mainframe, debe indicarle que *cambie* (traduzca) AWS DMS determinados puntos del código. Puede utilizar la configuración de las AWS DMS tareas para realizar los turnos. El siguiente ejemplo muestra cómo utilizar la AWS DMS `CharacterSetSettings` operación para mapear los turnos en una configuración de tareas de DMS.

```
"CharacterSetSettings": {
        "CharacterSetSupport": null,
        "CharacterReplacements": [
{"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
            }
        ]
    }
```

Ya existen algunas intercalaciones EBCDIC para PostgreSQL que comprenden el cambio que se necesita. Se admiten varias páginas de código diferentes. Las siguientes secciones proporcionan ejemplos de JSON de lo que debe cambiar para todas las páginas de códigos compatibles. Puede simplificar copy-and-past el JSON necesario para su tarea de DMS.

### Intercalaciones EBCDIC específicas de Micro Focus
<a name="CHAP_Source.DB2zOS.EBCDIC.MicroFocus"></a>

Para Micro Focus, cambie un subconjunto de caracteres según sea necesario para las siguientes intercalaciones.

```
 da-DK-cp1142m-x-icu
 de-DE-cp1141m-x-icu
 en-GB-cp1146m-x-icu
 en-US-cp1140m-x-icu
 es-ES-cp1145m-x-icu
 fi-FI-cp1143m-x-icu
 fr-FR-cp1147m-x-icu
 it-IT-cp1144m-x-icu
 nl-BE-cp1148m-x-icu
```

**Example Los datos de Micro Focus cambian por intercalación:**  
**en\$1us\$1cp1140m**  
Cambio de código:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1141m**  
Cambio de código:  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1142m**  
Cambio de código:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1143m**  
Cambio de código:  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1144m**  
Cambio de código:  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1145m**  
Cambio de código:  

```
0000    0180
00A6    0160
00B8    0161
00A8    017D
00BC    017E
00BD    0152
00BE    0153
00B4    0178
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1146m**  
Cambio de código:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1147m**  
Cambio de código:  

```
0000    0180
00B8    0160
00A8    0161
00BC    017D
00BD    017E
00BE    0152
00B4    0153
00A6    0178
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1148m**  
Cambio de código:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```

### BluAge recopilaciones EBCDIC específicas
<a name="CHAP_Source.DB2zOS.EBCDIC.BluAge"></a>

Para BluAge, cambie todos los siguientes *valores bajos* y *altos* según sea necesario. Estas recopilaciones solo deben usarse para respaldar el servicio de migración BluAge de mainframe.

```
da-DK-cp1142b-x-icu
 da-DK-cp277b-x-icu
 de-DE-cp1141b-x-icu
 de-DE-cp273b-x-icu
 en-GB-cp1146b-x-icu
 en-GB-cp285b-x-icu
 en-US-cp037b-x-icu
 en-US-cp1140b-x-icu
 es-ES-cp1145b-x-icu
 es-ES-cp284b-x-icu
 fi-FI-cp1143b-x-icu
 fi-FI-cp278b-x-icu 
 fr-FR-cp1147b-x-icu
 fr-FR-cp297b-x-icu
 it-IT-cp1144b-x-icu
 it-IT-cp280b-x-icu
 nl-BE-cp1148b-x-icu
 nl-BE-cp500b-x-icu
```

**Example BluAge Cambios de datos:**  
**DA-DK-CP277b y **DA-DK-CP1142b****  
Cambio de código:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**de-DE-273b** y **de-DE-1141b**  
Cambio de código:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**en-GB-285b** y **en-GB-1146b**  
Cambio de código:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**en-us-037b** y **en-us-1140b**  
Cambio de código:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**es-ES-284b** y **es-ES-1145b**  
Cambio de código:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**fi\$1FI-278b** y **fi-FI-1143b**  
Cambio de código:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**fr-FR-297b** y **fr-FR-1147b**  
Cambio de código:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**it-IT-280b** e **it-IT-1144b**  
Cambio de código:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**nl-BE-500b** y **nl-BE-1148b**  
Cambio de código:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Mapeo de entrada correspondiente a una AWS DMS tarea:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```

# Destinos para la migración de datos
<a name="CHAP_Target"></a>

AWS Database Migration Service (AWS DMS) puede utilizar muchas de las bases de datos más populares como destino para la replicación de datos. El destino puede estar en una instancia de Amazon Elastic Compute Cloud (Amazon EC2), una instancia de Amazon Relational Database Service (Amazon RDS) o una base de datos local. 

Para obtener una lista completa de los destinos válidos, consulte [Destinos para AWS DMS](CHAP_Introduction.Targets.md).

**nota**  
AWS DMS no admite la migración entre AWS regiones para los siguientes tipos de puntos finales de destino:  
Amazon DynamoDB
 OpenSearch Servicio Amazon
Amazon Kinesis Data Streams
Amazon Aurora PostgreSQL Limitless está disponible como destino para (). AWS Database Migration Service AWS DMS Para obtener más información, consulte [Uso de una base de datos PostgreSQL como destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) para. AWS Database Migration Service

**Topics**
+ [Uso de una base de datos Oracle como destino para AWS Database Migration Service](CHAP_Target.Oracle.md)
+ [Uso de una base de datos de Microsoft SQL Server como destino para AWS Database Migration Service](CHAP_Target.SQLServer.md)
+ [Uso de una base de datos PostgreSQL como destino para AWS Database Migration Service](CHAP_Target.PostgreSQL.md)
+ [Usar una base de datos compatible con MySQL como destino para AWS Database Migration Service](CHAP_Target.MySQL.md)
+ [Uso de una base de datos de Amazon Redshift como destino para AWS Database Migration Service](CHAP_Target.Redshift.md)
+ [Uso de una base de datos SAP ASE como objetivo para AWS Database Migration Service](CHAP_Target.SAP.md)
+ [Uso de Amazon S3 como objetivo para AWS Database Migration Service](CHAP_Target.S3.md)
+ [Uso de una base de datos de Amazon DynamoDB como destino para AWS Database Migration Service](CHAP_Target.DynamoDB.md)
+ [Uso de Amazon Kinesis Data Streams como objetivo para AWS Database Migration Service](CHAP_Target.Kinesis.md)
+ [Uso de Apache Kafka como objetivo para AWS Database Migration Service](CHAP_Target.Kafka.md)
+ [Utilizar un clúster OpenSearch de Amazon Service como objetivo para AWS Database Migration Service](CHAP_Target.Elasticsearch.md)
+ [Uso de Amazon DocumentDB como destino para AWS Database Migration Service](CHAP_Target.DocumentDB.md)
+ [Uso de Amazon Neptune como objetivo para AWS Database Migration Service](CHAP_Target.Neptune.md)
+ [Uso de Redis OSS como objetivo para AWS Database Migration Service](CHAP_Target.Redis.md)
+ [Uso de Babelfish como objetivo para AWS Database Migration Service](CHAP_Target.Babelfish.md)
+ [Uso de Amazon Timestream como objetivo para AWS Database Migration Service](CHAP_Target.Timestream.md)
+ [Uso de Amazon RDS para Db2 e IBM Db2 LUW como destino para AWS DMS](CHAP_Target.DB2.md)

# Uso de una base de datos Oracle como destino para AWS Database Migration Service
<a name="CHAP_Target.Oracle"></a>

Puede migrar los datos a los destinos de las bases de AWS DMS datos Oracle desde otra base de datos Oracle o desde una de las otras bases de datos compatibles. Puede utilizar la Capa de conexión segura (SSL) para cifrar las conexiones entre el punto de enlace de Oracle y la instancia de replicación. Para obtener más información sobre el uso de SSL con un punto final de Oracle, consulte[Uso de SSL con AWS Database Migration Service](CHAP_Security.SSL.md). AWS DMS también admite el uso del cifrado transparente de datos (TDE) de Oracle para cifrar los datos en reposo en la base de datos de destino, ya que el TDE de Oracle no requiere una clave de cifrado ni una contraseña para escribir en la base de datos.

Para obtener información sobre las versiones de Oracle AWS DMS compatibles como destino, consulte. [Objetivos para AWS DMS](CHAP_Introduction.Targets.md) 

Al utilizar Oracle como destino, suponemos que los datos deberían migrarse al esquema o usuario que se utiliza para la conexión de destino. Si desea migrar datos a otro esquema, utilice la transformación de esquemas. Por ejemplo, suponga que su punto de enlace de destino se conecta con el usuario `RDSMASTER` y desea migrar desde el usuario `PERFDATA1` a `PERFDATA2`. En este caso, cree una transformación tal y como la siguiente.

```
{
   "rule-type": "transformation",
   "rule-id": "2",
   "rule-name": "2",
   "rule-action": "rename",
   "rule-target": "schema",
   "object-locator": {
   "schema-name": "PERFDATA1"
},
"value": "PERFDATA2"
}
```

Al utilizar Oracle como destino, AWS DMS migra todas las tablas e índices a los espacios de tablas e índices predeterminados del destino. Si desea migrar tablas e índices a distintos espacios de tablas de tablas e índices, utilice una transformación de espacio de tabla para hacerlo. Por ejemplo, supongamos que tiene un conjunto de tablas en el esquema `INVENTORY` asignado a algunos espacios de tabla en el origen de Oracle. Para la migración, desea asignar todas estas tablas a un único espacio de tabla `INVENTORYSPACE` en el destino. En este caso, cree una transformación tal y como la siguiente.

```
{
   "rule-type": "transformation",
   "rule-id": "3",
   "rule-name": "3",
   "rule-action": "rename",
   "rule-target": "table-tablespace",
   "object-locator": {
      "schema-name": "INVENTORY",
      "table-name": "%",
      "table-tablespace-name": "%"
   },
   "value": "INVENTORYSPACE"
}
```

Para obtener más información sobre transformaciones, consulte [Especificación de reglas de selección de tablas y transformaciones mediante JSON](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md).

Si Oracle es origen y destino, puede conservar las asignaciones de espacio de tabla de índice o de tabla existentes configurando el atributo de conexión adicional de origen de Oracle, `enableHomogenousTablespace=true`. Para obtener más información, consulte [Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.ConnectionAttrib)

Para obtener más información sobre cómo trabajar con bases de datos Oracle como destino AWS DMS, consulte las siguientes secciones: 

**Topics**
+ [Limitaciones de Oracle como objetivo para AWS Database Migration Service](#CHAP_Target.Oracle.Limitations)
+ [Privilegios de la cuenta de usuario necesarios para utilizar Oracle como destino](#CHAP_Target.Oracle.Privileges)
+ [Configurar una base de datos Oracle como destino para AWS Database Migration Service](#CHAP_Target.Oracle.Configuration)
+ [Configuración del punto final cuando se utiliza Oracle como destino para AWS DMS](#CHAP_Target.Oracle.ConnectionAttrib)
+ [Tipos de datos de destino para Oracle](#CHAP_Target.Oracle.DataTypes)

## Limitaciones de Oracle como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Oracle.Limitations"></a>

Las restricciones al utilizar Oracle como destino para la migración de datos son las siguientes:
+ AWS DMS no crea un esquema en la base de datos Oracle de destino. Usted tiene que crear los esquemas que desee en la base de datos de Oracle de destino. El nombre de esquema ya tiene que existir para el destino de Oracle. Las tablas del esquema de origen se importan al usuario o esquema, que se AWS DMS utiliza para conectarse a la instancia de destino. Para migrar varios esquemas, puede crear varias tareas de replicación. También puede migrar los datos a diferentes esquemas de un destino. Para ello, debe utilizar las reglas de transformación del esquema en las asignaciones de AWS DMS tablas.
+ AWS DMS no admite la `Use direct path full load` opción para tablas con INDEXTYPE CONTEXT. Como alternativa, puede utilizar la carga de matriz. 
+ Con la opción de aplicación optimizada por lotes, la carga en la tabla de cambios netos utiliza una ruta directa, que no admite el tipo XML. Como alternativa, puede utilizar el modo de aplicación transaccional.
+ Las cadenas vacías migradas desde bases de datos de origen pueden ser tratadas de manera diferente por el destino de Oracle (convertidas en cadenas de espacio, por ejemplo). Esto puede provocar que la AWS DMS validación notifique una discrepancia.
+ Puede expresar el número total de columnas por tabla admitidas en el modo de aplicación optimizada por lotes mediante la siguiente fórmula:

  ```
  2 * columns_in_original_table + columns_in_primary_key <= 999
  ```

  Por ejemplo, si la tabla original tiene 25 columnas y su clave principal consta de 5 columnas, el número total de columnas es 55. Si una tabla supera el número de columnas admitido, todos los cambios se aplican en el one-by-one modo.
+ AWS DMS no es compatible con Autonomous DB en Oracle Cloud Infrastructure (OCI).
+ En el modo de aplicación transaccional, un destino de Oracle puede procesar instrucciones DML de hasta 32 KB de tamaño. Si bien este límite es suficiente para muchos casos de uso, las instrucciones DML que superen los 32 KB fallarán y mostrarán el error: “ORA-01460: unimplemented or unreasonable conversion requested”. Para resolver este problema, debe activar la característica de aplicación por lotes mediante la configuración de la tarea `BatchApplyEnabled` en `true`. La aplicación por lotes reduce el tamaño total de la instrucción, lo que le permite superar el límite de 32 KB. Para obtener más información, consulte [Configuración de las tareas de los metadatos de destino](CHAP_Tasks.CustomizingTasks.TaskSettings.TargetMetadata.md).
+ AWS DMS La carga completa de la ruta directa para las tablas de LOB puede fallar con el error ORA-39777 debido a los requisitos especiales de manejo de los datos de LOB. Este error se produce durante el proceso de carga de la ruta directa y puede interrumpir las tareas de migración que afectan a las columnas LOB. Para resolverlo, desactive la configuración de `useDirectPathFullLoad` en el punto de conexión de destino y vuelva a intentar la operación de carga.

## Privilegios de la cuenta de usuario necesarios para utilizar Oracle como destino
<a name="CHAP_Target.Oracle.Privileges"></a>

Para utilizar un destino de Oracle en una AWS Database Migration Service tarea, conceda los siguientes privilegios en la base de datos de Oracle. Puede concederlos a la cuenta de usuario especificada en las definiciones de la base de datos Oracle para AWS DMS.
+ SELECT ANY TRANSACTION 
+ SELECT on V\$1NLS\$1PARAMETERS 
+ SELECT on V\$1TIMEZONE\$1NAMES 
+ SELECT on ALL\$1INDEXES 
+ SELECT on ALL\$1OBJECTS 
+ SELECT on DBA\$1OBJECTS
+ SELECT on ALL\$1TABLES 
+ SELECT on ALL\$1USERS 
+ SELECT on ALL\$1CATALOG 
+ SELECT on ALL\$1CONSTRAINTS 
+ SELECT on ALL\$1CONS\$1COLUMNS 
+ SELECT on ALL\$1TAB\$1COLS 
+ SELECT on ALL\$1IND\$1COLUMNS 
+ DROP ANY TABLE 
+ SELECT ANY TABLE
+ INSERT ANY TABLE 
+ UPDATE ANY TABLE
+ CREATE ANY VIEW
+ DROP ANY VIEW
+ CREATE ANY PROCEDURE
+ ALTER ANY PROCEDURE
+ DROP ANY PROCEDURE
+ CREATE ANY SEQUENCE
+ ALTER ANY SEQUENCE
+ DROP ANY SEQUENCE 
+ ELIMINAR CUALQUIER TABLA

Para los requisitos siguientes, conceda estos privilegios adicionales:
+ Para utilizar una lista de tablas específica, otorgue SELECT y ALTER en cualquier tabla replicada.
+ Para permitir a un usuario crear una tabla en un espacio de tabla predeterminado, conceda el privilegio GRANT UNLIMITED TABLESPACE.
+ Para el inicio de sesión, conceda el privilegio CREATE SESSION.
+ Si utiliza una ruta directa (que es la predeterminada para carga completa), `GRANT LOCK ANY TABLE to dms_user;`.
+ Si el esquema es diferente al utilizar el modo de preparación de tablas “DROP and CREATE”, `GRANT CREATE ANY INDEX to dms_user;`.
+ En algunos escenarios de carga completa, puede elegir la opción “DROP and CREATE table” o “TRUNCATE before loading”, donde un esquema de tabla de destino es distinto al del usuario DMS. En este caso, conceda el privilegio DROP ANY TABLE.
+ Para almacenar los cambios en tablas de cambios o en una tabla de auditoría donde el esquema de la tabla de destino sea diferente al del usuario DMS, conceda los privilegios CREATE ANY TABLE y CREATE ANY INDEX.
+ Para validar las columnas de LOB con la característica de validación, conceda el privilegio de EXECUTE `SYS.DBMS_CRYPTO` al usuario de DMS.

### Los privilegios de lectura necesarios para la AWS Database Migration Service base de datos de destino
<a name="CHAP_Target.Oracle.Privileges.Read"></a>

La cuenta AWS DMS de usuario debe tener permisos de lectura para las siguientes tablas de DBA:
+ SELECT on DBA\$1USERS
+ SELECT on DBA\$1TAB\$1PRIVS
+ SELECT on DBA\$1OBJECTS
+ SELECT on DBA\$1SYNONYMS
+ SELECT on DBA\$1SEQUENCES
+ SELECT on DBA\$1TYPES
+ SELECT on DBA\$1INDEXES
+ SELECT on DBA\$1TABLES
+ SELECT en DBA\$1TRIGGERS
+ SELECT on SYS.DBA\$1REGISTRY

Si alguno de los privilegios necesarios no se puede conceder a V\$1xxx, concédalos a V\$1\$1xxx.

### Evaluaciones previas a la migración
<a name="CHAP_Target.Oracle.Privileges.Premigration"></a>

Para usar las evaluaciones previas a la migración incluidas en [Evaluaciones de Oracle](CHAP_Tasks.AssessmentReport.Oracle.md) con Oracle como destino, debe agregar los siguientes permisos a la cuenta del usuario especificado en el punto de conexión de destino de la base de datos de Oracle:

```
GRANT SELECT ON V_$INSTANCE TO dms_user;
GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```

## Configurar una base de datos Oracle como destino para AWS Database Migration Service
<a name="CHAP_Target.Oracle.Configuration"></a>

Antes de utilizar una base de datos Oracle como destino de migración de datos, debe proporcionar una cuenta de usuario de Oracle a AWS DMS. La cuenta de usuario debe tener read/write privilegios en la base de datos Oracle, tal y como se especifica en[Privilegios de la cuenta de usuario necesarios para utilizar Oracle como destino](#CHAP_Target.Oracle.Privileges).

## Configuración del punto final cuando se utiliza Oracle como destino para AWS DMS
<a name="CHAP_Target.Oracle.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Oracle de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)comando de la sintaxis `--oracle-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Oracle como destino.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.Oracle.html)

## Tipos de datos de destino para Oracle
<a name="CHAP_Target.Oracle.DataTypes"></a>

Una base de datos Oracle de destino con la que se utiliza AWS DMS es compatible con la mayoría de los tipos de datos de Oracle. La siguiente tabla muestra los tipos de datos de destino de Oracle que se admiten cuando se utilizan AWS DMS y el mapeo predeterminado a partir de AWS DMS los tipos de datos. Para obtener más información sobre cómo ver el tipo de datos que se asigna desde el origen, consulte la sección para el origen que esté utilizando.


|  AWS DMS tipo de datos  |  Tipos de datos de Oracle  | 
| --- | --- | 
|  BOOLEANO  |  NUMBER (1)  | 
|  BYTES  |  RAW (longitud)  | 
|  DATE  |  DATETIME  | 
|  TIME  | TIMESTAMP (0) | 
|  DATETIME  |  TIMESTAMP (escala)  | 
|  INT1  | NUMBER (3) | 
|  INT2  |  NUMBER (5)  | 
|  INT4  | NUMBER (10) | 
|  INT8  |  NUMBER (19)  | 
|  NUMERIC  |  NUMBER (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  | FLOAT | 
|  STRING  |  Con indicación de fecha: DATE  Con indicación de tiempo: TIMESTAMP  Con indicación de marca de tiempo: TIMESTAMP  Con indicación de timestamp\$1with\$1timezone: TIMESTAMP WITH TIMEZONE  Con indicación de timestamp\$1with\$1local\$1timezone: TIMESTAMP WITH LOCAL TIMEZONE Con indicación de interval\$1year\$1to\$1month: INTERVAL YEAR TO MONTH  Con indicación de interval\$1day\$1to\$1second: INTERVAL DAY TO SECOND  Si longitud > 4000: CLOB En todos los demás casos: VARCHAR2 (longitud)  | 
|  UINT1  |  NUMBER (3)  | 
|  UINT2  |  NUMBER (5)  | 
|  UINT4  |  NUMBER (10)  | 
|  UINT8  |  NUMBER (19)  | 
|  WSTRING  |  Si longitud > 2000: NCLOB En todos los demás casos: NVARCHAR2 (longitud)  | 
|  BLOB  |  BLOB Para usar este tipo de datos con AWS DMS, debe habilitar el uso de BLOBs para una tarea específica. Los tipos de datos BLOB se admiten únicamente en las tablas que incluyen una clave principal  | 
|  CLOB  |  CLOB Para usar este tipo de datos con AWS DMS, debe habilitar el uso de CLOBs para una tarea específica. En la captura de datos de cambios (CDC), los tipos de datos CLOB solo se admiten en tablas que incluyen una clave principal. STRING Un tipo de VARCHAR2 datos de Oracle de la fuente con un tamaño declarado superior a 4000 bytes se asigna a través del AWS DMS CLOB a una cadena del destino de Oracle.  | 
|  NCLOB  |  NCLOB Para usar este tipo de datos con AWS DMS, debe habilitar el uso de NCLOBs para una tarea específica. En la CDC, los tipos de datos NCLOB se admiten únicamente en las tablas que incluyen una clave principal. WSTRING Un tipo de VARCHAR2 datos de Oracle en el origen con un tamaño declarado superior a 4000 bytes se asigna a través del AWS DMS NCLOB a un WSTRING del destino de Oracle.   | 
| XMLTYPE |  El tipo de datos de destino XMLTYPE solo es relevante en las tareas de replicación. Oracle-to-Oracle Cuando la base de datos de origen sea Oracle, los tipos de datos de origen se replican tal cual en el destino de Oracle. Por ejemplo, un tipo de datos XMLTYPE en el origen se crea como un tipo de datos XMLTYPE en el destino.  | 

# Uso de una base de datos de Microsoft SQL Server como destino para AWS Database Migration Service
<a name="CHAP_Target.SQLServer"></a>

Puede migrar datos a bases de datos de Microsoft SQL Server mediante AWS DMS. Con una base de datos de SQL Server como destino, podrá migrar datos desde otra base de datos de SQL Server o desde una de las bases de datos compatibles.

Para obtener información sobre las versiones de SQL Server AWS DMS compatibles como destino, consulte[Objetivos para AWS DMS](CHAP_Introduction.Targets.md). 

AWS DMS es compatible con las ediciones locales y Amazon RDS de Enterprise, Standard, Workgroup y Developer.

Para obtener información adicional sobre cómo trabajar con bases de datos de destino de SQL Server AWS DMS y las bases de datos de destino, consulte lo siguiente.

**Topics**
+ [Limitaciones del uso de SQL Server como destino para AWS Database Migration Service](#CHAP_Target.SQLServer.Limitations)
+ [Requisitos de seguridad cuando se utiliza SQL Server como objetivo para AWS Database Migration Service](#CHAP_Target.SQLServer.Security)
+ [Configuración del punto final cuando se utiliza SQL Server como destino para AWS DMS](#CHAP_Target.SQLServer.ConnectionAttrib)
+ [Tipos de datos de destino para Microsoft SQL Server](#CHAP_Target.SQLServer.DataTypes)

## Limitaciones del uso de SQL Server como destino para AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Limitations"></a>

Cuando se utiliza una base de datos de SQL Server como destino para AWS DMS, se aplican las siguientes restricciones:
+ Al crear manualmente una tabla de destino de SQL Server con una columna calculada, no se admite la replicación de carga completa al utilizar la utilidad de copia en masa de BCP. Para utilizar la replicación de carga completa, desactive la carga de BCP configurando el atributo de conexión adicional (ECA) `'useBCPFullLoad=false'` en el punto de conexión. Para obtener información sobre ECAs la configuración de los puntos finales, consulte[Creación de puntos de enlace de origen y destino](CHAP_Endpoints.Creating.md). Para obtener más información sobre cómo trabajar con BCP, consulte la [documentación de Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-and-export-bulk-data-by-using-the-bcp-utility-sql-server).
+ Al replicar tablas con tipos de datos espaciales de SQL Server (GEOMETRÍA y GEOGRAFÍA), AWS DMS reemplaza cualquier identificador de referencia espacial (SRID) que haya insertado por el SRID predeterminado. El SRID predeterminado es 0 para GEOMETRY y 4326 para GEOGRAPHY.
+ No se permite usar tablas temporales. La migración de tablas temporales podría funcionar con una tarea de solo replicación en modo de aplicación transaccional si dichas tablas se crean manualmente en el destino.
+ Actualmente, `boolean` los tipos de datos de una fuente de PostgreSQL se migran a SQLServer un destino como `bit` el tipo de datos con valores incoherentes. 

  Para resolver este problema, haga lo siguiente:
  + Cree previamente la tabla con un tipo de `VARCHAR(1)` datos para la columna (o deje que AWS DMS cree la tabla). A continuación, haga que el procesamiento descendente trate la "F" como falso y la "T" como verdadero.
  + Para evitar tener que cambiar el procesamiento posterior, agregue una regla de transformación a la tarea para cambiar los valores “F” a “0” y los valores “T” a 1 y guárdelos como el tipo de datos de bits del servidor SQL.
+ AWS DMS no admite el procesamiento de cambios para establecer la nulabilidad de las columnas (se usa la `ALTER COLUMN [SET|DROP] NOT NULL` cláusula con `ALTER TABLE` declaraciones).
+ No se admite la autenticación de Windows.

## Requisitos de seguridad cuando se utiliza SQL Server como objetivo para AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Security"></a>

A continuación se describen los requisitos de seguridad para su uso AWS DMS con un destino de Microsoft SQL Server:
+ La cuenta AWS DMS de usuario debe tener al menos el rol de `db_owner` usuario en la base de datos de SQL Server a la que se está conectando.
+ Un administrador del sistema de SQL Server deberá proporcionar este permiso a todas las cuentas de usuario de AWS DMS .

## Configuración del punto final cuando se utiliza SQL Server como destino para AWS DMS
<a name="CHAP_Target.SQLServer.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de SQL Server de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` comando del [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con SQL Server como destino.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.SQLServer.html)

## Tipos de datos de destino para Microsoft SQL Server
<a name="CHAP_Target.SQLServer.DataTypes"></a>

En la siguiente tabla se muestran los tipos de datos de destino de Microsoft SQL Server que se admiten cuando se utilizan AWS DMS y la asignación predeterminada a partir de AWS DMS los tipos de datos. Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS tipo de datos  |  Tipos de datos de SQL Server  | 
| --- | --- | 
|  BOOLEANO  |  TINYINT  | 
|  BYTES  |  VARBINARY (longitud)  | 
|  DATE  |  Para SQL Server 2008 y versiones superiores, utilice DATE. Para versiones anteriores, si la escala es 3 o inferior, utilice DATETIME. En el resto de casos, utilice VARCHAR (37).  | 
|  TIME  |  Para SQL Server 2008 y versiones posteriores, utilice DATETIME2 (%d). Para versiones anteriores, si la escala es 3 o inferior, utilice DATETIME. En el resto de casos, utilice VARCHAR (37).  | 
|  DATETIME  |  Para SQL Server 2008 y versiones posteriores, utilice DATETIME2 (escalar).  Para versiones anteriores, si la escala es 3 o inferior, utilice DATETIME. En el resto de casos, utilice VARCHAR (37).  | 
|  INT1  | SMALLINT | 
|  INT2  |  SMALLINT  | 
|  INT4  | INT | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  NUMERIC (p,s)  | 
|  REAL4  |  REAL  | 
|  REAL8  | FLOAT | 
|  STRING  |  Si la columna es una columna de fecha u hora, haga lo siguiente:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.SQLServer.html) Si la columna no es una columna de fecha o de hora, utilice VARCHAR (longitud).  | 
|  UINT1  |  TINYINT  | 
|  UINT2  |  SMALLINT  | 
|  UINT4  |  INT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  NVARCHAR (longitud)  | 
|  BLOB  |  VARBINARY (máx.) IMAGE Para usar este tipo de datos con AWS DMS, debe habilitar el uso de BLOBs para una tarea específica. AWS DMS solo admite los tipos de datos BLOB en las tablas que incluyen una clave principal.  | 
|  CLOB  |  VARCHAR (máx.) Para usar este tipo de datos con AWS DMS, debe habilitar el uso de CLOBs para una tarea específica. En la captura de datos de cambios (CDC), AWS DMS admite tipos de datos CLOB solo en tablas que incluyan una clave principal.  | 
|  NCLOB  |  NVARCHAR (máx.) Para usar este tipo de datos con AWS DMS, debe habilitar el uso de NCLOBs para una tarea específica. Durante los CDC, solo AWS DMS admite los tipos de datos del NCLOB en las tablas que incluyen una clave principal.  | 

# Uso de una base de datos PostgreSQL como destino para AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL"></a>

Puede migrar datos a bases AWS DMS de datos PostgreSQL desde otra base de datos PostgreSQL o desde una de las otras bases de datos compatibles. 

Para obtener información sobre las versiones de PostgreSQL AWS DMS compatibles como destino, consulte. [Objetivos para AWS DMS](CHAP_Introduction.Targets.md)

**nota**  
Amazon Aurora sin servidor está disponible como destino para Amazon Aurora con compatibilidad de PostgreSQL. Para obtener más información sobre Amazon Aurora sin servidor, consulte [Uso de Aurora Serverless v2](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) en la *Guía del usuario de Amazon Aurora*.
Los clústeres de base de datos de Aurora sin servidor solo son accesibles desde una Amazon VPC y no pueden usar una [dirección IP pública](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html). Por lo tanto, si pretende tener una instancia de replicación en una región diferente a la de Aurora PostgreSQL sin servidor, debe configurar la [interconexión con VPC](https://docs.aws.amazon.com//dms/latest/userguide/CHAP_ReplicationInstance.VPC.html#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer). De lo contrario, compruebe la disponibilidad de las [regiones](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraFeaturesRegionsDBEngines.grids.html#Concepts.Aurora_Fea_Regions_DB-eng.Feature.Serverless) de Aurora PostgreSQL sin servidor y decida usar una de esas regiones para Aurora PostgreSQL sin servidor y para la instancia de replicación.
La capacidad de Babelfish está integrada en Amazon Aurora y no tiene costo adicional. Para obtener más información, consulte [Uso de Babelfish para Aurora PostgreSQL como destino para AWS Database Migration Service](#CHAP_Target.PostgreSQL.Babelfish).

AWS DMS adopta un table-by-table enfoque al migrar los datos del origen al destino en la fase de carga completa. No es posible garantizar el orden de la tabla durante la fase de carga completa. Las tablas no estarán sincronizadas durante la fase de carga completa y mientras se estén aplicando transacciones almacenadas en la caché para tablas individuales. Como resultado, las limitaciones de integridad referencial activas puede derivar en errores de tareas durante la fase de carga completa.

En PostgreSQL, se implementan claves externas (límites de integridad referencial) mediante disparadores. Durante la fase de carga completa, AWS DMS carga cada tabla de una en una. Recomendamos encarecidamente que deshabilite las restricciones de clave externa durante una carga completa, utilizando uno de los siguientes métodos:
+ Deshabilite temporalmente todos los disparadores de la instancia y finalice la carga completa.
+ Utilice el parámetro `session_replication_role` en PostgreSQL.

En cualquier momento, un disparador puede estar en uno de los siguientes estados: `origin`, `replica`, `always` o bien `disabled`. Cuando se establece el parámetro `session_replication_role` en `replica`, solo los disparadores con el estado `replica` estarán activos y se disparan cuando se llaman. De lo contrario, los disparadores permanecen inactivos. 

PostgreSQL tiene un mecanismo a prueba de errores para evitar que se trunque una tabla, incluso cuando se ha establecido `session_replication_role`. Puede utilizar esto como una alternativa a la inhabilitación de disparadores para ayudar a que la carga completa se ejecute hasta su finalización. Para ello, establezca el modo de preparación de la tabla de destino en `DO_NOTHING`. De lo contrario, las operaciones DROP y TRUNCATE fallan cuando hay limitaciones de clave externa.

En Amazon RDS, puede establecer este parámetro mediante un grupo de parámetros. Para una instancia PostgreSQL que se ejecute en Amazon EC2, puede establecer el parámetro directamente.



Para obtener información adicional sobre cómo trabajar con una base de datos PostgreSQL como destino, consulte AWS DMS las siguientes secciones: 

**Topics**
+ [Limitaciones en el uso de PostgreSQL como objetivo para AWS Database Migration Service](#CHAP_Target.PostgreSQL.Limitations)
+ [Limitaciones del uso de Amazon Aurora PostgreSQL Limitless como objetivo para AWS Database Migration Service](#CHAP_Target.PostgreSQL.Aurora.Limitations)
+ [Requisitos de seguridad al utilizar una base de datos PostgreSQL como destino para AWS Database Migration Service](#CHAP_Target.PostgreSQL.Security)
+ [Configuración de punto final y atributos de conexión adicionales (ECAs) cuando se utiliza PostgreSQL como destino para AWS DMS](#CHAP_Target.PostgreSQL.ConnectionAttrib)
+ [Tipos de datos de destino para PostgreSQL](#CHAP_Target.PostgreSQL.DataTypes)
+ [Uso de Babelfish para Aurora PostgreSQL como objetivo para AWS Database Migration Service](#CHAP_Target.PostgreSQL.Babelfish)

## Limitaciones en el uso de PostgreSQL como objetivo para AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Limitations"></a>

Cuando se utiliza una base de datos de PostgreSQL como destino para AWS DMS, se aplican las siguientes restricciones:
+ Para las migraciones heterogéneas, el tipo de datos JSON se convierte internamente al tipo de datos Native CLOB.
+ En una migración de Oracle a PostgreSQL, si una columna de Oracle contiene un carácter NULO (valor hexadecimal U\$10000) AWS DMS , convierte el carácter NULL en un espacio (valor hexadecimal U\$10020). Esto se debe a una restricción de PostgreSQL.
+ AWS DMS no admite la replicación en una tabla con un índice único creado con la función de coalesce.
+ Si las tablas utilizan secuencias, actualice el valor de cada secuencia `NEXTVAL` de la base de datos de destino después de detener la replicación desde la base de datos de origen. AWS DMS copia los datos de la base de datos de origen, pero no migra las secuencias al destino durante la replicación en curso.

## Limitaciones del uso de Amazon Aurora PostgreSQL Limitless como objetivo para AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Aurora.Limitations"></a>

Se aplican las siguientes limitaciones cuando se utiliza Amazon Aurora PostgreSQL Limitless como destino para: AWS DMS
+ AWS DMS La validación de datos no es compatible con Amazon Aurora PostgreSQL Limitless.
+ AWS DMS migra las tablas de origen como tablas estándar, que no están distribuidas. Tras la migración, puede convertir estas tablas estándar en tablas sin límites siguiendo la guía de conversión oficial.

## Requisitos de seguridad al utilizar una base de datos PostgreSQL como destino para AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Security"></a>

Por motivos de seguridad, la cuenta de usuario utilizada para la migración de datos debe ser un usuario registrado en cualquier base de datos de PostgreSQL que utilice como destino.

Su terminal de destino de PostgreSQL requiere permisos de usuario mínimos para ejecutar AWS DMS una migración; consulte los siguientes ejemplos.

```
    CREATE USER newuser WITH PASSWORD 'your-password';
    ALTER SCHEMA schema_name OWNER TO newuser;
```

O bien

```
    GRANT USAGE ON SCHEMA schema_name TO myuser;
    GRANT CONNECT ON DATABASE postgres to myuser;
    GRANT CREATE ON DATABASE postgres TO myuser;
    GRANT CREATE ON SCHEMA schema_name TO myuser;
    GRANT UPDATE, INSERT, SELECT, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA schema_name TO myuser;
    GRANT TRUNCATE ON schema_name."BasicFeed" TO myuser;
```

## Configuración de punto final y atributos de conexión adicionales (ECAs) cuando se utiliza PostgreSQL como destino para AWS DMS
<a name="CHAP_Target.PostgreSQL.ConnectionAttrib"></a>

Puede utilizar la configuración del punto final y los atributos de conexión adicionales (ECAs) para configurar la base de datos de destino de PostgreSQL. 

Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` comando del [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--postgre-sql-settings '{"EndpointSetting": "value", ...}'` JSON.

Se especifica ECAs mediante el `ExtraConnectionAttributes` parámetro de su punto final.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con PostgreSQL como destino.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.PostgreSQL.html)

## Tipos de datos de destino para PostgreSQL
<a name="CHAP_Target.PostgreSQL.DataTypes"></a>

El punto final de la base de datos PostgreSQL AWS DMS es compatible con la mayoría de los tipos de datos de bases de datos PostgreSQL. La siguiente tabla muestra los tipos de datos de destino de las bases de datos PostgreSQL que se admiten cuando se AWS DMS utilizan y el mapeo AWS DMS predeterminado a partir de los tipos de datos.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte. [Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  AWS DMS tipo de datos  |  Tipos de datos de PostgreSQL  | 
| --- | --- | 
|  BOOLEAN  |  BOOLEANO  | 
|  BLOB  |  BYTEA  | 
|  BYTES  |  BYTEA  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  DATETIME  |  Si la escala es de 0 a 6, utilice TIMESTAMP. Si la escala es de 7 a 9, utilice VARCHAR (37).  | 
|  INT1  |  SMALLINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC   |  DECIMAL (P,S)  | 
|  REAL4  |  FLOAT4  | 
|  REAL8  |  FLOAT8  | 
|  STRING  |  Si la longitud es de 1 a 21 845, utilice VARCHAR (longitud en bytes).  Si la longitud es de 21 846 a 2 147 483 647, utilice VARCHAR (65535).  | 
|  UINT1  |  SMALLINT  | 
|  UINT2  |  INTEGER  | 
|  UINT4  |  BIGINT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  Si la longitud es de 1 a 21 845, utilice VARCHAR (longitud en bytes).  Si la longitud es de 21 846 a 2 147 483 647, utilice VARCHAR (65535).  | 
|  NCLOB  |  TEXT  | 
|  CLOB  |  TEXT  | 

**nota**  
Al replicar desde una fuente de PostgreSQL AWS DMS , crea la tabla de destino con los mismos tipos de datos para todas las columnas, excepto las columnas con tipos de datos definidos por el usuario. En estos casos, el tipo de datos se crea como de "caracteres variables" en el destino.

## Uso de Babelfish para Aurora PostgreSQL como objetivo para AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Babelfish"></a>

Puede migrar las tablas de origen de SQL Server a un destino de Babelfish para Amazon Aurora PostgreSQL mediante AWS Database Migration Service. Con Babelfish, Aurora PostgreSQL entiende T-SQL, el dialecto SQL patentado por Microsoft SQL Server y admite el mismo protocolo de comunicaciones. Por lo tanto, las aplicaciones escritas para SQL Server ahora pueden funcionar con Aurora con menos cambios de código. La capacidad de Babelfish está integrada en Amazon Aurora y no tiene costo adicional. Puede activar Babelfish en el clúster de Amazon Aurora desde la consola de Amazon RDS.

**Al crear el punto final de AWS DMS destino mediante los comandos de AWS DMS consola, API o CLI, especifique el motor de destino como **Amazon Aurora PostgreSQL** y asigne a la base de datos el nombre babelfish\$1db.** En la sección **Configuración de punto de conexión**, agregue ajustes para establecer `DatabaseMode` en `Babelfish` y `BabelfishDatabaseName` en el nombre de la base de datos de Babelfish T-SQL de destino.

### Agregar reglas de transformación a la tarea de migración
<a name="CHAP_Target.PostgreSQL.Babelfish.transform"></a>

Al definir una tarea de migración para un destino de Babelfish, debe incluir reglas de transformación que garanticen que DMS utilice las tablas Babelfish de T-SQL creadas previamente en la base de datos de destino.

En primer lugar, agregue una regla de transformación a la tarea de migración que ponga todos los nombres de las tablas en minúsculas. Babelfish guarda en minúsculas en el catálogo `pg_class` de PostgreSQL los nombres de las tablas que se crean con T-SQL. Sin embargo, cuando tiene tablas de SQL Server con nombres en mayúsculas y minúsculas, DMS crea las tablas con los tipos de datos nativos de PostgreSQL en lugar de los tipos de datos compatibles con T-SQL. Por ese motivo, asegúrese de agregar una regla de transformación que ponga todos los nombres de las tablas en minúsculas. Tenga en cuenta que los nombres de las columnas no deben transformarse a minúsculas.

A continuación, si utilizó el modo de migración de bases de datos múltiples al definir el clúster, agregue una regla de transformación que cambie el nombre del esquema original de SQL Server. Asegúrese de cambiar el nombre del esquema de SQL Server para incluir el nombre de la base de datos T-SQL. Por ejemplo, si el nombre del esquema de SQL Server original es dbo y el nombre de la base de datos de T-SQL es mydb, cambie el nombre del esquema a mydb\$1dbo mediante una regla de transformación.

**nota**  
Cuando se utiliza Babelfish para Aurora PostgreSQL 16 o posterior, el modo de migración predeterminado es “mutidatabase”. Al ejecutar tareas de migración de DMS, asegúrese de revisar el parámetro del modo de migración y actualizar las reglas de transformación si es necesario.

Si utiliza el modo de base de datos única, no necesita una regla de transformación para cambiar el nombre de los esquemas. Los nombres de los esquemas tienen un one-to-one mapeo con la base de datos T-SQL de destino en Babelfish.

El siguiente ejemplo de regla de transformación pone todos los nombres de las tablas en minúsculas y cambia el nombre del esquema original de SQL Server de `dbo` a `mydb_dbo`.

```
{
   "rules": [
   {
      "rule-type": "transformation",
      "rule-id": "566251737",
      "rule-name": "566251737",
      "rule-target": "schema",
      "object-locator": {
         "schema-name": "dbo"
      },
      "rule-action": "rename",
      "value": "mydb_dbo",
      "old-value": null
   },
   {
      "rule-type": "transformation",
      "rule-id": "566139410",
      "rule-name": "566139410",
      "rule-target": "table",
      "object-locator": {
         "schema-name": "%",
         "table-name": "%"
      },
      "rule-action": "convert-lowercase",
      "value": null,
      "old-value": null
   },
   {
      "rule-type": "selection",
      "rule-id": "566111704",
      "rule-name": "566111704",
      "object-locator": {
         "schema-name": "dbo",
         "table-name": "%"
      },
      "rule-action": "include",
      "filters": []
   }
]
}
```

### Restricciones al uso de un punto de conexión de destino de PostgreSQL con tablas de Babelfish
<a name="CHAP_Target.PostgreSQL.Babelfish.limitations"></a>

Las siguientes restricciones se aplican al usar un punto de conexión de destino de PostgreSQL con tablas de Babelfish:
+ Para el modo de **Preparación de tablas de destino**, utilice solo los modos **No hacer nada** o **Truncar**. No utilice el modo **Borrar tablas en el destino**. En ese modo, DMS crea las tablas como tablas de PostgreSQL que es posible que T-SQL no reconozca.
+ AWS DMS no admite el tipo de datos sql\$1variant.
+ Babelfish en el punto de conexión de Postgres no admite los tipos de datos `HEIRARCHYID`, `GEOMETRY` (anterior a 3.5.4) y `GEOGRAPHY` (anterior a 3.5.4). Para migrar estos tipos de datos, puede agregar reglas de transformación para convertir el tipo de datos a wstring(250).
+ Babelfish solo admite la migración de los tipos de datos `BINARY`, `VARBINARY` e `IMAGE` con el tipo de datos `BYTEA`. Para las versiones anteriores de Aurora PostgreSQL, puede usar DMS para migrar estas tablas a un [punto de conexión de destino de Babelfish](CHAP_Target.Babelfish.md). No es necesario especificar una longitud para el tipo de datos `BYTEA`, como se muestra en el ejemplo siguiente.

  ```
  [Picture] [VARBINARY](max) NULL
  ```

  Cambie el tipo de datos T-SQL anterior por el tipo de datos `BYTEA` compatible con T-SQL.

  ```
  [Picture] BYTEA NULL
  ```
+ Para las versiones anteriores de Aurora PostgreSQL Babelfish, si crea una tarea de migración para la replicación continua de SQL Server a Babelfish mediante el punto de conexión de destino de PostgreSQL, debe asignar el tipo de datos `SERIAL` a cualquier tabla que utilice columnas `IDENTITY`. A partir de Aurora PostgreSQL (versión 15.3/14.8 y superiores) y Babelfish (versión 3.2.0 y más recientes), se admite la columna de identidad y ya no es necesaria para asignar el tipo de datos SERIAL. Para obtener más información, consulte [Uso de SERIAL](https://docs.aws.amazon.com/dms/latest/sql-server-to-aurora-postgresql-migration-playbook/chap-sql-server-aurora-pg.tsql.sequences..html) en la sección Secuencias e identidad del *Manual de migración de SQL Server a Aurora PostgreSQL*. A continuación, cuando cree la tabla en Babelfish, cambie la definición de la columna de la siguiente manera.

  ```
      [IDCol] [INT] IDENTITY(1,1) NOT NULL PRIMARY KEY
  ```

  Cambia lo anterior por lo siguiente.

  ```
      [IDCol] SERIAL PRIMARY KEY
  ```

  Aurora PostgreSQL compatible con Babelfish crea una secuencia con la configuración predeterminada y agrega una restricción `NOT NULL` a la columna. La secuencia recién creada se comporta como una secuencia normal (incrementada en 1) y no tiene ninguna opción `SERIAL` compuesta.
+ Después de migrar los datos con tablas que utilizan columnas `IDENTITY` o el tipo de datos `SERIAL`, restablezca el objeto de secuencia basado en PostgreSQL en función del valor máximo de la columna. Después de realizar una carga completa de las tablas, utilice la siguiente consulta T-SQL para generar instrucciones que inicien el objeto de secuencia asociado.

  ```
  DECLARE @schema_prefix NVARCHAR(200) = ''
  
  IF current_setting('babelfishpg_tsql.migration_mode') = 'multi-db'
          SET @schema_prefix = db_name() + '_'
  
  SELECT 'SELECT setval(pg_get_serial_sequence(''' + @schema_prefix + schema_name(tables.schema_id) + '.' + tables.name + ''', ''' + columns.name + ''')
                 ,(select max(' + columns.name + ') from ' + schema_name(tables.schema_id) + '.' + tables.name + '));'
  FROM sys.tables tables
  JOIN sys.columns columns ON tables.object_id = columns.object_id
  WHERE columns.is_identity = 1
  
  UNION ALL
  
  SELECT 'SELECT setval(pg_get_serial_sequence(''' + @schema_prefix + table_schema + '.' + table_name + ''', 
  ''' + column_name + '''),(select max(' + column_name + ') from ' + table_schema + '.' + table_name + '));'
  FROM information_schema.columns
  WHERE column_default LIKE 'nextval(%';
  ```

  La consulta genera una serie de instrucciones SELECT que se ejecutan para actualizar los valores máximos de IDENTITY y SERIAL.
+ Para las versiones de Babelfish anteriores a la 3.2, es posible que el **modo de LOB completo** provoque un error de la tabla. Si eso ocurre, cree una tarea independiente para las tablas que no se pudieron cargar. A continuación, utilice el **Modo de LOB limitado** para especificar el valor adecuado para el **Tamaño máximo de LOB (KB)**. Otra opción es establecer la configuración del atributo de conexión del punto de conexión de SQL Server `ForceFullLob=True`.
+ En las versiones de Babelfish anteriores a la 3.2, al realizar la validación de datos con tablas de Babelfish que no utilizan claves principales basadas en números enteros, se genera un mensaje de que no se puede encontrar una clave única adecuada. A partir de Aurora PostgreSQL (versión 15.3/14.8 y superiores) y Babelfish (versión 3.2.0 y superiores), se admite la validación de datos para claves principales que no sean números enteros. 
+ Debido a las diferencias de precisión en el número de decimales por segundo, DMS informa de errores de validación de datos en las tablas de Babelfish que utilizan tipos de datos `DATETIME`. Para suprimir esos errores, puede agregar el siguiente tipo de regla de validación para los tipos de datos `DATETIME`.

  ```
  {
           "rule-type": "validation",
           "rule-id": "3",
           "rule-name": "3",
           "rule-target": "column",
           "object-locator": {
               "schema-name": "dbo",
               "table-name": "%",
               "column-name": "%",
               "data-type": "datetime"
           },
           "rule-action": "override-validation-function",
           "source-function": "case when ${column-name} is NULL then NULL else 0 end",
           "target-function": "case when ${column-name} is NULL then NULL else 0 end"
       }
  ```

# Usar una base de datos compatible con MySQL como destino para AWS Database Migration Service
<a name="CHAP_Target.MySQL"></a>

Puede migrar datos a cualquier base de datos compatible con MySQL utilizando AWS DMS cualquiera de los motores de datos de origen compatibles. AWS DMS Si va a migrar a una base de datos local compatible con MySQL, es AWS DMS necesario que el motor de origen resida en el ecosistema. AWS El motor puede estar en un servicio AWS gestionado, como Amazon RDS, Amazon Aurora o Amazon S3. O el motor puede estar en una base de datos autoadministrada en Amazon EC2. 

Puede utilizar SSL para cifrar las conexiones entre su punto de enlace compatible con MySQL y la instancia de replicación. Para obtener más información acerca de cómo utilizar SSL con un punto de enlace compatible con MySQL, consulte [Uso de SSL con AWS Database Migration Service](CHAP_Security.SSL.md). 

Para obtener información sobre las versiones de MySQL AWS DMS compatibles como destino, consulte[Objetivos para AWS DMS](CHAP_Introduction.Targets.md).

Puede utilizar las siguientes bases de datos compatibles con MySQL como destinos para: AWS DMS
+ MySQL Community Edition
+ MySQL Standard Edition
+ MySQL Enterprise Edition
+ MySQL Cluster Carrier Grade Edition
+ MariaDB Community Edition
+ MariaDB Enterprise Edition
+ Column Store de MariaDB
+ Amazon Aurora MySQL

**nota**  
Independientemente del motor de almacenamiento del origen (MyISAM, MEMORY, etc.), AWS DMS crea una tabla de destino compatible con MySQL como la tabla InnoDB de forma predeterminada.   
Si necesita una tabla con un motor de almacenamiento que no sea InnoDB, puede crear manualmente la tabla en el destino compatible con MySQL y migrar la tabla con la opción **Do nothing (No hacer nada)**. Para obtener más información, consulte [Configuración de tareas de carga completa](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

Para obtener más información sobre cómo trabajar con las bases de datos compatibles con MySQL como destino para AWS DMS, consulte las secciones siguientes. 

**Topics**
+ [Usar cualquier base de datos compatible con MySQL como destino para AWS Database Migration Service](#CHAP_Target.MySQL.Prerequisites)
+ [Limitaciones en el uso de una base de datos compatible con MySQL como destino para AWS Database Migration Service](#CHAP_Target.MySQL.Limitations)
+ [Configuración de punto final cuando se utiliza una base de datos compatible con MySQL como destino para AWS DMS](#CHAP_Target.MySQL.ConnectionAttrib)
+ [Tipos de datos de destino para MySQL](#CHAP_Target.MySQL.DataTypes)

## Usar cualquier base de datos compatible con MySQL como destino para AWS Database Migration Service
<a name="CHAP_Target.MySQL.Prerequisites"></a>

Antes de empezar a trabajar con una base de datos compatible MySQL como destino para AWS DMS, asegúrese de que cumple los siguientes requisitos previos:
+ Proporcione una cuenta de usuario AWS DMS que tenga read/write privilegios en la base de datos compatible con MySQL. Para crear los privilegios necesarios, ejecute los siguientes comandos.

  ```
  CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>';
  GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT, CREATE TEMPORARY TABLES  ON <schema>.* TO 
  '<user acct>'@'%';
  GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
  ```
+ Durante la fase de migración de carga completa, debe desactivar las claves externas en las tablas de destino. Para deshabilitar las comprobaciones de claves externas en una base de datos compatible con MySQL durante una carga completa, puede añadir el siguiente comando a la sección de **atributos de conexión adicionales** de la AWS DMS consola de su punto final de destino.

  ```
  Initstmt=SET FOREIGN_KEY_CHECKS=0;
  ```
+ Establezca el parámetro de base de datos `local_infile = 1` para permitir que AWS DMS cargue datos en la base de datos de destino.
+ Conceda los siguientes privilegios si utiliza las evaluaciones previas a la migración específicas de MySQL.

  ```
  grant select on mysql.user to <dms_user>;
  grant select on mysql.db to <dms_user>;
  grant select on mysql.tables_priv to <dms_user>;
  grant select on mysql.role_edges to <dms_user>  #only for MySQL version 8.0.11 and higher
  ```

## Limitaciones en el uso de una base de datos compatible con MySQL como destino para AWS Database Migration Service
<a name="CHAP_Target.MySQL.Limitations"></a>

Cuando se utiliza una base de datos MySQL como destino, AWS DMS no admite lo siguiente:
+ Las instrucciones del lenguaje de definición de datos (DDL): TRUNCATE PARTITION, DROP TABLE y RENAME TABLE.
+ Utilizar una instrucción `ALTER TABLE table_name ADD COLUMN column_name` para añadir columnas al inicio o en la mitad de una tabla.
+ Al cargar datos en un destino compatible con MySQL en una tarea de carga completa, AWS DMS no informa de los errores causados por restricciones en los registros de tareas, que pueden provocar errores clave duplicados o discrepancias con el número de registros. Esto se debe a la forma en que MySQL maneja los datos locales con el comando `LOAD DATA`. Asegúrese de hacer lo siguiente durante la fase de carga completa: 
  + Desactivar restricciones
  + Usa la AWS DMS validación para asegurarte de que los datos son coherentes.
+ Al actualizar el valor de una columna con el valor existente, las bases de datos compatibles con MySQL devuelven una advertencia `0 rows affected`. Aunque este comportamiento no es un error desde el punto de vista técnico, es diferente de la forma en que abordan la situación otros motores de base de datos. Por ejemplo, Oracle realiza una actualización de una fila. Para las bases de datos compatibles con MySQL, AWS DMS genera una entrada en la tabla de control awsdms\$1apply\$1exceptions y registra la siguiente advertencia.

  ```
  Some changes from the source database had no impact when applied to
  the target database. See awsdms_apply_exceptions table for details.
  ```
+ Aurora sin servidor está disponible como destino para Amazon Aurora versión 2, compatible con MySQL versión 5.7. (Seleccione la versión 2.07.1 de Aurora MySQL para poder usar Aurora sin servidor con la compatibilidad de MySQL 5.7). Para obtener más información sobre Aurora sin servidor, consulte [Uso de Aurora Serverless v2](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) en la *Guía del usuario de Amazon Aurora*.
+ AWS DMS no admite el uso de un punto final de lectura para Aurora o Amazon RDS, a menos que las instancias estén en modo grabable, es decir, que `innodb_read_only` los parámetros `read_only` y estén configurados en o. `0` `OFF` Para obtener más información acerca del uso de Amazon RDS y Aurora como objetivos, consulte lo siguiente:
  +  [Determinar a qué instancia de base de datos se ha conectado](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.BestPractices.html#AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection) 
  +  [Actualización de réplicas de lectura con MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MySQL.Replication.ReadReplicas.html#USER_MySQL.Replication.ReadReplicas.Updates) 
+ Al replicar un tipo de datos TIME, una fracción del valor temporal no se replica.
+ Al replicar el tipo de datos TIME con un atributo de conexión adicional `loadUsingCSV=false`, el valor de tiempo se limita al rango `[00:00:00, 23:59:59]`.

## Configuración de punto final cuando se utiliza una base de datos compatible con MySQL como destino para AWS DMS
<a name="CHAP_Target.MySQL.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino compatible con MySQL de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` comando del [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la `--my-sql-settings '{"EndpointSetting": "value", ...}'` sintaxis JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con MySQL como destino.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.MySQL.html)

Puede utilizar atributos de conexión adicionales para configurar la base de datos de destino compatible con MySQL.

En la tabla siguiente se muestran los atributos de conexión adicionales que puede utilizar con MySQL como destino.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.MySQL.html)

Como alternativa, puede usar el parámetro `AfterConnectScript` del comando `--my-sql-settings` para desactivar las comprobaciones de claves foráneas y especificar la zona horaria de la base de datos.

## Tipos de datos de destino para MySQL
<a name="CHAP_Target.MySQL.DataTypes"></a>

La siguiente tabla muestra los tipos de datos de destino de la base de datos MySQL que se admiten cuando se utilizan AWS DMS y el mapeo predeterminado a partir de AWS DMS los tipos de datos.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS tipos de datos  |  Tipos de datos de MySQL  | 
| --- | --- | 
|  BOOLEAN  |  BOOLEANO  | 
|  BYTES  |  Si la longitud es de 1 a 65 535, utilice VARBINARY (longitud).  Si la longitud es de 65 536 a 2 147 483 647, utilice LONGLOB.  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP  |  "Si la escala es => 0 y =< 6, utilice DATETIME (escala) Si la escala es => 7 y =< 9, utilice: VARCHAR (37)  | 
|  INT1  |  TINYINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  DECIMAL (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  |  DOUBLE PRECISION  | 
|  STRING  |  Si la longitud es de 1 a 21 845, utilice VARCHAR (longitud). Si la longitud es de 21 846 a 2 147 483 647, utilice LONGTEXT.  | 
|  UINT1  |  UNSIGNED TINYINT  | 
|  UINT2  |  UNSIGNED SMALLINT  | 
|  UINT4  |  UNSIGNED INTEGER  | 
|  UINT8  |  UNSIGNED BIGINT  | 
|  WSTRING  |  Si la longitud es de 1 a 32 767, utilice VARCHAR (longitud).  Si la longitud es de 32 768 a 2 147 483 647, utilice LONGTEXT.  | 
|  BLOB  |  Si la longitud es de 1 a 65 535, utilice BLOB. Si la longitud es de 65 536 a 2 147 483 647, utilice LONGBLOB. Si la longitud es 0, utilice LONGBLOB (compatibilidad completa con LOB).  | 
|  NCLOB  |  Si la longitud es de 1 a 65 535, utilice TEXT. Si la longitud es de 65 536 a 2 147 483 647, utilice LONGTEXT con ucs2 para CHARACTER SET. Si la longitud es 0, utilice LONGTEXT (compatibilidad completa con LOB) con ucs2 para CHARACTER SET.  | 
|  CLOB  |  Si la longitud es de 1 a 65 535, utilice TEXT. Si la longitud es de 65 536 a 2 147 483 647, utilice LONGTEXT. Si la longitud es 0, utilice LONGTEXT (compatibilidad completa con LOB).  | 

# Uso de una base de datos de Amazon Redshift como destino para AWS Database Migration Service
<a name="CHAP_Target.Redshift"></a>

Puede migrar datos a bases de datos de Amazon Redshift mediante. AWS Database Migration Service Amazon Redshift es un servicio de almacenamiento de datos administrado a escala de petabytes en la nube . Con una base de datos de Amazon Redshift como destino, puede migrar datos desde todas las demás bases de datos de origen compatibles.

Puede utilizar Amazon Redshift Serverless como destino para. AWS DMS Para obtener más información, consulte [Uso AWS DMS con Amazon Redshift Serverless como objetivoAmazon Redshift sin servidor](#CHAP_Target.Redshift.RSServerless) a continuación.

 El clúster de Amazon Redshift debe estar en la misma AWS cuenta y AWS región que la instancia de replicación. 

Durante la migración de una base de datos a Amazon Redshift, AWS DMS primero mueve los datos a un bucket de Amazon S3. Cuando los archivos se encuentran en un bucket de Amazon S3, los AWS DMS transfiere a las tablas correspondientes del almacén de datos de Amazon Redshift. AWS DMS crea el bucket de S3 en la misma AWS región que la base de datos de Amazon Redshift. La instancia de AWS DMS replicación debe estar ubicada en esa misma AWS región. 

Si utiliza la API AWS CLI o DMS para migrar datos a Amazon Redshift, configure AWS Identity and Access Management un rol (IAM) para permitir el acceso a S3. Para obtener más información sobre la creación de este rol de IAM, consulte [Crear los roles de IAM para usarlos con AWS DMS](security-iam.md#CHAP_Security.APIRole).

El punto de conexión de Amazon Redshift ofrece la total automatización de lo siguiente:
+ Generación de esquemas y mapeo de tipos de datos
+ Carga completa de las tablas de la base de datos de origen
+ Carga gradual de los cambios realizados en las tablas de origen
+ Aplicación de los cambios de esquema en lenguaje de definición de datos (DDL) realizados en la tablas de origen
+ Sincronización entre los procesos de carga completa y captura de datos de cambios (CDC)

AWS Database Migration Service admite operaciones de carga completa y de procesamiento de cambios. AWS DMS lee los datos de la base de datos de origen y crea una serie de archivos de valores separados por comas (.csv). Para operaciones de carga completa, AWS DMS crea archivos para cada tabla. AWS DMS a continuación, copia los archivos de tabla de cada tabla en una carpeta independiente de Amazon S3. Cuando los archivos se cargan en Amazon S3, AWS DMS envía un comando de copia y los datos de los archivos se copian en Amazon Redshift. Para las operaciones de procesamiento de cambios, AWS DMS copia los cambios netos en los archivos.csv. AWS DMS a continuación, carga los archivos de cambios netos en Amazon S3 y copia los datos en Amazon Redshift.

Para obtener más información sobre cómo trabajar con Amazon Redshift como objetivo AWS DMS, consulte las siguientes secciones: 

**Topics**
+ [Requisitos previos para usar una base de datos de Amazon Redshift como destino para AWS Database Migration Service](#CHAP_Target.Redshift.Prerequisites)
+ [Privilegios necesarios para usar Redshift como destino](#CHAP_Target.Redshift.Privileges)
+ [Limitaciones del uso de Amazon Redshift como objetivo para AWS Database Migration Service](#CHAP_Target.Redshift.Limitations)
+ [Configuración de una base de datos de Amazon Redshift como destino para AWS Database Migration Service](#CHAP_Target.Redshift.Configuration)
+ [Uso del enrutamiento de VPC mejorado con Amazon Redshift como objetivo para AWS Database Migration Service](#CHAP_Target.Redshift.EnhancedVPC)
+ [Creación y uso de AWS KMS claves para cifrar los datos de destino de Amazon Redshift](#CHAP_Target.Redshift.KMSKeys)
+ [Configuración de punto final cuando se utiliza Amazon Redshift como destino para AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib)
+ [Uso de una clave de cifrado de datos y un bucket de Amazon S3 como almacenamiento intermedio](#CHAP_Target.Redshift.EndpointSettings)
+ [Configuración de tareas de subprocesos múltiples para Amazon Redshift](#CHAP_Target.Redshift.ParallelApply)
+ [Tipos de datos de destino para Amazon Redshift](#CHAP_Target.Redshift.DataTypes)
+ [Uso AWS DMS con Amazon Redshift Serverless como objetivo](#CHAP_Target.Redshift.RSServerless)

## Requisitos previos para usar una base de datos de Amazon Redshift como destino para AWS Database Migration Service
<a name="CHAP_Target.Redshift.Prerequisites"></a>

En la siguiente lista se describen los requisitos previos necesarios para trabajar con Amazon Redshift como destino de la migración de datos:
+ Utilice la consola AWS de administración para lanzar un clúster de Amazon Redshift. Anote la información básica sobre su AWS cuenta y su clúster de Amazon Redshift, como la contraseña, el nombre de usuario y el nombre de la base de datos. Necesita estos valores al crear el punto de conexión de destino de Amazon Redshift. 
+ El clúster de Amazon Redshift debe estar en la misma AWS cuenta y AWS región que la instancia de replicación.
+ La instancia de AWS DMS replicación necesita conectividad de red con el punto final de Amazon Redshift (nombre de host y puerto) que utiliza el clúster.
+ AWS DMS utiliza un bucket de Amazon S3 para transferir datos a la base de datos de Amazon Redshift. Para que AWS DMS cree el bucket, la consola utiliza un rol de IAM, `dms-access-for-endpoint`. Si utiliza la API AWS CLI o DMS para crear una migración de base de datos con Amazon Redshift como base de datos de destino, debe crear este rol de IAM. Para obtener más información sobre la creación de este rol, consulte [Crear los roles de IAM para usarlos con AWS DMS](security-iam.md#CHAP_Security.APIRole). 
+ AWS DMS convierte BLOBs CLOBs, y NCLOBs en un VARCHAR en la instancia de Amazon Redshift de destino. Amazon Redshift no admite tipos de datos VARCHAR de más de 64 KB, por lo que no puede almacenar datos tradicionales en Amazon LOBs Redshift. 
+ Establezca la configuración de tareas de metadatos de destino en [BatchApplyEnabled](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md)`true` AWS DMS para gestionar los cambios en las tablas de destino de Amazon Redshift durante los CDC. Se requiere una clave principal tanto en la tabla de origen como en la tabla de destino. Sin una clave principal, los cambios se aplican instrucción por instrucción. Y eso puede afectar negativamente el rendimiento de la tarea durante CDC al causar latencia en el destino e impactar la cola de confirmación del clúster. 
+ Si activa la seguridad a nivel de fila en las tablas de Redshift, debe conceder los permisos adecuados a todos los usuarios de DMS.

## Privilegios necesarios para usar Redshift como destino
<a name="CHAP_Target.Redshift.Privileges"></a>

Utilice el comando GRANT para definir privilegios de acceso para un usuario o grupo de usuarios. Los privilegios incluyen opciones de acceso como, por ejemplo, poder leer datos en tablas y vistas, escribir datos y crear tablas. Para obtener más información sobre el uso de CONCEDER con Amazon Redshift, consulte [CONCEDER](https://docs.aws.amazon.com//redshift/latest/dg/r_GRANT.html) en la *Guía para desarrolladores de base de datos de Amazon Redshift*. 

A continuación, se muestra la sintaxis para otorgar privilegios específicos para una tabla, una base de datos, un esquema, una función, un procedimiento o privilegios en el nivel de lenguaje en tablas o vistas de Amazon Redshift.

```
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
    ON DATABASE db_name [, ...]
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT USAGE 
    ON LANGUAGE language_name [, ...]
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]
```

A continuación, se muestra la sintaxis de los privilegios del nivel de columna en tablas y vistas de Amazon Redshift. 

```
GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) }
     ON { [ TABLE ] table_name [, ...] }
     TO { username | GROUP group_name | PUBLIC } [, ...]
```

A continuación, se muestra la sintaxis del privilegio ASSUMEROLE concedido a usuarios y grupos con un rol especificado.

```
GRANT ASSUMEROLE
    ON { 'iam_role' [, ...] | ALL }
    TO { username | GROUP group_name | PUBLIC } [, ...]
    FOR { ALL | COPY | UNLOAD } [, ...]
```

## Limitaciones del uso de Amazon Redshift como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Redshift.Limitations"></a>

Las siguientes restricciones se aplican al utilizar una base de datos de Amazon Redshift como destino:
+ No habilite el control de versiones para el bucket de S3 que utiliza como almacenamiento intermedio para el destino de Amazon Redshift. Si necesita el control de versiones de S3, utilice las políticas de ciclo de vida para eliminar activamente las versiones antiguas. De lo contrario, es posible que se produzcan errores en la conexión de las pruebas de punto de conexión debido al tiempo de espera de una llamada a `list-object` de S3. Para crear una política de ciclo de vida para un bucket de S3, consulte [Administración del ciclo de vida del almacenamiento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Para eliminar una versión de un objeto de S3, consulte [Eliminación de versiones de objetos de un bucket con control de versiones habilitado](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ El siguiente DLL no se admite:

  ```
  ALTER TABLE table name MODIFY COLUMN column name data type;
  ```
+  AWS DMS no puede migrar ni replicar los cambios en un esquema cuyo nombre comience por subrayado (\$1). Si tiene esquemas que tienen un nombre que comienza por un carácter de subrayado, utilice transformaciones de asignación para cambiar el nombre del esquema en el destino. 
+  Amazon Redshift no admite VARCHARs más de 64 KB. LOBs de las bases de datos tradicionales no se pueden almacenar en Amazon Redshift.
+  No se puede aplicar una instrucción DELETE a una tabla con una clave principal de varias columnas si alguno de los nombres de columna de la clave principal utiliza una palabra reservada. Vaya [aquí](https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html) para ver una lista con las palabras reservadas de Amazon Redshift.
+ Es posible que se produzcan problemas de rendimiento si el sistema de origen realiza operaciones UPDATE en la clave principal de una tabla de origen. Estos problemas de rendimiento se producen al aplicar cambios al destino. Esto se debe a que las operaciones UPDATE (y DELETE) dependen del valor de la clave principal para identificar la fila de destino. Si actualiza la clave principal de una tabla de origen, el registro de tareas contendrá mensajes como los siguientes:

  ```
  Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
  ```
+ DMS no admite nombres de DNS personalizados al configurar un punto de conexión para un clúster de Redshift; se debe utilizar el nombre de DNS proporcionado por Amazon. Como el clúster de Amazon Redshift debe estar en la misma AWS cuenta y región que la instancia de replicación, se produce un error en la validación si se utiliza un punto de enlace de DNS personalizado.
+ Amazon Redshift tiene un tiempo de espera predeterminado de 4 horas para las sesiones inactivas. Cuando no hay ninguna actividad en la tarea de replicación de DMS, Redshift desconecta la sesión después de 4 horas. Se pueden producir errores si el DMS no puede conectarse y es posible que necesite reiniciarse. Como solución alternativa, establezca un límite de TIEMPO DE ESPERA DE SESIÓN superior a 4 horas para el usuario de replicación de DMS. O bien, consulte la descripción de [ALTER USER](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html) en la *Guía para desarrolladores de bases de datos de Amazon Redshift*.
+ Cuando AWS DMS replica los datos de la tabla de origen sin una clave principal o única, la latencia de la CDC puede ser alta, lo que resulta en un nivel de rendimiento inaceptable.
+ No se admite el truncamiento de particiones durante la replicación de CDC desde el origen de Oracle al destino de Redshift.
+ Es posible que aparezcan registros duplicados en las tablas de destino porque Amazon Redshift no exige las claves principales y AWS DMS puede reproducir la CDC cuando se reanuda una tarea. Para evitar los duplicados, utilice la configuración. `ApplyErrorInsertPolicy=INSERT_RECORD` Para obtener más información, consulte [Configuración de las tareas de administración de errores](CHAP_Tasks.CustomizingTasks.TaskSettings.ErrorHandling.md). Como alternativa, puede implementar procedimientos de detección de duplicados y limpieza posterior a la migración a nivel de aplicación.

## Configuración de una base de datos de Amazon Redshift como destino para AWS Database Migration Service
<a name="CHAP_Target.Redshift.Configuration"></a>

AWS Database Migration Service debe estar configurado para funcionar con la instancia de Amazon Redshift. En la siguiente tabla se describen las propiedades de configuración disponibles para el punto de conexión de Amazon Redshift.


| Propiedad | Description (Descripción) | 
| --- | --- | 
| server | El nombre del clúster de Amazon Redshift que está utilizando. | 
| puerto | El número de puerto de Amazon Redshift. El valor predeterminado es 5439. | 
| nombre de usuario | Un nombre de usuario de Amazon Redshift para un usuario registrado. | 
| contraseña | La contraseña del usuario citado en la propiedad del nombre de usuario. | 
| database | El nombre del almacenamiento de datos de Amazon Redshift (servicio) con le que trabaja. | 

Si desea agregar atributos adicionales de la cadena de conexión al punto de conexión de Amazon Redshift, puede especificar los atributos `maxFileSize` y `fileTransferUploadStreams`. Para obtener más información sobre estos atributos, consulte [Configuración de punto final cuando se utiliza Amazon Redshift como destino para AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib).

## Uso del enrutamiento de VPC mejorado con Amazon Redshift como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Redshift.EnhancedVPC"></a>

Cuando utiliza enrutamiento de VPC mejorado con el destino de Amazon Redshift, todo el tráfico COPY entre el clúster de Amazon Redshift y los repositorios de datos pasa a través de la VPC. Puesto que Enhanced VPC Routing afecta a la forma en la que Amazon Redshift accede a otros recursos, los comandos COPY podrían fallar si no ha configurado su VPC correctamente.

AWS DMS puede verse afectado por este comportamiento porque utiliza el comando COPY para mover datos de S3 a un clúster de Amazon Redshift.

Los siguientes son los pasos AWS DMS necesarios para cargar datos en un destino de Amazon Redshift:

1. AWS DMS copia los datos de la fuente a archivos.csv del servidor de replicación.

1. AWS DMS usa el AWS SDK para copiar los archivos.csv en un bucket de S3 de su cuenta.

1. AWS DMS a continuación, utiliza el comando COPY de Amazon Redshift para copiar los datos de los archivos.csv de S3 a una tabla adecuada de Amazon Redshift.

Si el enrutamiento de VPC mejorado no está habilitado, Amazon Redshift dirige el tráfico a través de Internet, incluido el tráfico a otros servicios de la red. AWS Si la función no está activada, no tendrá que configurar la ruta de acceso a la red. Si la función está activada, deberá crear una ruta de acceso a la red específica entre la VPC de su clúster y sus recursos de datos. Para obtener más información sobre la configuración necesaria, consulte [Enrutamiento de la VPC mejorado](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html) en la documentación de Amazon Redshift. 

## Creación y uso de AWS KMS claves para cifrar los datos de destino de Amazon Redshift
<a name="CHAP_Target.Redshift.KMSKeys"></a>

Puede cifrar los datos de destino enviados a Amazon S3 antes de que se copien en Amazon Redshift. Para ello, puede crear y usar claves personalizadas AWS KMS . Puede utilizar la clave que ha creado para cifrar los datos de destino mediante uno de los siguientes mecanismos al crear el punto de conexión de destino de Amazon Redshift:
+ Utilice la opción siguiente al ejecutar el comando de `create-endpoint` utilizando la AWS CLI.

  ```
  --redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-kms-key-ARN"}'
  ```

  Aquí, `your-kms-key-ARN` está el nombre de recurso de Amazon (ARN) para su clave de KMS. Para obtener más información, consulte [Uso de una clave de cifrado de datos y un bucket de Amazon S3 como almacenamiento intermedio](#CHAP_Target.Redshift.EndpointSettings).
+ Establezca el atributo de conexión adicional `encryptionMode` al valor `SSE_KMS` y el atributo de conexión adicional `serverSideEncryptionKmsKeyId` al ARN de su clave de KMS. Para obtener más información, consulte [Configuración de punto final cuando se utiliza Amazon Redshift como destino para AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib).

Para cifrar los datos de destino de Amazon Redshift mediante una clave de KMS, necesita AWS Identity and Access Management un rol (IAM) que tenga permisos para acceder a los datos de Amazon Redshift. A continuación, se accede a este rol de IAM en una política (una política de claves) asociada a la clave de cifrado que cree. Puede hacer esto en su propia consola de IAM mediante la creación de lo siguiente:
+ Un rol de IAM con una política administrada. AWS
+ Una clave de KMS con una política de claves que hace referencia a este rol.

En los procedimientos siguientes se describe cómo hacerlo.

**Para crear un rol de IAM con la política gestionada requerida AWS**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Seleccione **Roles** en el panel de navegación. Se abre la página **Roles**.

1. Elija **Crear rol**. Se abre la página **Create role (Crear rol)**.

1. Con el **servicio de AWS ** elegido como entidad de confianza, elija **DMS** como servicio para usar el rol.

1. Elija **Siguiente: permisos**. Aparece la página **Attach permissions policies (Asociar políticas de permisos)**.

1. Busque y seleccione la política `AmazonDMSRedshiftS3Role`.

1. Elija **Siguiente: etiquetas**. Aparece la página **Add tags (Agregar etiquetas)**. A continuación, puede añadir las etiquetas que desee.

1. Elija **Next: Review (Siguiente: Revisar)** y revise los resultados.

1. Si la configuración es la que necesita, introduzca un nombre para el rol (por ejemplo, `DMS-Redshift-endpoint-access-role`) y cualquier descripción adicional, a continuación, elija **Create role (Crear rol)**. Se abre la página **Roles** con un mensaje que indica que el rol se ha creado.

Ya ha creado el nuevo rol para acceder a recursos de Amazon Redshift para cifrado con un nombre especificado, por ejemplo, `DMS-Redshift-endpoint-access-role`.

**Para crear una clave de AWS KMS cifrado con una política de claves que haga referencia a su función de IAM**
**nota**  
Para obtener más información sobre cómo AWS DMS funciona con las claves de AWS KMS cifrado, consulte[Establecer una clave de cifrado y especificar AWS KMS los permisos](CHAP_Security.md#CHAP_Security.EncryptionKey).

1. Inicie sesión en la consola AWS Key Management Service (AWS KMS) Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms).

1. Para cambiarla Región de AWS, usa el selector de regiones en la esquina superior derecha de la página.

1. En el panel de navegación, elija **Claves administradas por el cliente**.

1. Elija **Crear clave**. Se abrirá la página **Configure key (Configurar clave)**.

1. En **Key type (Tipo de clave)**, elija **Symmetric (Simétrica)**.
**nota**  
Al crear esta clave, solo puede crear una clave simétrica, ya que todos los AWS servicios, como Amazon Redshift, solo funcionan con claves de cifrado simétricas.

1. Elija **Advanced Options**. En **Key material origin (Origen del material de la clave)**, asegúrese de elegir **KMS** y, a continuación, seleccione **Next (Siguiente)**. Se abrirá la página **Add labels (Agregar etiquetas)**.

1. En **Create alias and description (Crear alias y descripción)**, escriba un alias para la clave (por ejemplo, `DMS-Redshift-endpoint-encryption-key`) y una descripción adicional.

1. En **Tags (Etiquetas)**, agregue las etiquetas que desee para ayudar a identificar la clave y realizar el seguimiento de su uso y, a continuación, seleccione **Next (Siguiente)**. Se abre la página **Define key administrative permissions (Definir permisos administrativos clave)**, que muestra una lista de usuarios y roles entre los que puede elegir.

1. Añada los usuarios y roles que desee para administrar la clave. Asegúrese de que estos usuarios y roles tengan los permisos necesarios para administrar la clave. 

1. En **Key deletion (Eliminación de clave)**, elija si los administradores de claves pueden eliminar la clave; a continuación, seleccione **Next (Siguiente)**. Se abre la página **Define key usage permissions (Definir permisos de uso de claves)** que muestra una lista adicional de usuarios y roles entre los que puede elegir.

1. En **Esta cuenta**, elija los usuarios disponibles que deberán poder realizar operaciones criptográficas en los objetivos de Amazon Redshift. Además, elija el rol que creó previamente en **Roles** para habilitar el acceso con el fin de cifrar los objetos de destino de Amazon Redshift, por ejemplo `DMS-Redshift-endpoint-access-role`.

1. **Si desea añadir otras cuentas que no figuran en la lista para que tengan el mismo acceso, en **Otras AWS cuentas**, seleccione **Añadir otra AWS cuenta** y, a continuación, seleccione Siguiente.** Se abre la página **Review and edit key policy (Revisar y editar la política de claves)** que muestra el JSON de la política de claves que puede revisar y editar escribiendo en el JSON existente. Aquí puede ver en qué puntos de la política de claves se hace referencia al rol y a los usuarios (por ejemplo, `Admin` y `User1`) que eligió en el paso anterior. También puede ver las distintas acciones de claves permitidas para las distintas entidades principales (usuarios y roles), tal y como se muestra en el siguiente ejemplo.

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

****  

   ```
   {
       "Id": "key-consolepolicy-3",
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Enable IAM User Permissions",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:root"
                   ]
               },
               "Action": "kms:*",
               "Resource": "*"
           },
           {
               "Sid": "Allow access for Key Administrators",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/Admin"
                   ]
               },
               "Action": [
                   "kms:Create*",
                   "kms:Describe*",
                   "kms:Enable*",
                   "kms:List*",
                   "kms:Put*",
                   "kms:Update*",
                   "kms:Revoke*",
                   "kms:Disable*",
                   "kms:Get*",
                   "kms:Delete*",
                   "kms:TagResource",
                   "kms:UntagResource",
                   "kms:ScheduleKeyDeletion",
                   "kms:CancelKeyDeletion"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow use of the key",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow attachment of persistent resources",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:ListGrants",
                   "kms:RevokeGrant"
               ],
               "Resource": "*",
               "Condition": {
                   "Bool": {
                       "kms:GrantIsForAWSResource": true
                   }
               }
           }
       ]
   }
   ```

------

1. Seleccione **Finalizar**. La página de **claves de cifrado** se abre con un mensaje que indica que la tuya AWS KMS key ha sido creada.

Ahora ha creado una nueva clave de KMS con un alias especificado (por ejemplo, `DMS-Redshift-endpoint-encryption-key`). Esta clave permite cifrar AWS DMS los datos de destino de Amazon Redshift.

## Configuración de punto final cuando se utiliza Amazon Redshift como destino para AWS DMS
<a name="CHAP_Target.Redshift.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Amazon Redshift de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` comando de la [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)sintaxis `--redshift-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Amazon Redshift como destino.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.Redshift.html)

## Uso de una clave de cifrado de datos y un bucket de Amazon S3 como almacenamiento intermedio
<a name="CHAP_Target.Redshift.EndpointSettings"></a>

Puede utilizar la configuración de puntos de conexión de destino de Amazon Redshift para configurar lo siguiente:
+ Una clave de cifrado AWS KMS de datos personalizada. A continuación, puede utilizar esta clave para cifrar los datos enviados a Amazon S3 antes de que se copien en Amazon Redshift.
+ Un bucket de S3 personalizado como almacenamiento intermedio para datos migrados a Amazon Redshift.
+ Asigne un booleano como booleano de un origen de PostgreSQL. De forma predeterminada, un tipo BOOLEANO se migra como varchar(1). Puede especificar `MapBooleanAsBoolean` para permitir que el destino de Redshift migre el tipo booleano como booleano, como se muestra en el siguiente ejemplo.

  ```
  --redshift-settings '{"MapBooleanAsBoolean": true}'
  ```

  Tenga en cuenta que debe establecer esta configuración en los puntos de conexión de origen y destino para que surta efecto.

### Configuración de clave de KMS para cifrado de datos
<a name="CHAP_Target.Redshift.EndpointSettings.KMSkeys"></a>

Los siguientes ejemplos muestran cómo configurar una clave de KMS personalizada para cifrar los datos que se envíen a S3. Para comenzar, podría realizar la siguiente llamada a `create-endpoint` en la AWS CLI.

```
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target 
--engine-name redshift --username your-username --password your-password 
--server-name your-server-name --port 5439 --database-name your-db-name 
--redshift-settings '{"EncryptionMode": "SSE_KMS", 
"ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'
```

Aquí, el objeto JSON especificado por la opción `--redshift-settings` define dos parámetros. Uno es un parámetro `EncryptionMode` con el valor `SSE_KMS`. El otro es un parámetro `ServerSideEncryptionKmsKeyId` con el valor `arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1`. Este valor es un nombre de recurso de Amazon (ARN) para su clave de KMS personalizada.

De forma predeterminada, el cifrado de datos de S3 se realiza utilizando el cifrado del lado del servidor de S3. Para el destino de Amazon Redshift del ejemplo anterior, esto es también equivalente a especificar la configuración del punto de conexión, como se indica en el siguiente ejemplo.

```
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target 
--engine-name redshift --username your-username --password your-password 
--server-name your-server-name --port 5439 --database-name your-db-name 
--redshift-settings '{"EncryptionMode": "SSE_S3"}'
```

Para obtener más información sobre cómo trabajar con el cifrado en el lado del servidor de S3, consulte [Protección de datos con el cifrado del lado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) en la *Guía del usuario de Amazon Simple Storage Service*.

**nota**  
También puede usar el comando `modify-endpoint` de la CLI para cambiar el valor del parámetro de `EncryptionMode` para un punto de conexión existente de `SSE_KMS` a `SSE_S3`. Sin embargo, no se puede cambiar el valor `EncryptionMode` de `SSE_S3` a `SSE_KMS`.

### Configuración del bucket de Amazon S3
<a name="CHAP_Target.Redshift.EndpointSettings.S3Buckets"></a>

Al migrar datos a un punto final de destino de Amazon Redshift, AWS DMS utiliza un bucket de Amazon S3 predeterminado como almacenamiento de tareas intermedio antes de copiar los datos migrados a Amazon Redshift. Por ejemplo, los ejemplos que se muestran para crear un punto de conexión de destino de Amazon Redshift con una clave de cifrado de datos de AWS KMS utilizan este bucket de S3 predeterminado (consulte [Configuración de clave de KMS para cifrado de datos](#CHAP_Target.Redshift.EndpointSettings.KMSkeys)). 

En su lugar, puede especificar un bucket de S3 personalizado para este almacenamiento intermedio incluyendo los siguientes parámetros en el valor de su `--redshift-settings` opción en el AWS CLI `create-endpoint` comando:
+ `BucketName`: una cadena que especifica como el nombre del almacenamiento de bucket de S3. Si el puesto de acceso al servicio se basa en la política `AmazonDMSRedshiftS3Role`, este valor debe tener un prefijo de `dms-`, por ejemplo, `dms-my-bucket-name`.
+ `BucketFolder`: (opcional) una cadena que puede especificar como nombre de la carpeta de almacenamiento en el bucket de S3 especificado.
+ `ServiceAccessRoleArn`: el ARN de un rol de IAM que permite acceso administrativo al bucket de S3. Normalmente, crea este rol en función de la política `AmazonDMSRedshiftS3Role`. Para ver un ejemplo, consulte el procedimiento para crear un rol de IAM con la política administrada por AWS requerida en [Creación y uso de AWS KMS claves para cifrar los datos de destino de Amazon Redshift](#CHAP_Target.Redshift.KMSKeys).
**nota**  
Si especifica el ARN de un rol de IAM distinto utilizando la opción `--service-access-role-arn` del comando `create-endpoint`, esta opción de rol de IAM tiene prioridad.

El ejemplo siguiente muestra cómo podría utilizar estos parámetros para especificar un bucket de Amazon S3 personalizado en la siguiente llamada `create-endpoint` mediante la AWS CLI. 

```
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target 
--engine-name redshift --username your-username --password your-password 
--server-name your-server-name --port 5439 --database-name your-db-name 
--redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", 
"BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"}'
```

## Configuración de tareas de subprocesos múltiples para Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply"></a>

Puede mejorar el rendimiento de las tareas de captura de datos de carga completa y de cambios (CDC) para un punto de conexión de destino de Amazon Redshift mediante la configuración de tareas de subprocesos múltiples. Le habilitan para especificar el número de subprocesos simultáneos y el número de registros que se van a almacenar en un búfer.

### Configuración de tareas de carga completa de subprocesos múltiples para Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply.FullLoad"></a>

Para mejorar el rendimiento a plena carga, puede utilizar la siguiente configuración de tareas `ParallelLoad*`:
+ `ParallelLoadThreads`: especifica el número de subprocesos simultáneos que utiliza DMS durante una carga completa para insertar registros de datos en un punto de conexión de destino de Amazon Redshift. El valor predeterminado es cero (0) y el valor máximo es 32. Para obtener más información, consulte [Configuración de tareas de carga completa](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

  Puede establecer el atributo `enableParallelBatchInMemoryCSVFiles` en `false` al usar la configuración de tareas `ParallelLoadThreads`. El atributo mejora el rendimiento de las tareas más grandes con varios subprocesos de plena carga al permitir que DMS escriba en el disco en lugar de en la memoria. El valor predeterminado es `true`.
+ `ParallelLoadBufferSize`: especifica el número máximo de solicitudes de registro de datos cuando se utilizan subprocesos de carga paralelos con destino de Redshift. El valor predeterminado es 100 y el máximo es 1000. Le recomendamos que utilice esta opción cuando sea ParallelLoadThreads > 1 (mayor que uno).

**nota**  
La compatibilidad con el uso de la configuración de `ParallelLoad*` tareas durante la carga completa en los puntos de enlace de destino de Amazon Redshift está disponible en AWS DMS las versiones 3.4.5 y posteriores.  
No se admite el uso de la configuración de punto de conexión de `ReplaceInvalidChars` Redshift durante la captura de datos de cambios (CDC) o durante una tarea de migración de CARGA COMPLETA con carga paralela. Se admite la migración de CARGA COMPLETA cuando la carga paralela no está habilitada. *Para obtener más información, consulte la referencia de [RedshiftSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_RedshiftSettings.html)la API AWS Database Migration Service *

### Configuración de tareas de CDC con varios subprocesos para Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply.CDC"></a>

Para mejorar el rendimiento de CDC, puede utilizar la siguiente configuración de tareas `ParallelApply*`:
+ `ParallelApplyThreads`— Especifica el número de subprocesos simultáneos que se AWS DMS utilizan durante una carga de CDC para enviar registros de datos a un punto final de destino de Amazon Redshift. El valor predeterminado es cero (0) y el valor máximo es 32. El valor mínimo recomendado es igual al número de secciones en el clúster.
+ `ParallelApplyBufferSize`: especifica el número máximo de solicitudes de registro de datos cuando se utilizan subprocesos de aplicación paralelos con destino de Redshift. El valor predeterminado es 100 y el máximo es 1000. Se recomienda utilizar esta opción cuando sea ParallelApplyThreads > 1 (mayor que uno). 

  Para obtener el máximo beneficio de Redshift como objetivo, recomendamos que el valor de `ParallelApplyBufferSize` sea al menos dos veces (el doble o más) el número de `ParallelApplyThreads`.

**nota**  
El soporte para el uso de la configuración de `ParallelApply*` tareas durante los CDC en los puntos finales de destino de Amazon Redshift está disponible en AWS DMS las versiones 3.4.3 y posteriores.

El nivel de paralelismo aplicado depende de la correlación entre el *tamaño total del lote* y el *tamaño máximo del archivo* utilizado para transferir los datos. Cuando se utilizan configuraciones de tareas de CDC con varios subprocesos con un objetivo de Redshift, se obtienen beneficios cuando el tamaño del lote es grande en relación con el tamaño máximo del archivo. Por ejemplo, puede utilizar la siguiente combinación de ajustes de punto de conexión y tarea para ajustar el rendimiento y lograr un rendimiento óptimo. 

```
// Redshift endpoint setting
                
        MaxFileSize=250000;

// Task settings

        BatchApplyEnabled=true;
        BatchSplitSize =8000;
        BatchApplyTimeoutMax =1800;
        BatchApplyTimeoutMin =1800;
        ParallelApplyThreads=32;
        ParallelApplyBufferSize=100;
```

Con la configuración del ejemplo anterior, un cliente con una gran carga de trabajo transaccional se beneficia de que el búfer de lotes, que contiene 8000 registros, se rellena en 1800 segundos y utiliza 32 subprocesos paralelos con un tamaño de archivo máximo de 250 MB.

Para obtener más información, consulte [Configuración de ajuste del procesamiento de cambios](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md).

**nota**  
Las consultas de DMS que se ejecutan durante la replicación en curso en un clúster de Redshift pueden compartir la misma cola de WLM (administración de carga de trabajo) con otras consultas de aplicaciones que se estén ejecutando. Por lo tanto, considere la posibilidad de configurar correctamente las propiedades del WLM para influir en el rendimiento durante la replicación en curso en un objetivo de Redshift. Por ejemplo, si se están ejecutando otras consultas de ETL paralelas, DMS se ejecuta más lentamente y se pierden las ganancias de rendimiento.

## Tipos de datos de destino para Amazon Redshift
<a name="CHAP_Target.Redshift.DataTypes"></a>

El punto de conexión de Amazon Redshift AWS DMS admite la mayoría de los tipos de datos de Amazon Redshift. En la siguiente tabla se muestran los tipos de datos de destino de Amazon Redshift que se admiten cuando se utiliza AWS DMS y el mapeo predeterminado a partir de los tipos de AWS DMS datos.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).


| AWS DMS tipos de datos | Tipos de datos de Amazon Redshift | 
| --- | --- | 
| BOOLEANO | BOOL | 
| BYTES | VARCHAR (longitud) | 
| DATE | DATE | 
| TIME | VARCHAR(20) | 
| DATETIME |  Si la escala es => 0 y =< 6, según el tipo de columna de destino de Redshift, una de las siguientes opciones: TIMESTAMP (s) TIMESTAMPTZ: si la marca temporal de origen contiene un desfase de zona (como en SQL Server u Oracle), se convierte a UTC al insertarlo o actualizarlo. Si no contiene ningún desfase, la hora ya se considera en UTC. Si la escala es => 7 y =< 9, utilice:  VARCHAR (37) | 
| INT1 | INT2 | 
| INT2 | INT2 | 
| INT4 | INT4 | 
| INT8 | INT8 | 
| NUMERIC | Si la escala es => 0 y =< 37, utilice:  NUMERIC (p,s)  Si la escala es => 38 y =< 127, utilice:  VARCHAR (longitud) | 
| REAL4 | FLOAT4 | 
| REAL8 | FLOAT8 | 
| STRING | Si la longitud es de 1-65 535, utilice VARCHAR (longitud en bytes)  Si la longitud es 65,536–2,147,483,647, utilice VARCHAR (65535) | 
| UINT1 | INT2 | 
| UINT2 | INT2 | 
| UINT4 | INT4 | 
| UINT8 | NUMERIC (20,0) | 
| WSTRING |  Si la longitud es de 1-65 535, utilice NVARCHAR (longitud en bytes)  Si la longitud es 65,536–2,147,483,647, utilice NVARCHAR (65535) | 
| BLOB | VARCHAR (longitud máxima del LOB \$12)  La longitud máxima del LOB no puede superar 31 KB. Amazon Redshift no admite VARCHARs más de 64 KB. | 
| NCLOB | NVARCHAR (longitud máxima del LOB)  La longitud máxima del LOB no puede superar 63 KB. Amazon Redshift no admite VARCHARs más de 64 KB. | 
| CLOB | VARCHAR (longitud máxima del LOB)  La longitud máxima del LOB no puede superar 63 KB. Amazon Redshift no admite VARCHARs más de 64 KB. | 

## Uso AWS DMS con Amazon Redshift Serverless como objetivo
<a name="CHAP_Target.Redshift.RSServerless"></a>

AWS DMS admite el uso de Amazon Redshift Serverless como punto final de destino. Para obtener información sobre el uso de Amazon Redshift sin servidor, consulte [Amazon Redshift sin servidor](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-serverless.html) en la [Guía de administración de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html).

En este tema se describe cómo utilizar un punto de conexión Amazon Redshift Serverless con. AWS DMS

**nota**  
Al crear un punto final Amazon Redshift Serverless, en el **DatabaseName**campo de la configuración del [RedshiftSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_RedshiftSettings.html)punto de conexión, utilice el nombre del almacén de datos de Amazon Redshift o el nombre del punto final del grupo de trabajo. Para el **ServerName**campo, utilice el valor del punto de conexión que aparece en la página del **grupo de trabajo** del clúster sin servidor (por ejemplo,). `default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com` Para obtener información acerca de cómo crear un punto de conexión, consulte [Creación de puntos de enlace de origen y destino](CHAP_Endpoints.Creating.md). Para obtener información sobre el punto de conexión del grupo de trabajo, consulte [Conexión a Amazon Redshift sin servidor](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-connecting.html).

### Política de confianza con Amazon Redshift sin servidor como objetivo
<a name="CHAP_Target.Redshift.RSServerless.policy"></a>

Si utiliza Amazon Redshift sin servidor como punto de conexión de destino, debe agregar la siguiente sección resaltada a la política de confianza. Esta política de confianza está asociada al puesto `dms-access-for-endpoint`.

Para obtener más información sobre el uso de una política de confianza con AWS DMS, consulte. [Crear los roles de IAM para usarlos con AWS DMS](security-iam.md#CHAP_Security.APIRole)

### Limitaciones al usar Amazon Redshift sin servidor como destino
<a name="CHAP_Target.Redshift.RSServerless.Limitations"></a>

El uso de Redshift sin servidor como objetivo tiene las siguientes limitaciones:
+ AWS DMS solo es compatible con Amazon Redshift Serverless como punto final en las regiones que admiten Amazon Redshift Serverless. Para obtener información sobre las regiones compatibles con Amazon Redshift sin servidor, consulte la **API de Redshift sin servidor** en el tema [Puntos de conexión y cuotas de Amazon Redshift](https://docs.aws.amazon.com/general/latest/gr/redshift-service.html) de la [Referencia general de AWS](https://docs.aws.amazon.com/general/latest/gr/Welcome.html).
+ Cuando utilice el enrutamiento de VPC mejorado, asegúrese de crear un punto de conexión de Amazon S3 en la misma VPC que el clúster de Redshift sin servidor o aprovisionado de Redshift. Para obtener más información, consulte [Uso del enrutamiento de VPC mejorado con Amazon Redshift como objetivo para AWS Database Migration Service](#CHAP_Target.Redshift.EnhancedVPC).
+ AWS DMS no admite el rendimiento mejorado para Amazon Redshift Serverless como objetivo. Para obtener más información, consulte [Rendimiento mejorado para migraciones de Oracle a Amazon Redshift y Amazon S3 de carga completa](CHAP_Serverless.Components.md#CHAP_Serverless.Throughput).
+ AWS DMS no admite conexiones a Amazon Redshift Redshift Serverless cuando el modo SSL está configurado en. `verify-full` Para las conexiones que requieren verificación SSL a destinos sin servidor de Amazon Redshift, utilice modos SSL alternativos, como o. `require` `verify-ca`

# Uso de una base de datos SAP ASE como objetivo para AWS Database Migration Service
<a name="CHAP_Target.SAP"></a>

Puede migrar datos a bases de datos de SAP Adaptive Server Enterprise (ASE), anteriormente conocidas como Sybase AWS DMS, utilizando cualquiera de las fuentes de bases de datos compatibles.

Para obtener información sobre las versiones de SAP ASE que son AWS DMS compatibles como destino, consulte. [Objetivos para AWS DMS](CHAP_Introduction.Targets.md)

## Requisitos previos para utilizar una base de datos SAP ASE como destino para AWS Database Migration Service
<a name="CHAP_Target.SAP.Prerequisites"></a>

Antes de empezar a trabajar con una base de datos SAP ASE como destino AWS DMS, asegúrese de cumplir los siguientes requisitos previos:
+ Proporcione al AWS DMS usuario acceso a la cuenta SAP ASE. Este usuario debe tener read/write privilegios en la base de datos de SAP ASE.
+ En algunos casos, es posible que replique a la versión 15.7 de SAP ASE en una instancia Amazon EC2 en Microsoft Windows que esté configurada para caracteres no latinos (por ejemplo, chino). En tales casos, AWS DMS requiere que SAP ASE 15.7 SP121 esté instalado en la máquina SAP ASE de destino.

## Limitaciones al utilizar una base de datos SAP ASE como destino para AWS DMS
<a name="CHAP_Target.SAP.Limitations"></a>

Al utilizar una base de datos de SAP ASE como destino para AWS DMS se aplican las siguientes restricciones:
+ AWS DMS no admite tablas que incluyan campos con los siguientes tipos de datos. Las columnas que se repliquen con estos tipos de datos aparecen con valor NULL. 
  + Tipos definidos por el usuario (UDT)

## Configuración de punto final cuando se utiliza SAP ASE como destino para AWS DMS
<a name="CHAP_Target.SAP.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de SAP ASE de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)comando de la sintaxis `--sybase-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con SAP ASE como destino.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.SAP.html)

## Tipos de datos de destino para SAP ASE
<a name="CHAP_Target.SAP.DataTypes"></a>

La siguiente tabla muestra los tipos de datos de destino de la base de datos SAP ASE que se admiten cuando se utilizan AWS DMS y el mapeo predeterminado a partir de AWS DMS los tipos de datos.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS tipos de datos  |  Tipos de datos de SAP ASE  | 
| --- | --- | 
| BOOLEANO | BIT | 
| BYTES | VARBINARY (longitud) | 
| DATE | DATE | 
| TIME | TIME | 
| TIMESTAMP |  Si la escala es => 0 y =< 6, utilice BIGDATETIME  Si la escala es => 7 y =< 9, utilice: VARCHAR (37)  | 
| INT1 | TINYINT | 
| INT2 | SMALLINT | 
| INT4 | INTEGER | 
| INT8 | BIGINT | 
| NUMERIC | NUMERIC (p,s) | 
| REAL4 | REAL | 
| REAL8 | DOUBLE PRECISION | 
| STRING | VARCHAR (longitud) | 
| UINT1 | TINYINT | 
| UINT2 | UNSIGNED SMALLINT | 
| UINT4 | UNSIGNED INTEGER | 
| UINT8 | UNSIGNED BIGINT | 
| WSTRING | VARCHAR (longitud) | 
| BLOB | IMAGE | 
| CLOB | UNITEXT | 
| NCLOB | TEXT | 

# Uso de Amazon S3 como objetivo para AWS Database Migration Service
<a name="CHAP_Target.S3"></a>

Puede migrar datos a Amazon S3 AWS DMS desde cualquiera de las fuentes de bases de datos compatibles. Cuando se utiliza Amazon S3 como destino en una AWS DMS tarea, tanto los datos de carga completa como los de captura de datos de cambios (CDC) se escriben de forma predeterminada en un formato de valores separados por comas (.csv). Para opciones de almacenamiento más compacto y consulta más rápida, también tiene la opción de escribir los datos en formato Apache Parquet (.parquet). 

AWS DMS nombra los archivos creados durante una carga completa mediante un contador hexadecimal incremental, por ejemplo .csv,... LOAD00001 LOAD00002 , LOAD00009, LOAD0000 A, etc. para los archivos.csv. AWS DMS nombra los archivos CDC mediante marcas de tiempo, por ejemplo, 20141029-1134010000.csv. Para cada tabla de origen que contenga registros, AWS DMS crea una carpeta en la carpeta de destino especificada (si la tabla de origen no está vacía). AWS DMS escribe todos los archivos CDC y de carga completa en el bucket de Amazon S3 especificado. Puede controlar el tamaño de los archivos que se AWS DMS crean mediante la configuración del [MaxFileSize](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html#DMS-Type-S3Settings-MaxFileSize)punto final. 

El parámetro `bucketFolder` contiene la ubicación en la que se almacenan los archivos .csv o .parquet antes de que se carguen en el bucket de S3. Con archivos .csv, los datos de la tabla se almacenan en el siguiente formato en el bucket de S3, mostrado con archivos de carga completa.

```
database_schema_name/table_name/LOAD00000001.csv
database_schema_name/table_name/LOAD00000002.csv
...
database_schema_name/table_name/LOAD00000009.csv
database_schema_name/table_name/LOAD0000000A.csv
database_schema_name/table_name/LOAD0000000B.csv
...database_schema_name/table_name/LOAD0000000F.csv
database_schema_name/table_name/LOAD00000010.csv
...
```

Puede especificar el delimitador de columnas, el delimitador de filas y otros parámetros mediante los atributos de conexión adicionales. Para obtener más información acerca de los atributos de conexión adicionales, consulte [Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS](#CHAP_Target.S3.Configuring) al final de esta sección.

Para evitar la suplantación de identidad, AWS DMS valida la propiedad del bucket antes de realizar las operaciones. De forma predeterminada, cuando no se especifica la configuración del punto de conexión de `ExpectedBucketOwner` Amazon S3, AWS DMS utiliza el ID de AWS cuenta propietario del rol de AWS DMS servicio como propietario esperado del bucket.

Para migrar datos a un bucket de S3 propiedad de otra AWS cuenta, debe especificar de forma explícita el propietario real del bucket en la configuración del punto de conexión de `ExpectedBucketOwner` Amazon S3, como se muestra a continuación. De lo contrario, la tarea de replicación entre cuentas fallará.

```
--s3-settings '{"ExpectedBucketOwner": "AWS_Account_ID"}'
```

Cuando se replican AWS DMS los cambios de datos mediante una tarea de CDC, la primera columna del archivo de salida .csv o .parquet indica cómo se han modificado los datos de la fila, como se muestra en el siguiente archivo.csv.

```
I,101,Smith,Bob,4-Jun-14,New York
U,101,Smith,Bob,8-Oct-15,Los Angeles
U,101,Smith,Bob,13-Mar-17,Dallas
D,101,Smith,Bob,13-Mar-17,Dallas
```

Para este ejemplo, supongamos que hay una `EMPLOYEE` tabla en la base de datos de origen. AWS DMS escribe datos en el archivo.csv o .parquet, en respuesta a los siguientes eventos:
+ Un nuevo empleado (Bob Smith, ID de 101) es contratado el 4 de junio de 2014 en la oficina de Nueva York. En el archivo .csv o .parquet, la `I` de la primera columna indica que se ha insertado (`INSERT`) en la tabla del EMPLEADO en la base de datos de origen.
+ El 8 de octubre de 15, se transfiere a Bob a la oficina de Los Ángeles. En el archivo .csv o .parquet, la `U` indica que la fila correspondiente de la tabla del EMPLEADO se ha actualizado (`UPDATE`) para reflejar la nueva ubicación de la oficina de Bob. El resto de la línea refleja la fila en la tabla del EMPLEADO tal y como aparece después de la actualización (`UPDATE`). 
+ El 13 de marzo de 2017, vuelven a transferir a Bob a la oficina de Dallas. En el archivo .csv o .parquet, la `U` indica que esta fila se ha actualizado de nuevo (con `UPDATE`). El resto de la línea refleja la fila en la tabla del EMPLEADO tal y como aparece después de la actualización (`UPDATE`).
+ Después de trabajar en Dallas durante un tiempo, Bob se marcha de la empresa. En el archivo .csv o .parquet, la `D` indica que la fila se eliminó (con `DELETE`) en la tabla de origen. El resto de la línea refleja cómo aparecía la fila en la tabla del EMPLEADO antes de eliminarla.

Tenga en cuenta que, de forma predeterminada, en el caso de CDC, AWS DMS almacena los cambios de fila de cada tabla de la base de datos sin tener en cuenta el orden de las transacciones. Si desea almacenar los cambios de fila en los archivos CDC según el orden de las transacciones, debe utilizar la configuración del punto de conexión de S3 para especificarlo y la ruta de la carpeta en la que desea que se almacenen los archivos de transacciones CDC en el destino de S3. Para obtener más información, consulte [Captura de datos de cambios (CDC) incluida la orden de transacción en el destino de S3](#CHAP_Target.S3.EndpointSettings.CdcPath).

Para controlar la frecuencia de las escrituras en un destino de Amazon S3 durante una tarea de replicación de datos, puede configurar los atributos de conexión `cdcMaxBatchInterval` y `cdcMinFileSize` adicionales. Esto puede traducirse en un mejor rendimiento al analizar los datos sin necesidad de realizar operaciones adicionales que supongan una sobrecarga. Para obtener más información, consulte [Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS](#CHAP_Target.S3.Configuring) 

**Topics**
+ [Requisitos previos para utilizar Amazon S3 como un destino](#CHAP_Target.S3.Prerequisites)
+ [Restricciones al uso de Amazon S3 como destino](#CHAP_Target.S3.Limitations)
+ [Seguridad](#CHAP_Target.S3.Security)
+ [Uso de Apache Parquet para almacenar objetos de Amazon S3](#CHAP_Target.S3.Parquet)
+ [Etiquetado de objetos de Amazon S3](#CHAP_Target.S3.Tagging)
+ [Creación de AWS KMS claves para cifrar los objetos de destino de Amazon S3](#CHAP_Target.S3.KMSKeys)
+ [Uso de la partición de carpetas basada en fechas](#CHAP_Target.S3.DatePartitioning)
+ [Carga paralela de fuentes particionadas cuando se utiliza Amazon S3 como destino para AWS DMS](#CHAP_Target.S3.ParallelLoad)
+ [Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS](#CHAP_Target.S3.Configuring)
+ [AWS Glue Data Catalog Utilización con un objetivo de Amazon S3 para AWS DMS](#CHAP_Target.S3.GlueCatalog)
+ [Uso del cifrado de datos, archivos Parquet y CDC en el destino de Amazon S3](#CHAP_Target.S3.EndpointSettings)
+ [Indicar operaciones de base de datos de origen en datos de S3 migrados](#CHAP_Target.S3.Configuring.InsertOps)
+ [Tipos de datos de destino para Parquet de S3](#CHAP_Target.S3.DataTypes)

## Requisitos previos para utilizar Amazon S3 como un destino
<a name="CHAP_Target.S3.Prerequisites"></a>

Antes de utilizar Amazon S3 como destino, compruebe que se cumplen las siguientes condiciones: 
+ El depósito de S3 que utiliza como destino se encuentra en la misma AWS región que la instancia de replicación de DMS que utiliza para migrar los datos.
+ La AWS cuenta que utilice para la migración tiene una función de IAM con acceso de escritura y eliminación al bucket de S3 que utilice como destino.
+ Este rol tiene acceso de etiquetado por lo que puede etiquetar cualquier objeto de S3 escrito en el bucket de destino.
+ Al rol de IAM se le ha agregado DMS (dms.amazonaws.com) como *entidad de confianza*. 
+ Para la AWS DMS versión 3.4.7 y versiones posteriores, el DMS debe acceder al bucket de origen a través de un punto final de VPC o una ruta pública. Para obtener información sobre los puntos de conexión de VPC, consulte [Configuración de puntos finales de VPC para AWS DMS](CHAP_VPC_Endpoints.md).

Para configurar el acceso de esta cuenta, asegúrese de que el rol asignado a la cuenta de usuario utilizada para crear la tarea de migración tenga el siguiente conjunto de permisos.

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

****  

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

------

Para conocer los requisitos previos para utilizar la validación con S3 como objetivo, consulte [Requisitos previos de validación de destino de S3](CHAP_Validating_S3.md#CHAP_Validating_S3_prerequisites).

## Restricciones al uso de Amazon S3 como destino
<a name="CHAP_Target.S3.Limitations"></a>

Al utilizar Amazon S3 como destino se aplican las siguientes restricciones:
+ No habilite el control de versiones para S3. Si necesita el control de versiones de S3, utilice las políticas de ciclo de vida para eliminar activamente las versiones antiguas. De lo contrario, es posible que se produzcan errores en la conexión de las pruebas de punto de conexión debido al tiempo de espera de una llamada a `list-object` de S3. Para crear una política de ciclo de vida para un bucket de S3, consulte [Administración del ciclo de vida del almacenamiento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Para eliminar una versión de un objeto de S3, consulte [Eliminación de versiones de objetos de un bucket con control de versiones habilitado](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ En las versiones 3.4.7 y superiores se admite un bucket S3 habilitado para VPC (VPC de puerta de enlace).
+ Se admiten los siguientes comandos del lenguaje de definición de datos (DDL) para la captura de datos de cambios (CDC): truncar tabla, eliminar tabla, crear tabla, cambiar el nombre de la tabla, agregar columna, eliminar columna, cambiar nombre de columna y cambiar tipo de datos de columna. Tenga en cuenta que cuando se agrega, elimina o cambia el nombre de una columna en la base de datos de origen, no se registra ninguna sentencia ALTER en el bucket S3 de destino y AWS DMS no altera los registros creados anteriormente para que coincidan con la nueva estructura. Tras el cambio, AWS DMS crea todos los registros nuevos utilizando la nueva estructura de tablas.
**nota**  
Una operación DDL de truncamiento elimina todos los archivos y carpetas de tabla correspondientes de un bucket de S3. Puede usar la configuración de las tareas para desactivar ese comportamiento y configurar la forma en que DMS gestiona el comportamiento de DDL durante la captura de datos de cambios (CDC). Para obtener más información, consulte [Configuración de tareas para la administración de DDL del procesamiento de cambios](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md).
+ No se admite el modo LOB completo.
+ No se admiten cambios en la estructura de la tabla de origen durante la carga completa. Los cambios en los datos se admiten durante la carga completa.
+ Varias tareas que replican los datos de la misma tabla de origen al mismo bucket de punto de enlace de S3 de destino tiene como consecuencia que esas tareas escriban en el mismo archivo. Le recomendamos que especifique diferentes puntos de enlace de destino (buckets) si el origen de datos es de la misma tabla.
+ `BatchApply` no es compatible con un punto de conexión de S3. Es posible que el uso de la aplicación por lotes (por ejemplo, la configuración de tareas de metadatos de destino `BatchApplyEnabled`) para un objetivo de S3 provoque la pérdida de datos.
+ No puede utilizar `DatePartitionEnabled` ni `addColumnName` junto con `PreserveTransactions` o `CdcPath`.
+ AWS DMS no admite el cambio de nombre de varias tablas de origen a la misma carpeta de destino mediante reglas de transformación.
+ Si hay una escritura intensiva en la tabla de origen durante la fase de carga completa, DMS puede escribir registros duplicados en el bucket de S3 o cambios en caché.
+ Si configura la tarea con una `TargetTablePrepMode` de `DO_NOTHING`, DMS puede escribir registros duplicados en el bucket de S3 si la tarea se detiene y se reanuda bruscamente durante la fase de carga completa.
+ Si configura el punto de conexión de destino con una configuración `PreserveTransactions` de `true`, al volver a cargar una tabla no se borran los archivos CDC generados anteriormente. Para obtener más información, consulte [Captura de datos de cambios (CDC) incluida la orden de transacción en el destino de S3](#CHAP_Target.S3.EndpointSettings.CdcPath).

Para conocer las limitaciones para utilizar la validación con S3 como destino, consulte [Limitaciones para utilizar la validación de destinos de S3](CHAP_Validating_S3.md#CHAP_Validating_S3_limitations).

## Seguridad
<a name="CHAP_Target.S3.Security"></a>

Para utilizar Amazon S3 como destino, la cuenta utilizada para la migración debe tener acceso de escritura y de eliminación al bucket de Amazon S3 que se utiliza como destino. Especifique el nombre de recurso de Amazon (ARN) de un rol de IAM que tenga los permisos necesarios para acceder a Amazon S3. 

AWS DMS admite un conjunto de concesiones predefinidas para Amazon S3, conocidas como listas de control de acceso predefinidas (ACLs). Cada ACL predefinida tiene un conjunto de beneficiarios y permisos que puede utilizar para configurar permisos para el bucket de Amazon S3. Puede especificar una ACL predefinida utilizando `cannedAclForObjects` en el atributo de la cadena de conexión para el punto de enlace de destino de S3. Para obtener más información acerca del atributo de conexión adicional `cannedAclForObjects`, consulte [Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS](#CHAP_Target.S3.Configuring). Para obtener más información sobre Amazon S3 enlatada ACLs, consulte [ACL enlatada](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl).

El rol de IAM que utilice para la migración tiene que ser capaz de realizar la operación de la API `s3:PutObjectAcl`.

## Uso de Apache Parquet para almacenar objetos de Amazon S3
<a name="CHAP_Target.S3.Parquet"></a>

El formato de valores separados por comas (.csv) es el formato de almacenamiento predeterminado para los objetos de destino de Amazon S3. Para un almacenamiento más compacto y consultas más rápidas, puede utilizar en su lugar Apache Parquet (.parquet) como formato de almacenamiento.

Apache Parquet es un formato de almacenamiento de archivos de código abierto diseñado originalmente para Hadoop. Para obtener más información en Apache Parquet, consulte [https://parquet.apache.org/](https://parquet.apache.org/).

Para definir .parquet como formato de almacenamiento para los objetos de destino de S3, puede utilizar los siguientes mecanismos:
+ La configuración de punto de enlace que proporcione como parámetros de un objeto JSON al crear el punto de enlace mediante la AWS CLI o la API para AWS DMS. Para obtener más información, consulte [Uso del cifrado de datos, archivos Parquet y CDC en el destino de Amazon S3](#CHAP_Target.S3.EndpointSettings).
+ Atributos de conexión adicionales que proporciona como una lista separada por puntos y coma al crear el punto de enlace. Para obtener más información, consulte [Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS](#CHAP_Target.S3.Configuring).

## Etiquetado de objetos de Amazon S3
<a name="CHAP_Target.S3.Tagging"></a>

Puede etiquetar objetos de Amazon S3 que una instancia de replicación crea especificando objetos JSON adecuados como parte de las reglas de asignación de tabla de tareas. Para obtener más información sobre requisitos y opciones para etiquetado de objetos de S3, incluidos nombre de etiqueta válidos, consulte [Etiquetado de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html) en la *Guía del usuario de Amazon Simple Storage Service*. Para obtener más información sobre el mapeo de tablas utilizando JSON, consulte [Especificación de reglas de selección de tablas y transformaciones mediante JSON](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md).

Etiquete los objetos de S3 creados para tablas y esquemas especificados mediante uno o varios objetos JSON del tipo de regla `selection`. A continuación, siga este objeto (u objetos) `selection` mediante uno o varios objetos JSON del tipo de regla `post-processing` con acción `add-tag`. Estas reglas de post-procesamiento identifican los objetos de S3 que desea etiquetar y especifican los nombres y los valores de las etiquetas que desea añadir a estos objetos de S3.

Puede encontrar los parámetros para especificar en objetos JSON del tipo de regla `post-processing` en la siguiente tabla.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.S3.html)

Al especificar varios tipos de reglas `post-processing` para etiquetar una selección de objetos de S3, cada objeto de S3 se etiqueta utilizando solo un objeto `tag-set` de una regla de posprocesamiento. El conjunto particular de etiquetas usado para etiquetar un determinado objeto de S3 es el de la regla de posprocesamiento cuyo localizador de objeto asociado coincide mejor con dicho objeto de S3. 

Por ejemplo, supongamos que dos reglas de posprocesamiento identifican el mismo objeto de S3. Supongamos también que el localizador de objeto de una regla utiliza comodines y el localizador de objeto de la otra regla utiliza una coincidencia exacta para identificar el objeto de S3 (sin comodines). En este caso, se utiliza el conjunto de etiquetas asociado a la regla de posprocesamiento con la coincidencia exacta para etiquetar el objeto de S3. Si varias reglas de posprocesamiento coinciden con un objeto de S3 dado igual de bien, se utiliza para etiquetar el conjunto de etiquetas asociado con la primera regla de posprocesamiento.

**Example Agregar etiquetas estáticas a un objeto de S3 creado para una única tabla y esquema**  
La siguiente selección y reglas de posprocesamiento añaden tres etiquetas (`tag_1`, `tag_2` y `tag_3` con los valores estáticos correspondientes `value_1`, `value_2` y `value_3`) a un objeto de S3 creado. Este objeto de S3 corresponde a única tabla en el origen denominada `STOCK` con un esquema denominado `aat2`.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "5",
            "rule-name": "5",
            "object-locator": {
                "schema-name": "aat2",
                "table-name": "STOCK"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "post-processing",
            "rule-id": "41",
            "rule-name": "41",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "aat2",
                "table-name": "STOCK"
            },
            "tag-set": [
              {
                "key": "tag_1",
                "value": "value_1"
              },
              {
                "key": "tag_2",
                "value": "value_2"
              },
              {
                "key": "tag_3",
                "value": "value_3"
              }                                     
           ]
        }
    ]
}
```

**Example Agregar etiquetas estáticas y dinámicas a objetos de S3 creados para varias tablas y esquemas**  
El siguiente ejemplo tiene una selección y dos reglas de posprocesamiento, donde la entrada del origen incluye todas las tablas y todos sus esquemas.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "post-processing",
            "rule-id": "21",
            "rule-name": "21",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%",
            },
            "tag-set": [
              { 
                "key": "dw-schema-name",
                "value":"${schema-name}"
              },
              {
                "key": "dw-schema-table",
                "value": "my_prefix_${table-name}"
              }
            ]
        },
        {
            "rule-type": "post-processing",
            "rule-id": "41",
            "rule-name": "41",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "aat",
                "table-name": "ITEM",
            },
            "tag-set": [
              {
                "key": "tag_1",
                "value": "value_1"
              },
              {
                "key": "tag_2",
                "value": "value_2"
              }           ]
        }
    ]
}
```
La primera regla de posprocesamiento añade dos etiquetas (`dw-schema-name` y `dw-schema-table`) con valores dinámicos correspondientes (`${schema-name}` y `my_prefix_${table-name}`) para casi todos los objetos de S3 creados en el destino. La excepción es el objeto de S3 identificado y etiquetado con la segunda regla de posprocesamiento. De este modo, cada objeto de S3 de destino identificado por el localizador de objeto comodín se crea con etiquetas que identifican el esquema y la tabla a la que corresponde en el origen.  
La segunda regla de posprocesamiento añade `tag_1` y `tag_2` con los valores estáticos correspondientes `value_1` y `value_2` a un objeto de S3 creado que se identifica mediante un localizador de objeto de coincidencia exacta. Este objeto de S3 creado corresponde por tanto a la única tabla en el origen denominada `ITEM` con un esquema denominado `aat`. Debido a la coincidencia exacta, estas etiquetas reemplazan a cualquier etiquetas de este objeto añadida a partir de la primera regla de posprocesamiento, que coincide con objetos de S3 solo por el comodín.

**Example Agregar nombres y valores de etiqueta dinámicos a objetos de S3**  
El siguiente ejemplo tiene dos reglas de selección y una regla de posprocesamiento. Aquí, la entrada del origen incluye solo la tabla `ITEM` en el esquema `retail` o `wholesale`.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "retail",
                "table-name": "ITEM"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "wholesale",
                "table-name": "ITEM"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "post-processing",
            "rule-id": "21",
            "rule-name": "21",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "%",
                "table-name": "ITEM",
            },
            "tag-set": [
              { 
                "key": "dw-schema-name",
                "value":"${schema-name}"
              },
              {
                "key": "dw-schema-table",
                "value": "my_prefix_ITEM"
              },
              {
                "key": "${schema-name}_ITEM_tag_1",
                "value": "value_1"
              },
              {
                "key": "${schema-name}_ITEM_tag_2",
                "value": "value_2"
              }
            ]
    ]
}
```
La etiqueta definida para la regla de posprocesamiento añade dos etiquetas (`dw-schema-name` y `dw-schema-table`) a todos los objetos de S3 creados para la tabla `ITEM` en el destino. La primera etiqueta tiene el valor dinámico `"${schema-name}"` y la segunda etiqueta tiene un valor estático `"my_prefix_ITEM"`. De este modo, cada objeto de S3 de destino se crea con etiquetas que identifican el esquema y la tabla a la que corresponde en el origen.   
Además, el conjunto de etiquetas añade dos etiquetas adicionales con nombres dinámicos (`${schema-name}_ITEM_tag_1` y `"${schema-name}_ITEM_tag_2"`). Estos tienen los valores estáticos correspondientes `value_1` y `value_2`. Por lo tanto, cada una de estas etiquetas se denomina según el esquema actual, `retail` o `wholesale`. No se puede crear un nombre de etiqueta dinámico duplicado en este objeto, ya que cada objeto se crea para un solo nombre de esquema único. El nombre de esquema se utiliza para crear un nombre de etiqueta único por lo demás.

## Creación de AWS KMS claves para cifrar los objetos de destino de Amazon S3
<a name="CHAP_Target.S3.KMSKeys"></a>

Puede crear y usar AWS KMS claves personalizadas para cifrar los objetos de destino de Amazon S3. Después de crear una clave KMS, puede utilizarla para cifrar objetos mediante uno de los métodos siguientes al crear el punto de enlace de destino S3:
+ Utilice las siguientes opciones para objetos de destino de S3 (con el formato de almacenamiento de archivos .csv predeterminado) al ejecutar el comando `create-endpoint` mediante la AWS CLI.

  ```
  --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", 
  "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", 
  "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", 
  "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN"}'
  ```

  Aquí, su `your-KMS-key-ARN` es el Nombre de recurso de Amazon (ARN) de la clave de KMS y es obligatorio que su rol de IAM tenga permisos de acceso. Para ello, consulte [Uso del cifrado de datos, archivos Parquet y CDC en el destino de Amazon S3](#CHAP_Target.S3.EndpointSettings).
+ Establezca el atributo de conexión adicional `encryptionMode` al valor `SSE_KMS` y el atributo de conexión adicional `serverSideEncryptionKmsKeyId` al ARN de su clave de KMS. Para obtener más información, consulte [Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS](#CHAP_Target.S3.Configuring).

Para cifrar objetos de destino de Amazon S3 con una clave de KMS, necesita un rol de IAM que tenga permisos para acceder al bucket de Amazon S3. A continuación, se accede a este rol de IAM en una política (una política de claves) asociada a la clave de cifrado que cree. Puede hacer esto en su propia consola de IAM mediante la creación de lo siguiente:
+ Una política con permisos para acceder al bucket de Amazon S3.
+ Un rol de IAM con esta política.
+ Una clave de cifrado de claves de KMS con una política de claves que hace referencia a este rol.

En los procedimientos siguientes se describe cómo hacerlo.

**Creación de una política de IAM con permisos para acceder al bucket de Amazon S3**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Policies (Políticas)**. Se abre la página **Policies (Políticas)**.

1. Elija **Crear política**. Se abre la página **Crear política**.

1. Elija **Service (Servicio)** y, a continuación, **S3**. Aparece una lista de permisos de acción.

1. Elija **Expand all (Ampliar todo)** para ampliar la lista y elegir los siguientes permisos como mínimo:
   + **ListBucket**
   + **PutObject**
   + **DeleteObject**

   Elija cualquier otro permiso que necesite y, a continuación, elija **Collapse all (Contraer todo)** para contraer la lista.

1. Elija **Resources (Recursos)** para especificar los recursos a los que desea acceder. Como mínimo, elija **Todos los recursos** para proporcionar acceso general a recursos de Amazon S3.

1. Añada cualquier otra condición o permiso que necesite, a continuación, elija **Review policy (Revisar política)**. Compruebe los resultados en la página **Review policy (Revisar política)**.

1. Si la configuración es la que necesita, introduzca un nombre para la política (por ejemplo, `DMS-S3-endpoint-access`) y cualquier descripción, a continuación, elija **Create policy (Crear política)**. Se abre la página **Policies (Políticas)** con un mensaje que indica que se ha creado la política.

1. Busque y seleccione el nombre de la política en la lista **Policies (Políticas)**. Aparece la página **Summary (Resumen)** que muestra JSON para la política similar al siguiente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:ListBucket",
                   "s3:DeleteObject"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

Ya ha creado la nueva política para acceder a recursos de Amazon S3 para cifrado con un nombre especificado, por ejemplo, `DMS-S3-endpoint-access`.

**Creación de un rol de IAM con esta política**

1. En la consola de IAM, elija **Roles** en el panel de navegación. Se abre la página de detalle **Roles**.

1. Elija **Crear rol**. Se abre la página **Create role (Crear rol)**.

1. Con el AWS servicio seleccionado como entidad de confianza, elija **DMS** como servicio para usar la función de IAM.

1. Elija **Siguiente: permisos**. La vista **Attach permissions policies (Asociar políticas de permisos)** aparece en la página **Create role (Crear rol)**.

1. Busque y seleccione la política de IAM para el rol de IAM que creó en el procedimiento anterior (`DMS-S3-endpoint-access`).

1. Elija **Siguiente: etiquetas**. Aparece la vista **Add tags (Añadir etiquetas)** en la página **Create role (Crear rol)**. A continuación, puede añadir las etiquetas que desee.

1. Elija **Siguiente: Revisar**. Aparece la vista **Review (Revisar)** en la página **Create role (Crear rol)**. Aquí, puede verificar los resultados.

1. Si la configuración es la que necesita, introduzca un nombre para el rol (requerido, por ejemplo, `DMS-S3-endpoint-access-role`) y cualquier descripción adicional, a continuación, elija **Create role (Crear rol)**. Se abre la página de detalle **Roles** con un mensaje que indica que el rol se ha creado.

Ya ha creado el nuevo rol para acceder a recursos de Amazon S3 para cifrado con un nombre especificado, por ejemplo, `DMS-S3-endpoint-access-role`.

**Creación de una clave de cifrado de claves de KMS con una política de claves que hace referencia al rol de IAM**
**nota**  
Para obtener más información sobre cómo AWS DMS funciona con las claves de AWS KMS cifrado, consulte. [Establecer una clave de cifrado y especificar AWS KMS los permisos](CHAP_Security.md#CHAP_Security.EncryptionKey)

1. Inicie sesión en la consola AWS Key Management Service (AWS KMS) Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms).

1. Para cambiarla Región de AWS, usa el selector de regiones en la esquina superior derecha de la página.

1. En el panel de navegación, elija **Claves administradas por el cliente**.

1. Elija **Crear clave**. Se abrirá la página **Configure key (Configurar clave)**.

1. En **Key type (Tipo de clave)**, elija **Symmetric (Simétrica)**.
**nota**  
Al crear esta clave, solo puede crear una clave simétrica, ya que todos los AWS servicios, como Amazon S3, solo funcionan con claves de cifrado simétricas.

1. Elija **Advanced Options**. En **Key material origin (Origen del material de la clave)**, asegúrese de elegir **KMS** y, a continuación, seleccione **Next (Siguiente)**. Se abrirá la página **Add labels (Agregar etiquetas)**.

1. En **Create alias and description (Crear alias y descripción)**, escriba un alias para la clave (por ejemplo, `DMS-S3-endpoint-encryption-key`) y una descripción adicional.

1. En **Tags (Etiquetas)**, agregue las etiquetas que desee para ayudar a identificar la clave y realizar el seguimiento de su uso y, a continuación, seleccione **Next (Siguiente)**. Se abre la página **Define key administrative permissions (Definir permisos administrativos clave)**, que muestra una lista de usuarios y roles entre los que puede elegir.

1. Añada los usuarios y roles que desee para administrar la clave. Asegúrese de que estos usuarios y roles tengan los permisos necesarios para administrar la clave. 

1. En **Key deletion (Eliminación de clave)**, elija si los administradores de claves pueden eliminar la clave; a continuación, seleccione **Next (Siguiente)**. Se abre la página **Define key usage permissions (Definir permisos de uso de claves)** que muestra una lista adicional de usuarios y roles entre los que puede elegir.

1. En **Esta cuenta**, elija los usuarios disponibles que deberán poder realizar operaciones criptográficas en los objetivos de Amazon S3. Además, elija el rol que creó anteriormente en **Roles** para habilitar el acceso con el fin de cifrar los objetos de destino de Amazon S3, por ejemplo `DMS-S3-endpoint-access-role`.

1. **Si desea añadir otras cuentas que no figuran en la lista para que tengan el mismo acceso, en **Otras AWS cuentas**, seleccione **Añadir otra AWS cuenta** y, a continuación, seleccione Siguiente.** Se abre la página **Review and edit key policy (Revisar y editar la política de claves)** que muestra el JSON de la política de claves que puede revisar y editar escribiendo en el JSON existente. Aquí puede ver en qué puntos de la política de claves se hace referencia al rol y a los usuarios (por ejemplo, `Admin` y `User1`) que eligió en el paso anterior. También puede ver las distintas acciones de claves permitidas para las distintas entidades principales (usuarios y roles), tal y como se muestra en el siguiente ejemplo.

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

****  

   ```
   {
       "Id": "key-consolepolicy-3",
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Enable IAM User Permissions",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:root"
                   ]
               },
               "Action": "kms:*",
               "Resource": "*"
           },
           {
               "Sid": "Allow access for Key Administrators",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/Admin"
                   ]
               },
               "Action": [
                   "kms:Create*",
                   "kms:Describe*",
                   "kms:Enable*",
                   "kms:List*",
                   "kms:Put*",
                   "kms:Update*",
                   "kms:Revoke*",
                   "kms:Disable*",
                   "kms:Get*",
                   "kms:Delete*",
                   "kms:TagResource",
                   "kms:UntagResource",
                   "kms:ScheduleKeyDeletion",
                   "kms:CancelKeyDeletion"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow use of the key",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow attachment of persistent resources",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:ListGrants",
                   "kms:RevokeGrant"
               ],
               "Resource": "*",
               "Condition": {
                   "Bool": {
                       "kms:GrantIsForAWSResource": true
                   }
               }
           }
       ]
   }
   ```

------

1. Seleccione **Finalizar**. Se abre la página de **claves de cifrado** con un mensaje que indica que se ha creado la clave de KMS.

Ahora ha creado una nueva clave de KMS con un alias especificado (por ejemplo, `DMS-S3-endpoint-encryption-key`). Esta clave permite cifrar AWS DMS los objetos de destino de Amazon S3.

## Uso de la partición de carpetas basada en fechas
<a name="CHAP_Target.S3.DatePartitioning"></a>

AWS DMS admite particiones de carpetas S3 en función de la fecha de confirmación de la transacción cuando utiliza Amazon S3 como punto de enlace de destino. Al utilizar la partición de carpetas basada en fechas, puede escribir datos de una sola tabla de origen en una estructura de carpetas jerárquica temporal en un bucket de S3. Al particionar carpetas al crear un punto de conexión de destino de S3, puede hacer lo siguiente:
+ Administrar mejor los objetos de S3
+ Limitar el tamaño de cada carpeta de S3
+ Optimizar las consultas de lago de datos u otras operaciones posteriores

Puede habilitar la partición de carpetas basada en fechas al crear un punto de conexión de destino de S3. Puede activarlo al migrar los datos existentes y replicar los cambios en curso (carga completa \$1 CDC) o al replicar solo los cambios de datos (solo CDC). Al migrar los datos existentes y replicar los cambios en curso, solo se particionarán los cambios en curso. Use la configuración de punto de conexión de destino siguiente:
+ `DatePartitionEnabled`: especifica la partición en función de las fechas. Establezca esta opción booleana en `true` para dividir las carpetas del bucket de S3 en función de las fechas de confirmación de transacciones. 

  No puede usar esta configuración con `PreserveTransactions` ni `CdcPath`.

  El valor predeterminado es `false`. 
+ `DatePartitionSequence`: identifica la secuencia del formato de fecha que se va a utilizar durante la partición de carpetas. Establezca esta opción ENUM en `YYYYMMDD`, `YYYYMMDDHH`, `YYYYMM`, `MMYYYYDD` o `DDMMYYYY`. El valor predeterminado es `YYYYMMDD`. Utilice esta configuración cuando `DatePartitionEnabled` esté establecido en `true.`
+ `DatePartitionDelimiter`: especifica un delimitador de separación de fechas para utilizar durante la creación de particiones de carpetas. Establezca esta opción ENUM en `SLASH`, `DASH`, `UNDERSCORE` o `NONE`. El valor predeterminado es `SLASH`. Utilice esta configuración cuando `DatePartitionEnabled` esté establecido en `true`.
+ `DatePartitionTimezone`: al crear un punto de conexión de destino de S3, defina `DatePartitionTimezone` para convertir la hora UTC actual en una zona horaria específica. La conversión se produce cuando se crea una carpeta de partición de fecha y se genera un nombre de archivo de CDC. El formato de la zona horaria es área o ubicación. Utilice este parámetro cuando `DatePartitionedEnabled` se establece en `true`, tal como se muestra en el ejemplo siguiente:

  ```
  s3-settings='{"DatePartitionEnabled": true, "DatePartitionSequence": "YYYYMMDDHH", "DatePartitionDelimiter": "SLASH", "DatePartitionTimezone":"Asia/Seoul", "BucketName": "dms-nattarat-test"}'
  ```

El siguiente ejemplo muestra cómo habilitar la partición de carpetas basada en fechas, con los valores predeterminados para la secuencia de partición de datos y el delimitador. Utiliza la `--s3-settings '{json-settings}'` opción de AWS CLI. `create-endpoint`comando. 

```
   --s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'
```

## Carga paralela de fuentes particionadas cuando se utiliza Amazon S3 como destino para AWS DMS
<a name="CHAP_Target.S3.ParallelLoad"></a>

Puede configurar una carga completa paralela de orígenes de datos particionados para los destinos de Amazon S3. Este enfoque mejora los tiempos de carga para migrar datos particionados desde los motores de bases de datos de origen compatibles al origen de S3. Para mejorar los tiempos de carga de los datos de origen particionados, debe crear subcarpetas de destino de S3 asignadas a las particiones de todas las tablas de la base de datos de origen. Estas subcarpetas enlazadas a particiones permiten AWS DMS ejecutar procesos paralelos para llenar cada subcarpeta del destino.

Para configurar una carga completa paralela de un objetivo de S3, S3 admite tres tipos de reglas `parallel-load` para la regla `table-settings` de asignación de tablas:
+ `partitions-auto`
+ `partitions-list`
+ `ranges`

Para obtener más información sobre estos tipos de regla de carga paralela, consulte [Reglas y operaciones de configuración de tablas y recopilaciones](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

Para los tipos de reglas `partitions-auto` y `partitions-list`, AWS DMS utiliza el nombre de cada partición del punto de conexión de origen para identificar la estructura de subcarpetas de destino, de la siguiente manera.

```
bucket_name/bucket_folder/database_schema_name/table_name/partition_name/LOADseq_num.csv
```

En este caso, la ruta de la subcarpeta donde se migran y almacenan los datos en el destino de S3 incluye una subcarpeta `partition_name` adicional que corresponde a una partición de origen con el mismo nombre. A continuación, esta subcarpeta `partition_name` almacena uno o más archivos `LOADseq_num.csv` que contienen datos migrados desde la partición de origen especificada. Aquí, `seq_num` es el sufijo del número de secuencia en el nombre del archivo .csv, por ejemplo, `00000001` en el archivo .csv con el nombre, `LOAD00000001.csv`.

Sin embargo, algunos motores de bases de datos, como MongoDB y DocumentDB, no tienen el concepto de particiones. Para estos motores de bases de datos, AWS DMS agrega el índice de segmentos de origen en ejecución como prefijo al nombre del archivo.csv de destino, de la siguiente manera.

```
.../database_schema_name/table_name/SEGMENT1_LOAD00000001.csv
.../database_schema_name/table_name/SEGMENT1_LOAD00000002.csv
...
.../database_schema_name/table_name/SEGMENT2_LOAD00000009.csv
.../database_schema_name/table_name/SEGMENT3_LOAD0000000A.csv
```

En este caso, los archivos `SEGMENT1_LOAD00000001.csv` y `SEGMENT1_LOAD00000002.csv` se denominan con el mismo prefijo de índice del segmento de origen en ejecución, `SEGMENT1`. Se denominan así porque los datos de origen migrados para estos dos archivos .csv están asociados al mismo índice de segmentos de origen en ejecución. Por otro lado, los datos migrados almacenados en cada uno de los archivos `SEGMENT2_LOAD00000009.csv` y `SEGMENT3_LOAD0000000A.csv` de destino están asociados a diferentes índices de segmentos de origen en ejecución. Cada archivo tiene su nombre de archivo prefijado con el nombre de su índice de segmentos en ejecución, `SEGMENT2` y `SEGMENT3`.

Para el tipo de carga paralela `ranges`, los nombres y los valores de las columnas se definen mediante la configuración de `columns` y `boundaries` de las reglas de `table-settings`. Con estas reglas, puede especificar las particiones correspondientes a los nombres de los segmentos, de la siguiente manera.

```
"parallel-load": {
    "type": "ranges",
    "columns": [
         "region",
         "sale"
    ],
    "boundaries": [
          [
               "NORTH",
               "1000"
          ],
          [
               "WEST",
               "3000"
          ]
    ],
    "segment-names": [
          "custom_segment1",
          "custom_segment2",
          "custom_segment3"
    ]
}
```

Aquí, la configuración de `segment-names` define los nombres de tres particiones para migrar datos en paralelo en el destino de S3. Los datos migrados se cargan en paralelo y se almacenan en archivos .csv en las subcarpetas de particiones en el orden siguiente.

```
.../database_schema_name/table_name/custom_segment1/LOAD[00000001...].csv
.../database_schema_name/table_name/custom_segment2/LOAD[00000001...].csv
.../database_schema_name/table_name/custom_segment3/LOAD[00000001...].csv
```

Aquí, AWS DMS almacena una serie de archivos.csv en cada una de las tres subcarpetas de particiones. La serie de archivos .csv de cada subcarpeta de partición se nombra de forma incremental, empezando por `LOAD00000001.csv` hasta que se migren todos los datos.

En algunos casos, es posible que no asigne un nombre explícito a las subcarpetas de partición para un tipo de carga paralela de `ranges` mediante la configuración de `segment-names`. En este caso, AWS DMS aplica la opción predeterminada de crear cada serie de archivos.csv en su subcarpeta. `table_name` Aquí, AWS DMS antepone los nombres de archivo de cada serie de archivos .csv con el nombre del índice del segmento de origen en ejecución, de la siguiente manera.

```
.../database_schema_name/table_name/SEGMENT1_LOAD[00000001...].csv
.../database_schema_name/table_name/SEGMENT2_LOAD[00000001...].csv
.../database_schema_name/table_name/SEGMENT3_LOAD[00000001...].csv
...
.../database_schema_name/table_name/SEGMENTZ_LOAD[00000001...].csv
```

## Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS
<a name="CHAP_Target.S3.Configuring"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Amazon S3 de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` comando incluido [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)en la sintaxis `--s3-settings '{"EndpointSetting": "value", ...}'` JSON.

**nota**  
DMS escribe los cambios en los archivos de Parquet en función del orden de confirmación de la base de datos de origen, pero al migrar varias tablas, el orden original de las transacciones no se conserva debido a la partición en la tabla. Para conservar la información de la secuencia de transacciones, configure el punto de conexión `TimestampColumnName` de manera que incluya la marca de tiempo de confirmación de origen para cada fila, que luego podrá utilizar en el procesamiento posterior para reconstruir la secuencia de transacciones original. A diferencia del formato CSV, que ofrece la configuración `PreserveTransactions`, los archivos de Parquet gestionan las transacciones de forma diferente debido a su estructura de almacenamiento en columnas. Sin embargo, este enfoque permite hacer un seguimiento preciso de los tiempos de confirmación del origen, permite reconstruir las órdenes de transacción después de la migración y permite procesar los datos de forma eficiente, manteniendo la coherencia de datos.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Amazon S3 como destino.


| **Opción** | **Descripción** | 
| --- | --- | 
| CsvNullValue |  Un parámetro opcional que especifica cómo se AWS DMS tratan los valores nulos. Mientras se maneja el valor null (nulo), se puede usar este parámetro para pasar una cadena definida por el usuario como nula al escribir en el destino. Por ejemplo, cuando las columnas de destino son anulables, puede usar esta opción para diferenciar entre el valor de cadena vacía y el valor nulo.  Valor predeterminado: `""` Valores válidos: cualquier cadena válida Ejemplo: `--s3-settings '{"CsvNullValue": "NULL"}'` Si el valor de la columna de la base de datos de origen es null, en el archivo CSV de S3, el valor de la columna es `NULL` en lugar de la cadena “”.  | 
| AddColumnName |  Un parámetro opcional al establecer en `true` o `y` que puede usar para añadir información del nombre de la columna al archivo de salida .csv. No puede utilizar este parámetro con `PreserveTransactions` ni `CdcPath`. Valor predeterminado: `false` Valores válidos: `true`, `false`, `y`, `n` Ejemplo: `--s3-settings '{"AddColumnName": true}'`  | 
| AddTrailingPaddingCharacter |  Utilice la configuración del punto de conexión de destino de S3 `AddTrailingPaddingCharacter` para agregar relleno a los datos de la cadena. El valor predeterminado es `false`. Tipo: Booleano Ejemplo: `--s3-settings '{"AddTrailingPaddingCharacter": true}'`  | 
| BucketFolder |  Parámetro opcional para definir un nombre de carpeta en el bucket de S3. Si se facilitan, los objetos de destino se crean como archivos .parquet o .csv en la ruta `BucketFolder/schema_name/table_name/`. Si no se especifica este parámetro, la ruta utilizada es `schema_name/table_name/`.  Ejemplo: `--s3-settings '{"BucketFolder": "testFolder"}'`  | 
| BucketName |  El nombre del bucket de S3 donde los objetos de destino S3 se crean como archivos .csv o.parquet. Ejemplo: `--s3-settings '{"BucketName": "buckettest"}'`  | 
| CannedAclForObjects |  Un valor que AWS DMS permite especificar una lista de control de acceso predefinida (predefinida) para los objetos creados en el bucket de S3 como archivos.csv o.parquet. Para obtener más información sobre Amazon S3 enlatada ACLs, consulte [ACL enlatada](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) en la *Guía para desarrolladores de Amazon S3.* Valor predeterminado: NINGUNO Los valores válidos para este atributo son: NONE; PRIVATE; PUBLIC\$1READ; PUBLIC\$1READ\$1WRITE; AUTHENTICATED\$1READ; \$1READ; BUCKET\$1OWNER\$1READ; BUCKET\$1OWNER\$1FULL\$1CONTROL. AWS\$1EXEC Ejemplo: `--s3-settings '{"CannedAclForObjects": "PUBLIC_READ"}'`  | 
| CdcInsertsOnly |  Un parámetro opcional durante una carga de captura de datos de cambios (CDC) para escribir solo operaciones INSERT en archivos de salida de valores separados por comas (.csv) o almacenamiento en columnas (.parquet). Por defecto (el ajuste `false`), el primer campo en un registro .csv o .parquet contiene la letra I (INSERT), U (UPDATE) o D (DELETE). Esta carta indica si la fila se insertó, actualizó o eliminó en la base de datos de origen para una carga de CDC en el destino. `cdcInsertsOnly`Si `y` se `true` establece INSERTs en o, solo se migran al archivo.csv o .parquet desde la base de datos de origen. Solo para el formato .csv, la forma en que se registran estas operaciones INSERT depende del valor de `IncludeOpForFullLoad`. Si `IncludeOpForFullLoad` está establecido en `true`, el primer campo de cada registro CDC se establece en I para indicar la operación INSERT en el origen. Si `IncludeOpForFullLoad` se establece en `false`, cada registro CDC se escribe sin un primer campo para indicar la operación INSERT en el origen. Para obtener más información acerca de cómo estos parámetros funcionan juntos, consulte [Indicar operaciones de base de datos de origen en datos de S3 migrados](#CHAP_Target.S3.Configuring.InsertOps). Valor predeterminado: `false` Valores válidos: `true`, `false`, `y`, `n` Ejemplo: `--s3-settings '{"CdcInsertsOnly": true}'`  | 
| CdcInsertsAndUpdates |  Habilita una carga de captura de datos de cambio (CDC) para escribir las operaciones INSERT y UPDATE en archivos de salida .csv o .parquet (almacenamiento en columnas). La configuración predeterminada es`false`, pero cuando `cdcInsertsAndUpdates` se establece en `true` o `y` INSERTs y UPDATEs desde la base de datos de origen se migran al archivo.csv o .parquet.  Solo en el caso del formato de archivo.csv, la forma en que UPDATEs se registren estos INSERTs archivos depende del valor del parámetro. `includeOpForFullLoad` Si `includeOpForFullLoad` se establece en `true`, el primer campo de cada registro de CDC se establece en `I` o `U` para indicar que se trata de operaciones INSERT y UPDATE en el origen. Pero si `includeOpForFullLoad` se establece en `false`, los registros de CDC se escriben sin ninguna indicación relativa a las operaciones INSERT o UPDATE en el origen.   Para obtener más información acerca de cómo estos parámetros funcionan juntos, consulte [Indicar operaciones de base de datos de origen en datos de S3 migrados](#CHAP_Target.S3.Configuring.InsertOps).  `CdcInsertsOnly` y `cdcInsertsAndUpdates` no se pueden establecer ambos en «true» para el mismo punto de enlace. Establezca `cdcInsertsOnly` o `cdcInsertsAndUpdates` en `true` para el mismo punto de conexión, pero no ambos.   Valor predeterminado: `false` Valores válidos: `true`, `false`, `y`, `n` Ejemplo: `--s3-settings '{"CdcInsertsAndUpdates": true}'`  | 
|  `CdcPath`  |  Especifica la ruta de la carpeta de los archivos de CDC. Para un origen S3, esta configuración es obligatoria si una tarea captura datos de cambios; de lo contrario, es opcional. Si `CdcPath` está configurado, DMS lee los archivos CDC desde esta ruta y replica los cambios de datos en el punto de conexión de destino. Para un destino de S3 si establece `PreserveTransactions` en verdadero, DMS verifica que ha establecido este parámetro en una ruta de carpeta en su destino de S3 donde DMS puede guardar la orden de transacción para la carga de CDC. DMS crea esta ruta de carpeta CDC en el directorio de trabajo de destino de S3 o en la ubicación de destino de S3 especificada mediante `BucketFolder` y `BucketName`. No puede utilizar este parámetro con `DatePartitionEnabled` ni `AddColumnName`. Tipo: cadena Por ejemplo, si especifica `CdcPath` como `MyChangedData` y `BucketName` como `MyTargetBucket`, pero no especifica `BucketFolder`, DMS crea la siguiente ruta de la carpeta de CDC: `MyTargetBucket/MyChangedData`.  Si especifica la misma `CdcPath` y `BucketName` como `MyTargetBucket` y `BucketFolder` como `MyTargetData`, DMS crea la siguiente ruta de la carpeta de CDC: `MyTargetBucket/MyTargetData/MyChangedData`. Esta configuración se admite en AWS DMS las versiones 3.4.2 y posteriores. Al capturar los cambios de datos en el orden de las transacciones, el DMS siempre almacena los cambios de fila en archivos.csv, independientemente del valor de la configuración de DataFormat S3 en el destino.   | 
|  `CdcMaxBatchInterval`  |  Condición de duración máxima del intervalo, definida en segundos, para enviar un archivo a Amazon S3. Valor predeterminado: 60 segundos Cuando `CdcMaxBatchInterval` se especifica y `CdcMinFileSize` se especifica, la escritura del archivo se desencadena según la condición de parámetro que se cumpla primero.  A partir de la AWS DMS versión 3.5.3, si se utiliza PostgreSQL o Aurora PostgreSQL como origen y Amazon S3 con Parquet como destino`confirmed_flush_lsn`, la frecuencia de las actualizaciones depende de la cantidad de datos que el endpoint de destino esté configurado para conservar en la memoria. AWS DMS lo `confirmed_flush_lsn` devuelve a la fuente solo después de que los datos de la memoria se hayan escrito en Amazon S3. Si configura el parámetro `CdcMaxBatchInterval` con un valor superior, es posible que observe un aumento en el uso de las ranuras de replicación en la base de datos de origen.   | 
|  `CdcMinFileSize`  |  Condición de tamaño de archivo mínimo definido en kilobytes para enviar un archivo a Amazon S3. Valor predeterminado: 32 000 KB Cuando `CdcMinFileSize` se especifica y `CdcMaxBatchInterval` se especifica, la escritura del archivo se desencadena según la condición de parámetro que se cumpla primero.  | 
|  `PreserveTransactions`  |  Si se establece en `true`, DMS guarda la orden de transacción para una carga de captura de datos de cambios (CDC) en el destino de Amazon S3 especificado por `CdcPath`. No puede utilizar este parámetro con `DatePartitionEnabled` ni `AddColumnName`. Tipo: Booleano Al capturar los cambios de datos en el orden de las transacciones, el DMS siempre almacena los cambios de fila en archivos.csv, independientemente del valor de la configuración de DataFormat S3 en el destino. Esta configuración se admite en AWS DMS las versiones 3.4.2 y posteriores.   | 
| IncludeOpForFullLoad |  Un parámetro opcional durante una carga completa para escribir las operaciones INSERT solo en archivos de salida de valores separados por comas (.csv). Para la carga completa, los registros solo se pueden insertar. De forma predeterminada (el valor `false`), no se registra información en estos archivos de salida para una carga completa para indicar que las filas se insertaron en la base de datos de origen. Si `IncludeOpForFullLoad` se establece en `true` o `y`, la operación INSERT se registra como una anotación I en el primer campo del archivo .csv.  Este parámetro funciona junto con `CdcInsertsOnly` o `CdcInsertsAndUpdates` para la salida solo en archivos .csv. Para obtener más información acerca de cómo estos parámetros funcionan juntos, consulte [Indicar operaciones de base de datos de origen en datos de S3 migrados](#CHAP_Target.S3.Configuring.InsertOps).  Valor predeterminado: `false` Valores válidos: `true`, `false`, `y`, `n` Ejemplo: `--s3-settings '{"IncludeOpForFullLoad": true}'`  | 
| CompressionType |  Si se establece un parámetro opcional en `GZIP`, utiliza GZIP para comprimir los archivos .csv de destino. Cuando este parámetro se establece en el valor predeterminado, deja los archivos sin comprimir. Valor predeterminado: `NONE` Valores válidos: `GZIP` o `NONE` Ejemplo: `--s3-settings '{"CompressionType": "GZIP"}'`  | 
| CsvDelimiter |  Delimitador utilizado para separar columnas en los archivos .csv de origen. El valor predeterminado es una coma (,). Ejemplo: `--s3-settings '{"CsvDelimiter": ","}'`  | 
| CsvRowDelimiter |  Delimitador utilizado para separar filas en los archivos de origen .csv. El valor predeterminado es una nueva línea (\$1n). Ejemplo: `--s3-settings '{"CsvRowDelimiter": "\n"}'`  | 
|   `MaxFileSize`   |  Un valor que especifica el tamaño máximo (en KB) de los archivos .csv que se crean al migrar a un destino de S3 durante la carga completa. Valor predeterminado: 1 048 576 KB (1 GB) Valores válidos: 1-1 048 576 Ejemplo: `--s3-settings '{"MaxFileSize": 512}'`  | 
| Rfc4180 |  Un parámetro opcional que se utiliza para establecer un comportamiento de conformidad con RFC de los datos migrados a Amazon S3 utilizando solo el formato de archivo .csv. Cuando este valor se establece en `true` o `y` utiliza Amazon S3 como destino, si los datos contienen comillas, comas o caracteres de nueva línea, AWS DMS encierra toda la columna con un par adicional de comillas dobles («). Cada comilla dentro de los datos se repite dos veces. Este formato cumple con RFC 4180. Valor predeterminado: `true` Valores válidos: `true`, `false`, `y`, `n` Ejemplo: `--s3-settings '{"Rfc4180": false}'`  | 
| EncryptionMode |  El modo de cifrado del lado del servidor que desea que cifre sus archivos de objeto .csv o .parquet copiados en S3. Los valores válidos son `SSE_S3` (cifrado del lado del servidor de S3) o `SSE_KMS` (cifrado de clave de KMS). Si elige `SSE_KMS`, establezca el parámetro `ServerSideEncryptionKmsKeyId` en el nombre de recurso de Amazon (ARN) para la clave de KMS que se va a utilizar para cifrado.  También puede usar el comando `modify-endpoint` de la CLI para cambiar el valor del atributo `EncryptionMode` para un punto de conexión existente de `SSE_KMS` a `SSE_S3`. Sin embargo, no se puede cambiar el valor `EncryptionMode` de `SSE_S3` a `SSE_KMS`.  Valor predeterminado: `SSE_S3` Valores válidos: `SSE_S3` o `SSE_KMS` Ejemplo: `--s3-settings '{"EncryptionMode": SSE_S3}'`  | 
| ServerSideEncryptionKmsKeyId |  Si establece `EncryptionMode` en `SSE_KMS`, establezca este parámetro en el nombre de recurso de Amazon (ARN) para la clave de KMS. Para encontrar este ARN, selecciona el alias de clave en la lista de AWS KMS claves creadas para tu cuenta. Al crear la clave, debe asociar políticas y roles específicos asociados a esta clave de KMS. Para obtener más información, consulte [Creación de AWS KMS claves para cifrar los objetos de destino de Amazon S3](#CHAP_Target.S3.KMSKeys). Ejemplo: `--s3-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'`  | 
| DataFormat |  El formato de salida de los archivos que se AWS DMS utilizan para crear los objetos de S3. Para los destinos de Amazon S3, AWS DMS admite archivos.csv o.parquet. Los archivos .parquet tienen un formato de almacenamiento binario en columnas con opciones de compresión eficientes y un rendimiento de consultas más rápido. Para obtener más información sobre los archivos .parquet, consulte [https://parquet.apache.org/](https://parquet.apache.org/). Valor predeterminado: `csv` Valores válidos: `csv` o `parquet` Ejemplo: `--s3-settings '{"DataFormat": "parquet"}'`  | 
| EncodingType |  El tipo de codificación Parquet. Las opciones del tipo de codificación incluyen lo siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.S3.html) Valor predeterminado: `rle-dictionary` Valores válidos: `rle-dictionary`, `plain` o `plain-dictionary` Ejemplo: `--s3-settings '{"EncodingType": "plain-dictionary"}'`  | 
| DictPageSizeLimit |  El tamaño máximo permitido, en bytes, para una página de diccionario en un archivo .parquet. Si una página de diccionario supera este valor, la página utiliza la codificación sin formato. Valor predeterminado: 1 024 000 (1 MB) Valores válidos: cualquier valor entero válido Ejemplo: `--s3-settings '{"DictPageSizeLimit": 2,048,000}'`  | 
| RowGroupLength |  La cantidad de filas en un grupo de filas de un archivo .parquet. Valor predeterminado: 10 024 (10 KB) Valores válidos: cualquier entero válido Ejemplo: `--s3-settings '{"RowGroupLength": 20,048}'`  | 
| DataPageSize |  El tamaño máximo permitido, en bytes, para una página de datos en un archivo .parquet. Valor predeterminado: 1 024 000 (1 MB) Valores válidos: cualquier entero válido Ejemplo: `--s3-settings '{"DataPageSize": 2,048,000}'`  | 
| ParquetVersion |  La versión del formato de archivo .parquet. Valor predeterminado: `PARQUET_1_0` Valores válidos: `PARQUET_1_0` o `PARQUET_2_0` Ejemplo: `--s3-settings '{"ParquetVersion": "PARQUET_2_0"}'`  | 
| EnableStatistics |  Establezca en `true` o `y` para habilitar las estadísticas acerca de las páginas de archivo .parquet y grupos de filas. Valor predeterminado: `true` Valores válidos: `true`, `false`, `y`, `n` Ejemplo: `--s3-settings '{"EnableStatistics": false}'`  | 
| TimestampColumnName |  Un parámetro opcional para incluir una columna de marca temporal en los datos de punto de enlace de destino de S3. AWS DMS incluye una `STRING` columna adicional en los archivos de objetos .csv o .parquet de los datos migrados si se establece en un valor que no esté en `TimestampColumnName` blanco. Para una carga completa, cada fila de esta columna de marca temporal contiene una marca temporal que indica cuándo DMS transfirió los datos del origen al destino.  Para una carga CDC, cada fila de la columna de marca temporal contiene la marca temporal de confirmación de esa fila en la base de datos de origen. El formato de cadena para esta columna de marca de temporal es `yyyy-MM-dd HH:mm:ss.SSSSSS`. De forma predeterminada, la precisión de este valor se encuentra en microsegundos. Para una carga CDC, el redondeo de la precisión depende de la marca de tiempo de confirmación compatible con DMS para la base de datos de origen. Cuando el parámetro `AddColumnName` está establecido en `true`, DMS incluye también el nombre de la columna de marca temporal definido como el valor no vacío de `TimestampColumnName`. Ejemplo: `--s3-settings '{"TimestampColumnName": "TIMESTAMP"}'`  | 
| UseTaskStartTimeForFullLoadTimestamp |  Cuando se establece en `true`, este parámetro utiliza la hora de inicio de la tarea como el valor de la columna de marca temporal en lugar de la hora en que se escriben los datos en el destino. Para la carga completa, cuando `UseTaskStartTimeForFullLoadTimestamp` se establece en `true`, cada fila de la columna de marca temporal contiene la hora de inicio de la tarea. Para las cargas de CDC, cada fila de la columna de marca temporal contiene la hora de confirmación de la transacción. Cuando `UseTaskStartTimeForFullLoadTimestamp` se establece en `false`, la marca de tiempo de carga completa en la columna de marca de tiempo aumenta con la hora en que los datos llegan al destino. Valor predeterminado: `false` Valores válidos: `true`, `false` Ejemplo: `--s3-settings '{"UseTaskStartTimeForFullLoadTimestamp": true}'` `UseTaskStartTimeForFullLoadTimestamp: true` ayuda a que el objetivo de S3 `TimestampColumnName` para una carga completa se pueda ordenar con `TimestampColumnName` para una carga de CDC.  | 
| ParquetTimestampInMillisecond |  Un parámetro opcional que especifica la precisión de cada `TIMESTAMP` valor de las columnas escrito en un archivo de objeto S3 en formato .parquet. Si este atributo está establecido en `true` o`y`, AWS DMS escribe todas las `TIMESTAMP` columnas de un archivo con formato .parquet con una precisión de milisegundos. De lo contrario, DMS las escribe con una precisión de microsegundos. Actualmente, Amazon Athena y solo AWS Glue puede gestionar valores con una precisión de milisegundos. `TIMESTAMP` Establezca este atributo como verdadero para los archivos de objetos de punto de conexión de S3 con formato .parquet solo si planea consultar o procesar los datos con Athena o AWS Glue.    AWS DMS escribe cualquier valor de `TIMESTAMP` columna escrito en un archivo S3 en formato.csv con una precisión de microsegundos.   La configuración de este atributo no tiene ningún efecto en el formato de cadena del valor de la columna de marca de tiempo si establece el atributo `TimestampColumnName`.    Valor predeterminado: `false` Valores válidos: `true`, `false`, `y`, `n` Ejemplo: `--s3-settings '{"ParquetTimestampInMillisecond": true}'`  | 
| GlueCatalogGeneration |  Para generar una AWS Glue Data Catalog, defina esta configuración de punto final en. `true` Valor predeterminado: `false` Valores válidos: `true`, `false`, Ejemplo: `--s3-settings '{"GlueCatalogGeneration": true}'` **Nota: **No use `GlueCatalogGeneration` con `PreserveTransactions` y `CdcPath`.  | 

## AWS Glue Data Catalog Utilización con un objetivo de Amazon S3 para AWS DMS
<a name="CHAP_Target.S3.GlueCatalog"></a>

AWS Glue es un servicio que proporciona formas sencillas de categorizar los datos y consta de un repositorio de metadatos conocido como AWS Glue Data Catalog. Puede realizar la integración AWS Glue Data Catalog con su terminal de destino de Amazon S3 y consultar los datos de Amazon S3 a través de otros AWS servicios, como Amazon Athena. Amazon Redshift funciona con esta AWS Glue opción prediseñada, pero AWS DMS no la admite. 

Para generar el catálogo de datos, defina la configuración del `GlueCatalogGeneration` punto final en`true`, como se muestra en el siguiente AWS CLI ejemplo.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint 
            --engine-name s3 --endpoint-type target--s3-settings '{"ServiceAccessRoleArn": 
            "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": 
            "your-bucket-name", "DataFormat": "parquet", "GlueCatalogGeneration": true}'
```

Para una tarea de replicación de carga completa que incluye datos de tipo `csv`, establezca `IncludeOpForFullLoad` en `true`.

No use `GlueCatalogGeneration` con `PreserveTransactions` y `CdcPath`. El AWS Glue rastreador no puede conciliar los diferentes esquemas de archivos almacenados en lo especificado. `CdcPath`

Para que Amazon Athena indexe los datos de Amazon S3 y para que usted pueda consultarlos mediante consultas SQL estándar a través de Amazon Athena, el rol de IAM asociado al punto de conexión debe tener la siguiente política:

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

****  

```
{
    "Version":"2012-10-17",		 	 	  
    "Statement": [ 
        {
            "Effect": "Allow", 
            "Action": [
                "s3:GetBucketLocation", 
                "s3:GetObject",
                "s3:ListBucket", 
                "s3:ListBucketMultipartUploads", 
                "s3:ListMultipartUploadParts", 
                "s3:AbortMultipartUpload" 
            ], 
            "Resource": [
                "arn:aws:s3:::bucket123", 
                "arn:aws:s3:::bucket123/*" 
            ]
        },
        {
            "Effect": "Allow", 
            "Action": [ 
                "glue:CreateDatabase", 
                "glue:GetDatabase", 
                "glue:CreateTable", 
                "glue:DeleteTable", 
                "glue:UpdateTable", 
                "glue:GetTable", 
                "glue:BatchCreatePartition", 
                "glue:CreatePartition", 
                "glue:UpdatePartition", 
                "glue:GetPartition", 
                "glue:GetPartitions", 
                "glue:BatchGetPartition"
            ], 
            "Resource": [
                "arn:aws:glue:*:111122223333:catalog", 
                "arn:aws:glue:*:111122223333:database/*", 
                "arn:aws:glue:*:111122223333:table/*" 
            ]
        }, 
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:GetQueryExecution", 
                "athena:CreateWorkGroup"
            ],
            "Resource": "arn:aws:athena:*:111122223333:workgroup/glue_catalog_generation_for_task_*"
        }
    ]
}
```

------

**Referencias**
+ *Para obtener más información al respecto AWS Glue, consulte [Conceptos](https://docs.aws.amazon.com//glue/latest/dg/components-key-concepts.html) en la AWS Glue Guía para desarrolladores.*
+ Para obtener más información, AWS Glue Data Catalog consulte [Componentes](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html) en la *Guía para AWS Glue desarrolladores*.

## Uso del cifrado de datos, archivos Parquet y CDC en el destino de Amazon S3
<a name="CHAP_Target.S3.EndpointSettings"></a>

Puede utilizar la configuración de puntos de enlace de destino de S3 para configurar lo siguiente:
+ Una clave de KMS personalizada para cifrar los objetos de destino de S3.
+ Archivos Parquet como formato de almacenamiento para objetos de destino de S3.
+ Captura de datos de cambios (CDC) incluida la orden de transacción en el destino de S3.
+ Intégrelo AWS Glue Data Catalog con su terminal de destino de Amazon S3 y consulte los datos de Amazon S3 a través de otros servicios, como Amazon Athena.

### AWS KMS ajustes clave para el cifrado de datos
<a name="CHAP_Target.S3.EndpointSettings.KMSkeys"></a>

Los siguientes ejemplos muestran cómo configurar una clave de KMS personalizada para cifrar los objetos de destino de S3. Para empezar, puede ejecutar el siguiente comando de la CLI `create-endpoint`.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target 
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", 
"CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", 
"BucketName": "your-bucket-name", 
"EncryptionMode": "SSE_KMS", 
"ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'
```

Aquí, el objeto JSON especificado por la opción `--s3-settings` define dos parámetros. Uno es un parámetro `EncryptionMode` con el valor `SSE_KMS`. El otro es un parámetro `ServerSideEncryptionKmsKeyId` con el valor `arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480`. Este valor es un nombre de recurso de Amazon (ARN) para su clave de KMS personalizada. En el caso de un destino de S3, también se especifica la configuración adicional. Identifican el rol de acceso del servidor, proporcionan delimitadores para el formato de almacenamiento de objetos CSV predeterminado y proporcionan la ubicación y el nombre del bucket para almacenar objetos de destino de S3.

De forma predeterminada, el cifrado de datos de S3 se realiza utilizando el cifrado del lado del servidor de S3. Para el destino de S3 del ejemplo anterior, esto es también equivalente a especificar la configuración de su punto de enlace, como se indica en el siguiente ejemplo.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", 
"CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", 
"BucketName": "your-bucket-name", 
"EncryptionMode": "SSE_S3"}'
```

Para obtener más información sobre el trabajo con el cifrado del lado del servidor de S3, consulte [Protección de datos utilizando el cifrado del lado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).

**nota**  
También puede usar el comando `modify-endpoint` de la CLI para cambiar el valor del parámetro de `EncryptionMode` para un punto de conexión existente de `SSE_KMS` a `SSE_S3`. Sin embargo, no se puede cambiar el valor `EncryptionMode` de `SSE_S3` a `SSE_KMS`.

### Configuración para utilizar archivos .parquet para almacenar objetos de destino de S3
<a name="CHAP_Target.S3.EndpointSettings.Parquet"></a>

El formato predeterminado para la creación de objetos de destino de S3 son archivos .csv. Los ejemplos siguientes muestran algunos ajustes de puntos de enlace para especificar archivos .parquet como formato para crear objetos de destino de S3. Puede especificar el formato de los archivos .parquet con todos los valores predeterminados, como en el ejemplo siguiente.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target 
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "DataFormat": "parquet"}'
```

Aquí, el parámetro `DataFormat` se ha definido en `parquet` para habilitar el formato con todos los valores predeterminados de S3. Estos valores predeterminados incluyen una codificación de diccionario (`"EncodingType: "rle-dictionary"`) que utiliza una combinación de RLE y paquetes de bits para almacenar los valores repetidos con mayor eficiencia.

Puede añadir ajustes adicionales para otras opciones distintos a los predeterminados como en el ejemplo siguiente.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder",
"BucketName": "your-bucket-name", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "DictPageSizeLimit": 3,072,000,
"EnableStatistics": false }'
```

Aquí, además de parámetros para varias opciones estándar de bucket de S3 y el parámetro `DataFormat`, se definen los siguientes parámetros adicionales del archivo .parquet:
+ `EncodingType`: establecido en una codificación de diccionario (`plain-dictionary`) que almacena los valores encontrados en cada columna en un fragmento por columna de la página del diccionario.
+ `DictPageSizeLimit`: establecido en un tamaño máximo de página de diccionario de 3 MB.
+ `EnableStatistics`: desactiva el valor predeterminado que permite la recopilación de estadísticas sobre páginas de archivo Parquet y grupos de filas.

### Captura de datos de cambios (CDC) incluida la orden de transacción en el destino de S3
<a name="CHAP_Target.S3.EndpointSettings.CdcPath"></a>

De forma predeterminada, cuando AWS DMS ejecuta una tarea de CDC, almacena todos los cambios de fila registrados en la base de datos de origen (o bases de datos) en uno o más archivos para cada tabla. Cada conjunto de archivos que contiene los cambios de la misma tabla reside en un único directorio de destino asociado a esa tabla. AWS DMS crea tantos directorios de destino como tablas de bases de datos migradas al punto de enlace de destino de Amazon S3. Los archivos se almacenan en el destino de S3 en estos directorios independientemente del orden de las transacciones. Para obtener más información sobre las convenciones de nomenclatura de archivos, contenidos de datos y formato, consulte [Uso de Amazon S3 como objetivo para AWS Database Migration Service](#CHAP_Target.S3).

Para capturar los cambios en la base de datos de origen de manera que también capturen el orden de las transacciones, puede especificar la configuración del punto final de S3 que AWS DMS permite almacenar los cambios de fila de *todas* las tablas de la base de datos en uno o más archivos.csv creados en función del tamaño de la transacción. Estos *archivos de transacciones* .csv contienen todos los cambios de fila mostrados secuencialmente en el orden de las transacciones para todas las tablas implicadas en cada transacción. Estos archivos de transacciones residen juntos en un único *directorio de transacciones* que también se especifica en el destino de S3. En cada archivo de transacciones, la operación de transacción y la identidad de la base de datos y la tabla de origen para cada cambio de fila se almacenan como parte de los datos de la fila de la siguiente manera. 

```
operation,table_name,database_schema_name,field_value,...
```

Aquí, `operation` es la operación de transacción en la fila modificada, `table_name` es el nombre de la tabla de base de datos en la que se cambia la fila, `database_schema_name` es el nombre del esquema de base de datos en el que reside la tabla y `field_value` es el primero de uno o más valores de campo que especifican los datos de la fila.

El siguiente ejemplo de un archivo de transacciones muestra las filas modificadas de una o más transacciones que incluyen dos tablas.

```
I,Names_03cdcad11a,rdsTempsdb,13,Daniel
U,Names_03cdcad11a,rdsTempsdb,23,Kathy
D,Names_03cdcad11a,rdsTempsdb,13,Cathy
I,Names_6d152ce62d,rdsTempsdb,15,Jane
I,Names_6d152ce62d,rdsTempsdb,24,Chris
I,Names_03cdcad11a,rdsTempsdb,16,Mike
```

En este caso, la operación de transacción en cada fila se indica mediante `I` (insertar), `U` (actualizar) o `D` (eliminar) en la primera columna. El nombre de la tabla es el valor de la segunda columna (por ejemplo, `Names_03cdcad11a`). El nombre del esquema de la base de datos es el valor de la tercera columna (por ejemplo, `rdsTempsdb`). Y las columnas restantes se rellenan con sus propios datos de fila (por ejemplo, `13,Daniel`).

Además, asigna un AWS DMS nombre a los archivos de transacciones que crea en el destino de Amazon S3 mediante una marca de tiempo de acuerdo con la siguiente convención de nomenclatura.

```
CDC_TXN-timestamp.csv
```

Aquí, `timestamp` es la hora en que se creó el archivo de transacciones, como en el siguiente ejemplo. 

```
CDC_TXN-20201117153046033.csv
```

Esta marca temporal en el nombre del archivo garantiza que los archivos de transacciones se creen y se muestren en el orden de transacción al incluirlos en el directorio de transacciones.

**nota**  
Al capturar los cambios de datos en el orden de las transacciones, AWS DMS siempre guarda los cambios de fila en archivos.csv, independientemente del valor de la configuración de `DataFormat` S3 en el destino.

Para controlar la frecuencia de las escrituras en un destino de Amazon S3 durante una tarea de replicación de datos, puede configurar los ajustes `CdcMaxBatchInterval` y `CdcMinFileSize`. Esto puede traducirse en un mejor rendimiento al analizar los datos sin necesidad de realizar operaciones adicionales que supongan una sobrecarga. Para obtener más información, consulte [Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS](#CHAP_Target.S3.Configuring) 

**Para indicar que AWS DMS se deben almacenar todos los cambios de fila en el orden de las transacciones**

1. Establezca la configuración de `PreserveTransactions` S3 en el destino en `true`.

1. Establezca la configuración `CdcPath` S3 del destino en una ruta de carpeta relativa en la que desee almacenar AWS DMS los archivos de transacción.csv.

   AWS DMS crea esta ruta en el depósito de destino y el directorio de trabajo predeterminados de S3 o en el depósito y la carpeta del depósito que especifique mediante la configuración `BucketName` y `BucketFolder` S3 del destino.

## Indicar operaciones de base de datos de origen en datos de S3 migrados
<a name="CHAP_Target.S3.Configuring.InsertOps"></a>

Al AWS DMS migrar registros a un destino de S3, puede crear un campo adicional en cada registro migrado. Este campo adicional indica la operación que se aplica al registro en la base de datos de origen. AWS DMS La forma en que se crea y establece este primer campo depende del tipo de tarea de migración y de la configuración de `includeOpForFullLoad``cdcInsertsOnly`, y`cdcInsertsAndUpdates`.

Para una carga completa, cuando `includeOpForFullLoad` es `true`, AWS DMS siempre crea un primer campo adicional en cada registro .csv. Este campo contiene la letra I (INSERT) para indicar que la fila se insertó en la base de datos de origen. Para una carga de CDC, cuando `cdcInsertsOnly` es `false` (valor predeterminado), AWS DMS también crea siempre un primer campo adicional en cada registro.csv o .parquet. Este campo contiene la letra I (INSERT), U (UPDATE) o D (DELETE) para indicar si la fila se insertó, actualizó o eliminó en la base de datos de origen.

En la siguiente tabla, puede ver cómo los ajustes de los atributos `includeOpForFullLoad` y `cdcInsertsOnly` funcionan juntos y afectan a la configuración de los registros migrados.


| Con estas configuraciones de parámetros | DMS establece los registros de destino de la forma siguiente para la salida .csv y .parquet  | includeOpForFullLoad | cdcInsertsOnly | Para la carga completa | Para la carga de CDC | 
| --- | --- | --- | --- | --- | --- | 
| true | true | Valor del primer campo añadido establecido en I | Valor del primer campo añadido establecido en I | 
| false | false | No se ha añadido el campo | Valor del primer campo añadido establecido en I, U o D | 
| false | true | No se ha añadido el campo | No se ha añadido el campo | 
| true | false | Valor del primer campo añadido establecido en I | Valor del primer campo añadido establecido en I, U o D | 

Cuando `includeOpForFullLoad` y `cdcInsertsOnly` se establecen en el mismo valor, los registros de destino se establecen de acuerdo con el atributo que controla el valor del registro para el tipo de migración actual. Este atributo es `includeOpForFullLoad` para la carga completa y `cdcInsertsOnly` para la carga CDC.

Cuando `cdcInsertsOnly` están `includeOpForFullLoad` configurados en valores diferentes, la configuración del AWS DMS registro objetivo es uniforme tanto para los CDC como para los de carga completa. Para ello, hace que el valor del registro para una carga CDC se ajuste al valor del registro de una carga completa anterior especificada por `includeOpForFullLoad`. 

Supongamos, por ejemplo, que una carga completa se establece para añadir un primer campo que indique un registro insertado. En este caso, una carga CDC posterior se establece para añadir un primer campo que indique un registro insertado, actualizado o eliminado, según corresponda en el origen. Supongamos ahora que una carga completa se establece en *no* añadir un primer campo para indicar un registro insertado. En este caso, una carga CDC se establece también para no añadir un primer campo a cada registro independientemente de su operación de registro correspondiente en el origen.

Del mismo modo, la forma en que DMS crea y establece un primer campo adicional depende de la configuración de `includeOpForFullLoad` y `cdcInsertsAndUpdates`. En la siguiente tabla, puede ver cómo el valor de los atributos `includeOpForFullLoad` y `cdcInsertsAndUpdates` funcionan juntos y afectan al valor de los registros migrados en este formato. 


| Con estas configuraciones de parámetros | DMS establece los registros de destino de la forma siguiente para la salida .csv  | includeOpForFullLoad | cdcInsertsAndActualizaciones | Para la carga completa | Para la carga de CDC | 
| --- | --- | --- | --- | --- | --- | 
| true | true | Valor del primer campo añadido establecido en I | Valor del primer campo agregado establecido en I o U | 
| false | false | No se ha añadido el campo | Valor del primer campo añadido establecido en I, U o D | 
| false | true | No se ha añadido el campo | Valor del primer campo agregado establecido en I o U | 
| true | false | Valor del primer campo añadido establecido en I | Valor del primer campo añadido establecido en I, U o D | 

## Tipos de datos de destino para Parquet de S3
<a name="CHAP_Target.S3.DataTypes"></a>

La siguiente tabla muestra los tipos de datos de destino de Parquet que se admiten cuando se utiliza AWS DMS y el mapeo predeterminado a partir de AWS DMS los tipos de datos.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS tipo de datos  |  Tipo de datos de Parquet de S3   | 
| --- | --- | 
| BYTES | BINARY | 
| DATE | DATE32 | 
| TIME | TIME32 | 
| DATETIME | TIMESTAMP | 
| INT1 | INT8 | 
| INT2 | INT16 | 
| INT4 | INT32 | 
| INT8 | INT64 | 
| NUMERIC | DECIMAL | 
| REAL4 | FLOAT | 
| REAL8 | DOUBLE | 
| STRING | STRING | 
| UINT1 | UINT8 | 
| UINT2 | UINT16 | 
| UINT4 | UINT32 | 
| UINT8 | UINT64 | 
| WSTRING | STRING | 
| BLOB | BINARY | 
| NCLOB | STRING | 
| CLOB | STRING | 
| BOOLEAN | BOOL | 

# Uso de una base de datos de Amazon DynamoDB como destino para AWS Database Migration Service
<a name="CHAP_Target.DynamoDB"></a>

Puede utilizarlos AWS DMS para migrar datos a una tabla de Amazon DynamoDB. Amazon DynamoDB es un servicio de base de datos NoSQL totalmente gestionado que proporciona un rendimiento rápido y predecible con una escalabilidad perfecta. AWS DMS admite el uso de una base de datos relacional o MongoDB como fuente.

En DynamoDB se trabaja principalmente con tablas, elementos y atributos. Una *tabla *es una recopilación de elementos y cada *elemento *es una recopilación de atributos. DynamoDB utiliza claves primarias, denominadas claves de partición, para identificar cada elemento de una tabla de forma unívoca. También puede utilizar claves e índices secundarios para proporcionar más flexibilidad a la hora de realizar consultas.

Puede utilizar el mapeo de objetos para migrar sus datos desde una base de datos de origen a una tabla de DynamoDB de destino. El mapeo de objetos le permite determinar dónde se encuentran los datos de origen en el destino. 

Cuando AWS DMS crea tablas en un punto final de destino de DynamoDB, crea tantas tablas como en el punto final de la base de datos de origen. AWS DMS también establece varios valores de parámetros de DynamoDB. El costo de la creación de la tabla depende de la cantidad de datos y del número de tablas que hay que migrar.

**nota**  
La opción de **modo SSL** de la AWS DMS consola o la API no se aplica a algunos servicios NoSQL y de streaming de datos, como Kinesis y DynamoDB. **Son seguros de forma predeterminada, por lo que AWS DMS indica que la configuración del modo SSL es cero (Modo SSL=Ninguno).** No necesita proporcionar ninguna configuración adicional para que el punto de conexión utilice SSL. Por ejemplo, cuando se utiliza DynamoDB como punto de conexión de destino, es seguro de forma predeterminada. Todas las llamadas de API a DynamoDB utilizan SSL, por lo que no es necesaria una opción de SSL adicional en el punto final. AWS DMS Puede colocar y recuperar datos de forma segura a través de puntos de conexión SSL mediante el protocolo HTTPS, que AWS DMS utiliza de forma predeterminada al conectarse a una base de datos de DynamoDB.

Para ayudar a aumentar la velocidad de la transferencia, AWS DMS admite una carga completa de subprocesos múltiples a una instancia de destino de DynamoDB. DMS admite este multriproceso con configuración de tareas que incluyen lo siguiente:
+ `MaxFullLoadSubTasks`: utilice esta opción para indicar el número máximo de tablas de origen que se pueden cargar en paralelo. DMS carga cada tabla en su tabla de destino de DynamoDB correspondiente mediante una tarea secundaria dedicada. El valor predeterminado es 8. El valor máximo es 49.
+ `ParallelLoadThreads`— Utilice esta opción para especificar el número de subprocesos que se AWS DMS utilizan para cargar cada tabla en su tabla de destino de DynamoDB. El valor predeterminado es 0 (subproceso único). El valor máximo es 200. Puede pedir que se incremente este límite máximo.
**nota**  
El DMS asigna cada segmento de una tabla a su propio subproceso para la carga. Por lo tanto, establezca `ParallelLoadThreads` en el número máximo de segmentos que especifique para una tabla en el origen.
+ `ParallelLoadBufferSize`: utilice esta opción para especificar el número máximo de registros para almacenar en el búfer que los subprocesos de carga en paralelo utilizan para cargar datos en el destino de DynamoDB. El valor predeterminado es 50. El valor máximo es 1000. Utilice este parámetro con `ParallelLoadThreads`. `ParallelLoadBufferSize` es válido solo cuando hay más de un subproceso.
+ Ajustes de la asignación de tablas para tablas individuales: utilice las reglas de `table-settings` para identificar las tablas individuales del origen que desea cargar en paralelo. Use también estas reglas para especificar cómo segmentar la filas de cada tabla para cargas de multiprocesos. Para obtener más información, consulte [Reglas y operaciones de configuración de tablas y recopilaciones](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

**nota**  
Cuando se AWS DMS establecen los valores de los parámetros de DynamoDB para una tarea de migración, el valor predeterminado del parámetro Unidades de capacidad de lectura (RCU) se establece en 200.  
También se establece el valor del parámetro de las unidades de capacidad de escritura (WCU), pero su valor depende de otras configuraciones diferentes:  
El valor predeterminado para el parámetro WCU es 200.
Si la configuración de la tarea `ParallelLoadThreads` se establece en un valor superior a 1 (el valor predeterminado es 0), entonces el parámetro WCU se establece en un valor 200 veces el valor de `ParallelLoadThreads`.
Se aplican tarifas AWS DMS de uso estándar a los recursos que utilice.

## Migración desde una base de datos relacional a una tabla de DynamoDB
<a name="CHAP_Target.DynamoDB.RDBMS2DynamoDB"></a>

AWS DMS admite la migración de datos a tipos de datos escalares de DynamoDB. Al migrar desde una base de datos relacional como Oracle o MySQL a DynamoDB, puede reestructurar la manera de almacenar dichos datos.

Actualmente, AWS DMS admite la reestructuración de tabla única a tabla única a atributos de tipo escalar de DynamoDB. Si migra datos a DynamoDB desde una tabla de base de datos relacional, toma los datos de una tabla y cambia su formato por atributos de tipo de datos escalares de DynamoDB. Estos atributos pueden aceptar datos de varias columnas y puede mapear una columna en un atributo directamente.

AWS DMS admite los siguientes tipos de datos escalares de DynamoDB:
+ Cadena
+ Número
+ Booleano

**nota**  
Los datos NULL del origen se ignoran en el destino.

## Requisitos previos para usar DynamoDB como objetivo para AWS Database Migration Service
<a name="CHAP_Target.DynamoDB.Prerequisites"></a>

Antes de empezar a trabajar con una base de datos de DynamoDB como destino, asegúrese AWS DMS de crear un rol de IAM. Esta función de IAM debería permitir asumir y conceder acceso AWS DMS a las tablas de DynamoDB a las que se están migrando. El conjunto mínimo de permisos de acceso se muestra en la siguiente política de IAM.

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

****  

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

------

El rol que utilice para la migración a DynamoDB debe tener los siguientes permisos.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:CreateTable",
                "dynamodb:DescribeTable",
                "dynamodb:DeleteTable",
                "dynamodb:DeleteItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:111122223333:table/name1",
                "arn:aws:dynamodb:us-west-2:111122223333:table/OtherName*",
                "arn:aws:dynamodb:us-west-2:111122223333:table/awsdms_apply_exceptions",
                "arn:aws:dynamodb:us-west-2:111122223333:table/awsdms_full_load_exceptions"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:ListTables"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Limitaciones al usar DynamoDB como objetivo para AWS Database Migration Service
<a name="CHAP_Target.DynamoDB.Limitations"></a>

Al utilizar DynamoDB como destino se aplican las siguientes restricciones:
+ DynamoDB limita la precisión del tipo de datos Number a 38 espacios. Almacene todos los tipos de datos con una mayor precisión como cadena. Deberá indicarlo explícitamente empleando la característica de mapeo de objetos.
+ Debido a que DynamoDB no tiene un tipo de datos Date, los datos que utilizan el tipo de datos Date se convierten en cadenas.
+ DynamoDB no permite actualizaciones de los atributos de clave principal. Esta restricción es importante cuando se utiliza la replicación continua con captura de datos de cambio (CDC), ya que puede resultar en la presencia de datos no deseados en el destino. En función del mapeo de objetos, una operación de CDC que actualiza la clave principal puede hacer una de estas dos opciones. Puede producir un error o insertar un nuevo elemento con la clave principal actualizada y datos incompletos.
+ AWS DMS solo admite la replicación de tablas con claves principales no compuestas. La excepción es si especifica un mapeo de objetos para la tabla de destino con una clave de partición personalizada, una clave de ordenación o ambas.
+ AWS DMS no admite datos de LOB a menos que sea un CLOB. AWS DMS convierte los datos CLOB en una cadena de DynamoDB al migrar los datos.
+ Cuando se utiliza DynamoDB como destino, solo se admite la tabla de control Apply Exceptions (Aplicar excepciones) (`dmslogs.awsdms_apply_exceptions`). Para obtener más información sobre las tablas de control, consulte [Configuración de las tareas de la tabla de control](CHAP_Tasks.CustomizingTasks.TaskSettings.ControlTable.md).
+ AWS DMS no admite la configuración de tareas `TargetTablePrepMode=TRUNCATE_BEFORE_LOAD` para DynamoDB como objetivo. 
+ AWS DMS no admite la configuración de tareas `TaskRecoveryTableEnabled` para DynamoDB como objetivo. 
+ `BatchApply` no es compatible con los puntos de conexión de DynamoDB.
+ AWS DMS no puede migrar los atributos cuyos nombres coincidan con palabras reservadas en DynamoDB. Para obtener más información, consulte [Palabras reservadas en DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html) en la *Guía para desarrolladores de Amazon DynamoDB*.

## Uso de la asignación de objetos para migrar datos a DynamoDB
<a name="CHAP_Target.DynamoDB.ObjectMapping"></a>

AWS DMS usa reglas de mapeo de tablas para mapear datos de la tabla de DynamoDB de origen a la de destino. Para asignar datos a un destino de DynamoDB, se utiliza un tipo de regla de mapeo de tabla denominado *object-mapping*. El mapeo de objetos le permite definir los nombres de atributo y los datos que se les puede migrar. Debe tener reglas de selección cuando utilice el mapeo de objetos.

DynamoDB no tiene una estructura predeterminada, simplemente dispone de una clave de partición y una clave de clasificación opcional. Si tiene una clave principal no compuesta, úsela. AWS DMS Si tiene una clave principal compuesta o desea utilizar una clave de ordenación, defina estas claves y el resto de los atributos de su tabla de DynamoDB de destino.

Para crear una regla de mapeo de objetos, debe especificar `rule-type` como *object-mapping*. Esta regla indica el tipo de mapeo de objetos que desea utilizar. 

La estructura de la regla es la siguiente:

```
{ "rules": [
    {
      "rule-type": "object-mapping",
      "rule-id": "<id>",
      "rule-name": "<name>",
      "rule-action": "<valid object-mapping rule action>",
      "object-locator": {
      "schema-name": "<case-sensitive schema name>",
      "table-name": ""
      },
      "target-table-name": "<table_name>"
    }
  ]
}
```

AWS DMS actualmente admite `map-record-to-record` y es `map-record-to-document` el único valor válido para el `rule-action` parámetro. Estos valores especifican lo que AWS DMS ocurre de forma predeterminada con los registros que no se excluyen como parte de la lista de `exclude-columns` atributos. Estos valores no afectan a los mapeos de atributos en modo alguno. 
+ Puede utilizar `map-record-to-record` al migrar desde una base de datos relacional a DynamoDB. Utiliza la clave principal de la base de datos relacional como la clave de partición en DynamoDB y crea un atributo para cada columna de la base de datos de origen. Cuando se utiliza`map-record-to-record`, para cualquier columna de la tabla de origen que no figure en la lista de `exclude-columns` atributos, AWS DMS crea el atributo correspondiente en la instancia de DynamoDB de destino. Lo hace independientemente de si dicha columna de origen se utiliza en un mapeo de atributos. 
+ Utilice `map-record-to-document` para colocar columnas de origen en una asignación de DynamoDB único y plano en el destino utilizando el nombre de atributo “\$1doc”. Cuando se usa`map-record-to-document`, AWS DMS coloca los datos en un único atributo de mapa plano de DynamoDB en la fuente. Este atributo se denomina "\$1doc". Esta colocación se aplica a cada columna de la tabla de origen que no se enumera en la lista de atributos `exclude-columns`. 

Una forma de entender la diferencia entre los parámetros de `rule-action` `map-record-to-record` y `map-record-to-document` consiste en ver los dos parámetros en acción. En este ejemplo, imagine que empieza con una fila de una tabla de base de datos relacional con la estructura y los datos siguientes:

![\[base de datos de ejemplo\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/images/datarep-dynamodb1.png)


Para migrar esta información a DynamoDB, crea reglas para mapear los datos en un elemento de la tabla de DynamoDB. Tenga en cuenta las columnas listadas para el parámetro `exclude-columns`. Estas columnas no se mapean directamente en el destino. En su lugar, la asignación de atributos se utiliza para combinar los datos en nuevos elementos, como dónde, *FirstName*y *LastName*se agrupan para formar parte del *CustomerName*objetivo de DynamoDB. *NickName*y no se *excluyen los ingresos*.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToDDB",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "test",
                "table-name": "customer"
            },
            "target-table-name": "customer_t",
            "mapping-parameters": {
                "partition-key-name": "CustomerName",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "dynamodb-map",
                        "value": {
                            "M": {
                                "Home": {
                                    "M": {
                                        "Address": {
                                            "S": "${HomeAddress}"
                                        },
                                        "Phone": {
                                            "S": "${HomePhone}"
                                        }
                                    }
                                },
                                "Work": {
                                    "M": {
                                        "Address": {
                                            "S": "${WorkAddress}"
                                        },
                                        "Phone": {
                                            "S": "${WorkPhone}"
                                        }
                                    }
                                }
                            }
                        }
                    }
                ]
            }
        }
    ]
}
```

Al usar el `rule-action` parámetro *map-record-to-record*, los datos *NickName*y los *ingresos* se asignan a elementos del mismo nombre en el objetivo de DynamoDB. 

![\[Comience con AWS DMS\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/images/datarep-dynamodb2.png)


Sin embargo, supongamos que usa las mismas reglas pero cambia el `rule-action` parámetro a *map-record-to-document*. En este caso, las columnas que no figuran en el `exclude-columns` parámetro *NickName*y *los ingresos* se asignan a un elemento *\$1doc*.

![\[Comience con AWS DMS\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/images/datarep-dynamodb3.png)


### Uso de expresiones de condición personalizadas con mapeo de objetos
<a name="CHAP_Target.DynamoDB.ObjectMapping.ConditionExpression"></a>

Puede utilizar una característica de DynamoDB denominada “expresiones de condición” para manipular los datos que se escriben en una tabla de DynamoDB. Para obtener más información sobre las expresiones de condición en DynamoDB, consulte [Expresiones de condición](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html).

Un miembro de una expresión de condición consta de: 
+ una expresión (obligatorio), 
+ valores de atributo de expresión (obligatorio). Especifica una estructura json de DynamoDB del valor del atributo. Esto resulta útil para comparar un atributo con un valor en DynamoDB que quizás no conozca hasta el tiempo de ejecución. Puede definir un atributo de expresión como marcador de posición para un valor real.
+ nombres de atributo de expresión (obligatorio). Esto ayuda a evitar posibles conflictos con cualquier palabra reservada de DynamoDB, nombres de atributos que contengan caracteres especiales y similares.
+ las opciones sobre cuándo utilizar la expresión de condición (opcional). El valor predeterminado es apply-during-cdc = false y apply-during-full-load = true

La estructura de la regla es la siguiente:

```
"target-table-name": "customer_t",
      "mapping-parameters": {
        "partition-key-name": "CustomerName",
        "condition-expression": {
          "expression":"<conditional expression>",
          "expression-attribute-values": [
              {
                "name":"<attribute name>",
                "value":<attribute value>
              }
          ],
          "apply-during-cdc":<optional Boolean value>,
          "apply-during-full-load": <optional Boolean value>
        }
```

En el siguiente ejemplo se destacan las secciones que se utilizan para la expresión de condición.

![\[Comience con AWS DMS\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/images/datarep-Tasks-conditional1.png)


### Uso del mapeo de atributos con el mapeo de objetos
<a name="CHAP_Target.DynamoDB.ObjectMapping.AttributeMapping"></a>

El mapeo de atributos le permite especificar una cadena de ejemplo utilizando nombres de columna del origen para reestructurar los datos en el destino. El formato se modifica en función de lo que especifique el usuario en la plantilla.

El siguiente ejemplo muestra la estructura de la base de datos de origen y la estructura deseada de destino en DynamoDB. En primer lugar se muestra la estructura de origen, en este caso, una base de datos de Oracle y, a continuación, la estructura deseada de los datos en DynamoDB. El ejemplo concluye con la estructura JSON utilizada para crear la estructura de destino deseada.

La estructura de los datos de Oracle es la siguiente:


****  

| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateOfBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Clave principal | N/A |  | 
| Randy | Marsh | 5 | 221B Baker Street  | 1234567890 | 31 Spooner Street, Quahog  | 9876543210  | 02/29/1988  | 

La estructura de los datos de DynamoDB es la siguiente:


****  

| CustomerName | StoreId | ContactDetails | DateOfBirth | 
| --- | --- | --- | --- | 
| Clave de partición | Clave de ordenación | N/A | 
| <pre>Randy,Marsh</pre> | <pre>5</pre> | <pre>{<br />    "Name": "Randy",<br />    "Home": {<br />        "Address": "221B Baker Street",<br />        "Phone": 1234567890<br />    },<br />    "Work": {<br />        "Address": "31 Spooner Street, Quahog",<br />        "Phone": 9876541230<br />    }<br />}</pre> | <pre>02/29/1988</pre> | 

La siguiente estructura JSON muestra el mapeo de objetos y de columnas que se utiliza para conseguir la estructura de DynamoDB:

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToDDB",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "test",
                "table-name": "customer"
            },
            "target-table-name": "customer_t",
            "mapping-parameters": {
                "partition-key-name": "CustomerName",
                "sort-key-name": "StoreId",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "target-attribute-name": "StoreId",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${StoreId}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "{\"Name\":\"${FirstName}\",\"Home\":{\"Address\":\"${HomeAddress}\",\"Phone\":\"${HomePhone}\"}, \"Work\":{\"Address\":\"${WorkAddress}\",\"Phone\":\"${WorkPhone}\"}}"
                    }
                ]
            }
        }
    ]
}
```

Otro modo de utilizar el mapeo de columnas es utilizar el formato DynamoDB como su tipo de documento. El siguiente ejemplo de código utiliza *dynamodb-map* como el `attribute-sub-type` para el mapeo de atributos. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToDDB",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "test",
                "table-name": "customer"
            },
            "target-table-name": "customer_t",
            "mapping-parameters": {
                "partition-key-name": "CustomerName",
                "sort-key-name": "StoreId",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "target-attribute-name": "StoreId",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${StoreId}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "dynamodb-map",
                        "value": {
                          "M": {
                            "Name": {
                              "S": "${FirstName}"
                            },
                            "Home": {
                                    "M": {
                                        "Address": {
                                            "S": "${HomeAddress}"
                                        },
                                        "Phone": {
                                            "S": "${HomePhone}"
                                        }
                                    }
                                },
                                "Work": {
                                    "M": {
                                        "Address": {
                                            "S": "${WorkAddress}"
                                        },
                                        "Phone": {
                                            "S": "${WorkPhone}"
                                        }
                                    }
                                }
                            }
                        }        
                    }
                ]
            }
        }
    ]
}
```

Como alternativa`dynamodb-map`, puede utilizarla `dynamodb-list` como mapeo attribute-sub-type de atributos, como se muestra en el siguiente ejemplo.

```
{
"target-attribute-name": "ContactDetailsList",
"attribute-type": "document",
"attribute-sub-type": "dynamodb-list",
"value": {
    "L": [
            {
                "N": "${FirstName}"
            },
            {   
                "N": "${HomeAddress}"
            },
            {   
                "N": "${HomePhone}"
            },
            {
                "N": "${WorkAddress}"
            },
            {
                "N": "${WorkPhone}"
            }
        ]   
    }
}
```

### Ejemplo 1: Uso del mapeo de atributos con el mapeo de objetos
<a name="CHAP_Target.DynamoDB.ColumnMappingExample1"></a>

El siguiente ejemplo migra datos de dos tablas de bases de datos MySQL, *nfl\$1data y *sport\$1team**, a dos tablas de DynamoDB denominadas y. *NFLTeams*SportTeams** A continuación se muestra la estructura de las tablas y la estructura JSON que se utilizan para mapear los datos de las tablas de la base de datos MySQL en las tablas de DynamoDB.

A continuación se muestra la estructura de la tabla de base de datos MySQL *nfl\$1data*:

```
mysql> desc nfl_data;
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| Position      | varchar(5)  | YES  |     | NULL    |       |
| player_number | smallint(6) | YES  |     | NULL    |       |
| Name          | varchar(40) | YES  |     | NULL    |       |
| status        | varchar(10) | YES  |     | NULL    |       |
| stat1         | varchar(10) | YES  |     | NULL    |       |
| stat1_val     | varchar(10) | YES  |     | NULL    |       |
| stat2         | varchar(10) | YES  |     | NULL    |       |
| stat2_val     | varchar(10) | YES  |     | NULL    |       |
| stat3         | varchar(10) | YES  |     | NULL    |       |
| stat3_val     | varchar(10) | YES  |     | NULL    |       |
| stat4         | varchar(10) | YES  |     | NULL    |       |
| stat4_val     | varchar(10) | YES  |     | NULL    |       |
| team          | varchar(10) | YES  |     | NULL    |       |
+---------------+-------------+------+-----+---------+-------+
```

A continuación se muestra la estructura de la tabla de la base de datos MySQL *sport\$1team*:

```
mysql> desc sport_team;
+---------------------------+--------------+------+-----+---------+----------------+
| Field                     | Type         | Null | Key | Default | Extra          |
+---------------------------+--------------+------+-----+---------+----------------+
| id                        | mediumint(9) | NO   | PRI | NULL    | auto_increment |
| name                      | varchar(30)  | NO   |     | NULL    |                |
| abbreviated_name          | varchar(10)  | YES  |     | NULL    |                |
| home_field_id             | smallint(6)  | YES  | MUL | NULL    |                |
| sport_type_name           | varchar(15)  | NO   | MUL | NULL    |                |
| sport_league_short_name   | varchar(10)  | NO   |     | NULL    |                |
| sport_division_short_name | varchar(10)  | YES  |     | NULL    |                |
```

A continuación, se muestran las reglas de mapeo de tablas que se utilizan para asignar las dos tablas a las dos tablas de DynamoDB:

```
{
  "rules":[
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "dms_sample",
        "table-name": "nfl_data"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "selection",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "dms_sample",
        "table-name": "sport_team"
      },
      "rule-action": "include"
    },
    {
      "rule-type":"object-mapping",
      "rule-id":"3",
      "rule-name":"MapNFLData",
      "rule-action":"map-record-to-record",
      "object-locator":{
        "schema-name":"dms_sample",
        "table-name":"nfl_data"
      },
      "target-table-name":"NFLTeams",
      "mapping-parameters":{
        "partition-key-name":"Team",
        "sort-key-name":"PlayerName",
        "exclude-columns": [
          "player_number", "team", "name"
        ],
        "attribute-mappings":[
          {
            "target-attribute-name":"Team",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"${team}"
          },
          {
            "target-attribute-name":"PlayerName",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"${name}"
          },
          {
            "target-attribute-name":"PlayerInfo",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"{\"Number\": \"${player_number}\",\"Position\": \"${Position}\",\"Status\": \"${status}\",\"Stats\": {\"Stat1\": \"${stat1}:${stat1_val}\",\"Stat2\": \"${stat2}:${stat2_val}\",\"Stat3\": \"${stat3}:${
stat3_val}\",\"Stat4\": \"${stat4}:${stat4_val}\"}"
          }
        ]
      }
    },
    {
      "rule-type":"object-mapping",
      "rule-id":"4",
      "rule-name":"MapSportTeam",
      "rule-action":"map-record-to-record",
      "object-locator":{
        "schema-name":"dms_sample",
        "table-name":"sport_team"
      },
      "target-table-name":"SportTeams",
      "mapping-parameters":{
        "partition-key-name":"TeamName",
        "exclude-columns": [
          "name", "id"
        ],
        "attribute-mappings":[
          {
            "target-attribute-name":"TeamName",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"${name}"
          },
          {
            "target-attribute-name":"TeamInfo",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"{\"League\": \"${sport_league_short_name}\",\"Division\": \"${sport_division_short_name}\"}"
          }
        ]
      }
    }
  ]
}
```

El ejemplo de salida de la tabla de *NFLTeams*DynamoDB se muestra a continuación:

```
  "PlayerInfo": "{\"Number\": \"6\",\"Position\": \"P\",\"Status\": \"ACT\",\"Stats\": {\"Stat1\": \"PUNTS:73\",\"Stat2\": \"AVG:46\",\"Stat3\": \"LNG:67\",\"Stat4\": \"IN 20:31\"}",
  "PlayerName": "Allen, Ryan",
  "Position": "P",
  "stat1": "PUNTS",
  "stat1_val": "73",
  "stat2": "AVG",
  "stat2_val": "46",
  "stat3": "LNG",
  "stat3_val": "67",
  "stat4": "IN 20",
  "stat4_val": "31",
  "status": "ACT",
  "Team": "NE"
}
```

El ejemplo de salida de la tabla de SportsTeams *DynamoDB* se muestra a continuación:

```
{
  "abbreviated_name": "IND",
  "home_field_id": 53,
  "sport_division_short_name": "AFC South",
  "sport_league_short_name": "NFL",
  "sport_type_name": "football",
  "TeamInfo": "{\"League\": \"NFL\",\"Division\": \"AFC South\"}",
  "TeamName": "Indianapolis Colts"
}
```

## Tipos de datos de destino para DynamoDB
<a name="CHAP_Target.DynamoDB.DataTypes"></a>

El punto de conexión de DynamoDB es AWS DMS compatible con la mayoría de los tipos de datos de DynamoDB. La siguiente tabla muestra los tipos de datos de AWS DMS destino de Amazon que se admiten cuando se utilizan AWS DMS y el mapeo predeterminado a partir de AWS DMS los tipos de datos.

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).

Al AWS DMS migrar datos de bases de datos heterogéneas, asignamos los tipos de datos de la base de datos de origen a tipos de datos intermedios denominados tipos de AWS DMS datos. A continuación, se mapean los tipos de datos intermedios en los tipos de datos de destino. La siguiente tabla muestra cada tipo de AWS DMS datos y el tipo de datos al que se asigna en DynamoDB:


| AWS DMS tipo de datos | Tipo de dato de DynamoDB | 
| --- | --- | 
|  Cadena  |  Cadena  | 
|  WString  |  Cadena  | 
|  Booleano  |  Booleano  | 
|  Fecha  |  Cadena  | 
|  DateTime  |  Cadena  | 
|  INT1  |  Número  | 
|  INT2  |  Número  | 
|  INT4  |  Número  | 
|  INT8  |  Número  | 
|  Numérico  |  Número  | 
|  Real4  |  Número  | 
|  Real8  |  Número  | 
|  UINT1  |  Número  | 
|  UINT2  |  Número  | 
|  UINT4  |  Número  | 
| UINT8 | Número | 
| CLOB | Cadena | 

# Uso de Amazon Kinesis Data Streams como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Kinesis"></a>

Puede utilizarlos AWS DMS para migrar datos a una transmisión de datos de Amazon Kinesis. Amazon Kinesis Data Streams forma parte del servicio de Amazon Kinesis Data Streams. Puede utilizar Kinesis Data Streams para recopilar y procesar grandes secuencias de registros de datos en tiempo real.

Un flujo de datos de Kinesis se compone de particiones. Las *particiones* son secuencias de registros de datos identificados inequívocamente en una secuencia. Para obtener más información sobre las particiones en Amazon Kinesis Data Streams, consulte [Partición](https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html#shard) en la *Guía para desarrolladores de Amazon Kinesis Data Streams*.

AWS Database Migration Service publica registros en una transmisión de datos de Kinesis mediante JSON. Durante la conversión, AWS DMS serializa cada registro de la base de datos de origen en un par de atributo-valor en formato JSON o en un formato de mensaje JSON\$1UNFORMATTED. Un formato de mensaje JSON\$1UNFORMATTED es una cadena JSON de una sola línea con un delimitador de nueva línea. Permite a Amazon Data Firehose enviar datos de Kinesis a un destino de Amazon S3 y consultar después estos datos mediante distintos motores de consulta, incluido Amazon Athena.

Puede utilizar el mapeo de objetos para migrar sus datos desde cualquier origen de datos admitido a una secuencia de destino. Con el mapeo de datos, se determina cómo se estructuran los registros de datos de la secuencia. También debe definir una clave de partición para cada tabla, que Kinesis Data Streams utiliza para agrupar los datos en particiones. 

AWS DMS también establece varios valores de parámetros de Kinesis Data Streams. El costo de la creación de la tabla depende de la cantidad de datos y del número de tablas que hay que migrar.

**nota**  
La opción de **modo SSL** de la AWS DMS consola o la API no se aplica a algunos servicios NoSQL y de streaming de datos, como Kinesis y DynamoDB. **Son seguros de forma predeterminada, por lo que AWS DMS indica que la configuración del modo SSL es cero (Modo SSL=Ninguno).** No necesita proporcionar ninguna configuración adicional para que el punto de conexión utilice SSL. Por ejemplo, cuando se utiliza Kinesis como punto de conexión de destino, es seguro de forma predeterminada. Todas las llamadas de API a Kinesis utilizan SSL, por lo que no es necesaria una opción de SSL adicional en el AWS DMS punto final. Puede colocar y recuperar datos de forma segura a través de puntos de conexión SSL mediante el protocolo HTTPS, que AWS DMS utiliza de forma predeterminada al conectarse a un flujo de datos de Kinesis.

**Configuración del punto de conexión de Kinesis Data Streams**

Cuando utiliza los puntos de enlace de destino de Kinesis Data Streams, puede obtener los detalles de las transacciones y el control mediante `KinesisSettings` la opción de la API. AWS DMS 

Puede configurar ajustes de conexión de las siguientes formas:
+ En la AWS DMS consola, mediante la configuración de los puntos finales.
+ En la CLI, mediante la `kinesis-settings` opción del [CreateEndpoint](https://docs.aws.amazon.com/dms/latest/APIReference/API_CreateEndpoint.html)comando.

En la CLI, utilice los siguientes parámetros de solicitud de la opción de `kinesis-settings`:
**nota**  
La compatibilidad con la configuración del punto de conexión de `IncludeNullAndEmpty` está disponible en la versión de AWS DMS 3.4.1 y superiores. Sin embargo, la compatibilidad con las siguientes configuraciones de punto final para los destinos de Kinesis Data Streams está disponible en AWS DMS. 
+ `MessageFormat`: el formato del resultado de los registros creados en el punto de conexión. El formato del mensaje es `JSON` (predeterminado) o `JSON_UNFORMATTED` (una sola línea sin tabulación).
+ `IncludeControlDetails`: muestra información detallada de control para la definición de tablas, la definición de columnas y los cambios de tablas y columnas en la salida del mensaje de Kinesis. El valor predeterminado es `false`.
+ `IncludeNullAndEmpty`: incluya columnas NULL y vacías en el objetivo. El valor predeterminado es `false`.
+ `IncludePartitionValue`: muestra el valor de partición dentro de la salida del mensaje de Kinesis, a menos que el tipo de partición sea `schema-table-type`. El valor predeterminado es `false`.
+ `IncludeTableAlterOperations`: incluye todas las operaciones de lenguaje de definición de datos (DDL) que cambien la tabla en los datos de control, como `rename-table`, `drop-table`, `add-column`, `drop-column` y `rename-column`. El valor predeterminado es `false`.
+ `IncludeTransactionDetails`: proporciona información detallada sobre transacciones de la base de datos de origen. Esta información incluye una marca temporal de confirmación, una posición de registro y valores para `transaction_id`, `previous_transaction_id` y `transaction_record_id ` (el desplazamiento del registro dentro de una transacción). El valor predeterminado es `false`.
+ `PartitionIncludeSchemaTable`: agrega los nombres de los esquemas y de las tablas como prefijo a los valores de partición, cuando el tipo de partición es `primary-key-type`. Al hacerlo, aumenta la distribución de datos entre las particiones de Kinesis. Por ejemplo, supongamos que un esquema `SysBench` tiene miles de tablas y cada tabla tiene un rango limitado para una clave principal. En este caso, la misma clave principal se envía desde miles de tablas a la misma partición, lo que provoca la limitación controlada. El valor predeterminado es `false`.
+ `UseLargeIntegerValue`— Utilice un int de hasta 18 dígitos en lugar de convertir los int como dobles, disponible en la AWS DMS versión 3.5.4. El valor predeterminado es false.

En el siguiente ejemplo, se muestra la opción `kinesis-settings` en uso con un comando `create-endpoint` de ejemplo emitido mediante la AWS CLI.

```
aws dms \
  create-endpoint \
    --region <aws-region> \
    --endpoint-identifier <user-endpoint-identifier> \
    --endpoint-type target \
    --engine-name kinesis \
    --kinesis-settings ServiceAccessRoleArn=arn:aws:iam::<account-id>:role/<kinesis-role-name>,StreamArn=arn:aws:kinesis:<aws-region>:<account-id>:stream/<stream-name>,MessageFormat=json-unformatted,
IncludeControlDetails=true,IncludeTransactionDetails=true,IncludePartitionValue=true,PartitionIncludeSchemaTable=true,
IncludeTableAlterOperations=true
```

**Configuración de tareas de carga completa con varios subprocesos**

Para ayudar a aumentar la velocidad de la transferencia, AWS DMS admite una carga completa de subprocesos múltiples a una instancia de destino de Kinesis Data Streams. DMS admite este multriproceso con configuración de tareas que incluyen lo siguiente:
+ `MaxFullLoadSubTasks`: utilice esta opción para indicar el número máximo de tablas de origen que se pueden cargar en paralelo. DMS carga cada tabla en su tabla de destino de Kinesis correspondiente mediante una tarea secundaria dedicada. El valor predeterminado es 8, el valor máximo es 49.
+ `ParallelLoadThreads`— Utilice esta opción para especificar el número de subprocesos que se AWS DMS utilizan para cargar cada tabla en su tabla de destino de Kinesis. El valor máximo para un objetivo de Kinesis Data Streams es 32. Puede pedir que se incremente este límite máximo.
+ `ParallelLoadBufferSize`: utilice esta opción para especificar el número máximo de registros para almacenar en el búfer que los subprocesos de carga en paralelo utilizan para cargar datos en el destino de Kinesis. El valor predeterminado es 50. El valor máximo es 1000. Utilice este parámetro con `ParallelLoadThreads`. `ParallelLoadBufferSize` es válido solo cuando hay más de un subproceso.
+ `ParallelLoadQueuesPerThread`: utilice esta opción para especificar el número de colas que acceden a cada subproceso simultáneo para eliminar los registros de datos de las colas y generar una carga por lotes para el destino. El valor predeterminado de es 1. Sin embargo, para los destinos de Kinesis de varios tamaños de carga, el intervalo válido es de 5-512 colas por subproceso.

**Configuración de tareas de carga de CDC con varios subprocesos**

Puede mejorar el rendimiento de la captura de datos de cambios (CDC) para los puntos de conexión de destino de flujo de datos en tiempo real como Kinesis mediante la configuración de tareas para modificar el comportamiento de la llamada a la API `PutRecords`. Para ello, puede especificar el número de subprocesos simultáneos, las colas por subproceso y el número de registros que se van a almacenar en un búfer mediante la configuración de tareas `ParallelApply*`. Suponga, por ejemplo, que desea realizar una carga de CDC y aplicar 128 subprocesos en paralelo. También desea acceder a 64 colas por subproceso, con 50 registros almacenados por búfer. 

Para promover el desempeño de los CDC, AWS DMS admite las siguientes configuraciones de tareas:
+ `ParallelApplyThreads`— Especifica el número de subprocesos simultáneos que se AWS DMS utilizan durante una carga de CDC para enviar registros de datos a un punto final de Kinesis de destino. El valor predeterminado es cero (0) y el valor máximo es 32.
+ `ParallelApplyBufferSize`: especifica el número máximo de registros que se almacenan en cada cola del búfer para los subprocesos simultáneos que insertan datos en un punto de conexión de destino de Kinesis durante una carga de CDC. El valor predeterminado es 100 y el máximo es 1000. Utilice esta opción cuando `ParallelApplyThreads` especifique más de un subproceso. 
+ `ParallelApplyQueuesPerThread`: especifica el número de colas a las que accede cada subproceso para sacar registros de datos de las colas y generar una carga por lotes para un punto de conexión de Kinesis durante el proceso de CDC. El valor predeterminado es 1 y el máximo es 512.

Cuando se utiliza la configuración de tareas `ParallelApply*`, el valor predeterminado de `partition-key-type` es el valor de `primary-key` de la tabla, no el valor de `schema-name.table-name`.

## Uso de una imagen anterior para consultar los valores originales de las filas de CDC de un flujo de datos de Kinesis como destino
<a name="CHAP_Target.Kinesis.BeforeImage"></a>

Al escribir actualizaciones de CDC en un destino de flujo de datos como Kinesis, puede ver los valores originales de una fila de base de datos de origen antes de cambiar mediante una actualización. Para que esto sea posible, AWS DMS rellena una *imagen anterior* de los eventos de actualización en función de los datos proporcionados por el motor de base de datos de origen. 

Los diferentes motores de base de datos de origen proporcionan diferentes cantidades de información para una imagen anterior: 
+ Oracle proporciona actualizaciones a las columnas solo si cambian. 
+ PostgreSQL proporciona datos solo para las columnas que forman parte de la clave principal (cambiadas o no). Para proporcionar datos para todas las columnas (cambiadas o no), debe establecer `REPLICA_IDENTITY` en `FULL` en lugar de `DEFAULT`. Tenga en cuenta que debe elegir cuidadosamente la configuración de `REPLICA_IDENTITY` para cada tabla. Si establece `REPLICA_IDENTITY` en `FULL`, todos los valores de las columnas se escriben en el registro antes de la escritura (WAL) de forma continua. Esto puede provocar problemas de rendimiento o de recursos en las tablas que se actualizan con frecuencia.
+ MySQL generalmente proporciona datos para todas las columnas excepto para los tipos de datos BLOB y CLOB (cambiadas o no).

Para habilitar imágenes anteriores para agregar valores originales de la base de datos de origen a la salida AWS DMS , utilice la configuración de tarea `BeforeImageSettings` o el parámetro `add-before-image-columns`. Este parámetro aplica una regla de transformación de columna. 

`BeforeImageSettings` agrega un nuevo atributo JSON a cada operación de actualización con valores recopilados desde el sistema de base de datos de origen, como se muestra a continuación.

```
"BeforeImageSettings": {
    "EnableBeforeImage": boolean,
    "FieldName": string,  
    "ColumnFilter": pk-only (default) / non-lob / all (but only one)
}
```

**nota**  
Solo se aplica `BeforeImageSettings` a AWS DMS las tareas que contienen un componente de los CDC, como la carga completa más las tareas de los CDC (que migran los datos existentes y reproducen los cambios en curso), o a las tareas exclusivas de los CDC (que solo replican los cambios en los datos). No se aplica `BeforeImageSettings` a tareas que son solo de carga completa.

Para las opciones de `BeforeImageSettings`, se aplica lo siguiente:
+ Establezca la opción `EnableBeforeImage` para habilitar `true` antes de crear imágenes. El valor predeterminado es `false`. 
+ Utilice la opción `FieldName` para asignar un nombre al nuevo atributo JSON. Cuando `EnableBeforeImage` es `true`, `FieldName` es necesario y no puede estar vacío.
+ La opción `ColumnFilter` especifica una columna para agregar mediante el uso de las imágenes anteriores. Para agregar solo columnas que forman parte de las claves principales de la tabla, utilice el valor predeterminado, `pk-only`. Para agregar cualquier columna que tenga un valor de imagen anterior, utilice `all`. Tenga en cuenta que la imagen anterior no contiene columnas con tipos de datos de LOB, como CLOB o BLOB.

  ```
  "BeforeImageSettings": {
      "EnableBeforeImage": true,
      "FieldName": "before-image",
      "ColumnFilter": "pk-only"
    }
  ```

**nota**  
Los objetivos de Amazon S3 no admiten `BeforeImageSettings`. Para los destinos de S3, utilice solo la regla de transformación `add-before-image-columns` que debe realizarse antes de crear imágenes durante el CDC.

### Uso de una regla de transformación de imagen anterior
<a name="CHAP_Target.Kinesis.BeforeImage.Transform-Rule"></a>

Como alternativa a la configuración de tareas, puede utilizar el parámetro `add-before-image-columns`, que aplica una regla de transformación de columnas. Con este parámetro, puede habilitar imágenes anteriores durante CDC en destinos de flujo de datos como Kinesis. 

Al utilizar `add-before-image-columns` en una regla de transformación, puede aplicar un control más detallado de los resultados de la imagen anterior. Las reglas de transformación permiten utilizar un localizador de objetos que le da control sobre las tablas seleccionadas para la regla. Además, puede encadenar reglas de transformación, lo que permite aplicar diferentes reglas a diferentes tablas. A continuación, puede manipular las columnas producidas utilizando otras reglas. 

**nota**  
No utilice el parámetro `add-before-image-columns` junto con la configuración de tarea `BeforeImageSettings` dentro de la misma tarea. En su lugar, utilice el parámetro o la configuración, pero no ambos, para una sola tarea.

Un tipo de regla `transformation` con el parámetro `add-before-image-columns` de una columna debe proporcionar una sección `before-image-def`. A continuación se muestra un ejemplo.

```
    {
      "rule-type": "transformation",
      …
      "rule-target": "column",
      "rule-action": "add-before-image-columns",
      "before-image-def":{
        "column-filter": one-of  (pk-only / non-lob / all),
        "column-prefix": string,
        "column-suffix": string,
      }
    }
```

El valor de `column-prefix` se antepone a un nombre de columna y el valor predeterminado de `column-prefix` es `BI_`. El valor de `column-suffix` se añade al nombre de la columna y el valor predeterminado está vacío. No configure ambas cadenas `column-prefix` y `column-suffix` como cadenas vacías.

Elija un valor para `column-filter`. Para agregar solo columnas que forman parte de las claves principales de la tabla, elija `pk-only`. Elija `non-lob` para agregar solo columnas que no sean de tipo LOB. O elija `all` para agregar cualquier columna que tenga un valor de imagen anterior.

### Ejemplo de una regla de transformación de imagen anterior
<a name="CHAP_Target.Kinesis.BeforeImage.Example"></a>

La regla de transformación del siguiente ejemplo agrega una nueva columna llamada `BI_emp_no` en el destino. Entonces, una instrucción como `UPDATE employees SET emp_no = 3 WHERE emp_no = 1;` rellena el campo `BI_emp_no` con 1. Cuando escribe actualizaciones de CDC en destinos de Amazon S3, la columna `BI_emp_no` permite indicar qué fila original se actualizó.

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "%",
        "table-name": "%"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "%",
        "table-name": "employees"
      },
      "rule-action": "add-before-image-columns",
      "before-image-def": {
        "column-prefix": "BI_",
        "column-suffix": "",
        "column-filter": "pk-only"
      }
    }
  ]
}
```

Para obtener información sobre el uso de la acción de regla `add-before-image-columns`, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Requisitos previos para utilizar una transmisión de datos de Kinesis como destino para AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites"></a>

### Función de IAM para utilizar una transmisión de datos de Kinesis como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites.IAM"></a>

Antes de configurar una transmisión de datos de Kinesis como destino AWS DMS, asegúrese de crear una función de IAM. Esta función debe permitir asumir y conceder acceso AWS DMS a las transmisiones de datos de Kinesis a las que se están migrando. El conjunto mínimo de permisos de acceso se muestra en la siguiente política de IAM.

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

****  

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

------

El rol que utilice para la migración a un flujo de datos de Kinesis debe tener los siguientes permisos.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kinesis:DescribeStream",
        "kinesis:PutRecord",
        "kinesis:PutRecords"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### Acceder a una transmisión de datos de Kinesis como destino para AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites.Access"></a>

En AWS DMS la versión 3.4.7 y versiones posteriores, para conectarse a un endpoint de Kinesis, debe realizar una de las siguientes acciones:
+ Configure DMS para que utilice puntos de conexión de VPC. Para obtener más información sobre la configuración de DMS para utilizar puntos de conexión de VPC, consulte [Configuración de puntos finales de VPC para AWS DMS](CHAP_VPC_Endpoints.md).
+ Configure DMS para que utilice rutas públicas, es decir, haga pública su instancia de replicación. Para obtener información sobre las instancias de replicación públicas, consulte [Instancias de replicación pública y privada](CHAP_ReplicationInstance.PublicPrivate.md).

## Limitaciones al utilizar Kinesis Data Streams como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Limitations"></a>

Al utilizar Kinesis Data Streams como destino se aplican las siguientes restricciones:
+ AWS DMS publica cada actualización en un único registro de la base de datos de origen como un registro de datos en un flujo de datos de Kinesis determinado, independientemente de las transacciones. Sin embargo, puede incluir detalles de transacción para cada registro de datos utilizando los parámetros pertinentes de la API `KinesisSettings`.
+ No se admite el modo LOB completo.
+ El tamaño de LOB máximo admitido es 1 MB.
+ Kinesis Data Streams no admite la desduplicación. Las aplicaciones que consumen datos de una secuencia necesitan ocuparse de los registros duplicados. Para obtener más información, consulte [Gestión de registros duplicados](https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-duplicates.html) en la *Guía para desarrolladores de Amazon Kinesis Data Streams*.
+ AWS DMS admite las siguientes cuatro formas de claves de partición:
  + `SchemaName.TableName` una combinación del nombre de esquema y de tabla.
  + `${AttributeName}`: el valor de uno de los campos del archivo JSON o la clave principal de la tabla de la base de datos de origen.
  + `transaction-id`: El identificador de transacción de los CDC. Todos los registros de la misma transacción van a la misma partición.
  + `constant`: un valor literal fijo para cada registro, independientemente de la tabla o los datos. Todos los registros se envían al mismo valor de clave de partición «constante», lo que proporciona un orden global estricto en todas las tablas.

  ```
  {
      "rule-type": "object-mapping",
      "rule-id": "2",
      "rule-name": "PartitionKeyTypeExample",
      "rule-action": "map-record-to-document",
      "object-locator": {
          "schema-name": "onprem",
          "table-name": "it_system"
      },
      "mapping-parameters": {
          "partition-key-type": "transaction-id | constant | attribute-name | schema-table"
      }
  }
  ```
+ Para obtener información sobre el cifrado de los datos en reposo en Kinesis Data Streams, consulte [Protección de datos en Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/server-side-encryption.html.html) en la *Guía para desarrolladores de AWS Key Management Service *. 
+ La configuración del `IncludeTransactionDetails` punto final solo se admite cuando el punto final de origen es Oracle, SQL Server, PostgreSQL o MySQL. En el caso de otros tipos de puntos finales de origen, no se incluirán los detalles de la transacción.
+ `BatchApply` no es compatible con un punto de conexión de Kinesis. Es posible que el uso de la aplicación por lotes (por ejemplo, la configuración de tareas de metadatos de destino `BatchApplyEnabled`) para un destino de Kinesis provoque la pérdida de datos y el fallo de la tarea. No active `BatchApply` cuando utilice Kinesis como punto de conexión de destino.
+ Los destinos de Kinesis solo se admiten para una transmisión de datos de Kinesis en la misma AWS cuenta y en la Región de AWS misma instancia de replicación.
+ Al migrar desde una fuente de MySQL, los BeforeImage datos no incluyen los tipos de datos CLOB y BLOB. Para obtener más información, consulte [Uso de una imagen anterior para consultar los valores originales de las filas de CDC de un flujo de datos de Kinesis como destino](#CHAP_Target.Kinesis.BeforeImage).
+ AWS DMS no admite la migración de valores de tipos de `BigInt` datos con más de 16 dígitos. Para evitar esta limitación, puede usar la siguiente regla de transformación para convertir la columna `BigInt` en una cadena. Para obtener más información sobre las reglas de transformación, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

  ```
  {
      "rule-type": "transformation",
      "rule-id": "id",
      "rule-name": "name",
      "rule-target": "column",
      "object-locator": {
          "schema-name": "valid object-mapping rule action",
          "table-name": "",
          "column-name": ""
      },
      "rule-action": "change-data-type",
      "data-type": {
          "type": "string",
          "length": 20
      }
  }
  ```
+ Cuando varias operaciones de DML dentro de una sola transacción modifican una columna de objetos grandes (LOB) de la base de datos de origen, la base de datos de destino solo conserva el valor final de LOB de la última operación de esa transacción. Los valores de LOB intermedios establecidos por las operaciones anteriores de la misma transacción se sobrescriben, lo que puede provocar la pérdida de datos o la aparición de incoherencias. Este comportamiento se debe a la forma en que se procesan los datos de LOB durante la replicación.
+ AWS DMS no admite datos de origen que contengan `'\0'` caracteres incrustados cuando se utiliza Kinesis como punto final de destino. Los datos que contengan `'\0'` caracteres incrustados se truncarán en el primer carácter. `'\0'`

## Uso de la asignación de objetos para migrar datos a un flujo de datos de Kinesis
<a name="CHAP_Target.Kinesis.ObjectMapping"></a>

AWS DMS utiliza reglas de mapeo de tablas para mapear los datos del flujo de datos de Kinesis de origen al de destino. Para asignar datos a una secuencia de destino, se utiliza un tipo de regla de mapeo de tablas denominada "object mapping". Puede utilizar la asignación de objetos para definir cómo los registros de datos del origen asignan a los registros de datos publicados en el flujo de datos de Kinesis. 

Kinesis Data Streams no tiene una estructura predeterminada distinta de una clave de partición. En una regla de asignación de objetos, los valores posibles de `partition-key-type` para los registros de datos son `schema-table`, `transaction-id`, `primary-key`, `constant` y `attribute-name`.

Para crear una regla de mapeo de objetos, especifique `rule-type` como `object-mapping`. Esta regla indica el tipo de mapeo de objetos que desea utilizar. 

La estructura de la regla es la siguiente.

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```

AWS DMS actualmente admite `map-record-to-record` y es `map-record-to-document` el único valor válido para el parámetro. `rule-action` Esta configuración afecta a los valores que no están excluidos como parte de la lista de atributos `exclude-columns`. Los `map-record-to-document` valores `map-record-to-record` y especifican cómo se AWS DMS gestionan estos registros de forma predeterminada. Estos valores no afectan a los mapeos de atributos en modo alguno. 

Utilice `map-record-to-record` al migrar desde una base de datos relacional a un flujo de datos de Kinesis. Este tipo de regla utiliza el valor `taskResourceId.schemaName.tableName` de la base de datos relacional como la clave de partición en el flujo de datos de Kinesis y crea un atributo para cada columna de la base de datos de origen. 

Cuando utilice `map-record-to-record`, tenga en cuenta lo siguiente:
+ Esta configuración solo afecta a las columnas excluidas de la lista `exclude-columns`.
+ Para cada columna de este tipo, AWS DMS crea un atributo correspondiente en el tema de destino.
+ AWS DMS crea el atributo correspondiente independientemente de si la columna de origen se utiliza en una asignación de atributos. 

Se utiliza `map-record-to-document` para colocar las columnas de origen en un único documento plano en la secuencia de destino correspondiente utilizando el nombre de atributo “\$1doc”. AWS DMS coloca los datos en un único mapa plano del origen denominado “`_doc`”. Esta colocación se aplica a cada columna de la tabla de origen que no se enumera en la lista de atributos `exclude-columns`.

Una forma de entender `map-record-to-record` es verlo en acción. En este ejemplo, imagine que empieza con una fila de una tabla de base de datos relacional con la estructura y los datos siguientes.


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

Para migrar esta información desde un esquema denominado `Test` a un flujo de datos de Kinesis, debe crear reglas para asignar los datos a la secuencia de destino. La siguiente regla ilustra la operación de asignación. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToKinesis",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

A continuación, se ilustra el formato de registro resultante en el flujo de datos de Kinesis: 
+ StreamName: XXX
+ PartitionKey: Test.Customers //schmaname.tableName
+ Datos: //El siguiente mensaje JSON

  ```
    {
       "FirstName": "Randy",
       "LastName": "Marsh",
       "StoreId":  "5",
       "HomeAddress": "221B Baker Street",
       "HomePhone": "1234567890",
       "WorkAddress": "31 Spooner Street, Quahog",
       "WorkPhone": "9876543210",
       "DateOfBirth": "02/29/1988"
    }
  ```

Sin embargo, supongamos que utiliza las mismas reglas pero cambia el parámetro `rule-action` a `map-record-to-document` y excluye determinadas columnas. La siguiente regla ilustra la operación de asignación.

```
{
	"rules": [
	   {
			"rule-type": "selection",
			"rule-id": "1",
			"rule-name": "1",
			"rule-action": "include",
			"object-locator": {
				"schema-name": "Test",
				"table-name": "%"
			}
		},
		{
			"rule-type": "object-mapping",
			"rule-id": "2",
			"rule-name": "DefaultMapToKinesis",
			"rule-action": "map-record-to-document",
			"object-locator": {
				"schema-name": "Test",
				"table-name": "Customers"
			},
			"mapping-parameters": {
				"exclude-columns": [
					"homeaddress",
					"homephone",
					"workaddress",
					"workphone"
				]
			}
		}
	]
}
```

En este caso, las columnas que no aparecen en el parámetro `exclude-columns`, `FirstName`, `LastName`, `StoreId` y `DateOfBirth`, se asignan a `_doc`. A continuación, se ilustra el formato de registro resultante. 

```
       {
            "data":{
                "_doc":{
                    "FirstName": "Randy",
                    "LastName": "Marsh",
                    "StoreId":  "5",
                    "DateOfBirth": "02/29/1988"
                }
            }
        }
```

### Reestructuración de datos con el mapeo de atributos
<a name="CHAP_Target.Kinesis.AttributeMapping"></a>

Puede reestructurar los datos mientras los migra a un flujo de datos de Kinesis mediante un mapa de atributos. Por ejemplo, es posible que desee combinar varios campos del origen en un único campo en el destino. El mapa de atributos siguiente ilustra cómo reestructurar los datos.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToKinesis",
            "rule-action": "map-record-to-record",
            "target-table-name": "CustomerData",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            },
            "mapping-parameters": {
                "partition-key-type": "attribute-name",
                "partition-key-name": "CustomerName",
                "exclude-columns": [
                    "firstname",
                    "lastname",
                    "homeaddress",
                    "homephone",
                    "workaddress",
                    "workphone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${lastname}, ${firstname}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "json",
                        "value": {
                            "Home": {
                                "Address": "${homeaddress}",
                                "Phone": "${homephone}"
                            },
                            "Work": {
                                "Address": "${workaddress}",
                                "Phone": "${workphone}"
                            }
                        }
                    }
                ]
            }
        }
    ]
}
```

Para establecer un valor constante para, especifique`partition-key`, esto establece el valor de la partición en. `"partition-key-type: "constant"` `constant` Tal vez desee hacer esto, por ejemplo, para obligar a que todos los datos se almacenen en una única partición. El siguiente mapeo ilustra este enfoque. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToKinesis",
            "rule-action": "map-record-to-document",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customer"
            },
            "mapping-parameters": {
                "partition-key-type": "constant",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"

                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": {
                            "Home": {
                                "Address": "${HomeAddress}",
                                "Phone": "${HomePhone}"
                            },
                            "Work": {
                                "Address": "${WorkAddress}",
                                "Phone": "${WorkPhone}"
                            }
                        }
                    },
                    {
                        "target-attribute-name": "DateOfBirth",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${DateOfBirth}"
                    }
                ]
            }
        }
    ]
}
```

**nota**  
El valor `partition-key` de un registro de control para una tabla específica es `TaskId.SchemaName.TableName`. El valor `partition-key` de un registro de control para una tabla específica es el `TaskId` de ese registro. La especificación de un valor `partition-key` en el mapeo de objetos no tiene ningún efecto en el elemento `partition-key` de un registro de control.  
 Si `partition-key-type` se establece `attribute-name` en una regla de mapeo de tablas, debe especificarse`partition-key-name`, que debe hacer referencia a una columna de la tabla de origen o a una columna personalizada definida en la asignación. Además, `attribute-mappings` debe proporcionarse para definir cómo se asignan las columnas de origen a la transmisión de Kinesis de destino.

### Formato de mensaje para Kinesis Data Streams
<a name="CHAP_Target.Kinesis.Messageformat"></a>

La salida JSON es simplemente una lista de pares de clave-valor. Un formato de mensaje JSON\$1UNFORMATTED es una cadena JSON de una sola línea con un delimitador de nueva línea.

AWS DMS proporciona los siguientes campos reservados para facilitar el consumo de los datos de Kinesis Data Streams: 

**RecordType**  
El tipo de registro puede ser de datos o de control. Los *registros de datos *representan las filas reales en el origen. Los *registros de control* son para eventos importantes de la secuencia como, por ejemplo, el reinicio de una tarea.

**Operación**  
Para los registros de datos, la operación puede ser `load`, `insert`, `update` o `delete`.  
Para los registros de control, la operación puede ser `create-table`, `rename-table`, `drop-table`, `change-columns`, `add-column`, `drop-column`, `rename-column` o `column-type-change`.

**SchemaName**  
El esquema de origen del registro. Este campo puede estar vacío para un registro de control.

**TableName**  
La tabla de origen del registro. Este campo puede estar vacío para un registro de control.

**Timestamp**  
La marca temporal que indica cuándo se creó el mensaje JSON. El campo está formateado con el formato ISO 8601.

# Uso de Apache Kafka como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Kafka"></a>

Puede usarlo AWS DMS para migrar datos a un clúster de Apache Kafka. Apache Kafka es una plataforma de streaming distribuida. Puede utilizar Apache Kafka para ingerir y procesar datos de streaming en tiempo real.

AWS también ofrece Amazon Managed Streaming para que Apache Kafka (Amazon MSK) lo utilice como objetivo. AWS DMS Amazon MSK es un servicio de streaming de Apache Kafka completamente administrado que simplifica la implementación y gestión de instancias de Apache Kafka. Funciona con versiones de código abierto de Apache Kafka y puede acceder a las instancias de Amazon MSK como AWS DMS destinos exactamente igual que a cualquier instancia de Apache Kafka. Para obtener más información, consulte [¿Qué es Amazon MSK?](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) en la *Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.*.

Un clúster de Kafka almacena flujos de registros en categorías denominadas temas que se dividen en particiones. Las *particiones* son secuencias de registros de datos (mensajes) identificados de forma única en un tema. Las particiones se pueden distribuir entre varios agentes de un clúster para permitir el procesamiento paralelo de los registros de un tema. Para obtener más información sobre temas y particiones y su distribución en Apache Kafka, consulte [Temas y registros](https://kafka.apache.org/documentation/#intro_topics) y [Distribución](https://kafka.apache.org/documentation/#intro_distribution).

El clúster de Kafka puede ser una instancia de Amazon MSK, un clúster que se ejecute en una instancia de Amazon EC2 o un clúster en las instalaciones. Una instancia de Amazon MSK o un clúster en una instancia de Amazon EC2 se pueden encontrar en la misma VPC o en una diferente. Si el clúster está en las instalaciones, puede usar su propio servidor de nombres en las instalaciones para la instancia de replicación a fin de resolver el nombre de host del clúster. Para obtener información acerca de cómo configurar un servidor de nombres para la instancia de replicación, consulte [Uso de su propio servidor de nombres en las instalaciones](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver). Para obtener más información sobre cómo configurar una red, consulte [Configuración de una red para una instancia de replicación](CHAP_ReplicationInstance.VPC.md).

Cuando utilice un clúster de Amazon MSK, asegúrese de que su grupo de seguridad permita el acceso desde la instancia de replicación. Para obtener información sobre cómo cambiar el grupo de seguridad de un clúster de Amazon MSK, consulte [Cambio del grupo de seguridad de un clúster de Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/change-security-group.html).

AWS Database Migration Service publica los registros de un tema de Kafka mediante JSON. Durante la conversión, AWS DMS serializa cada registro de la base de datos de origen en un par de atributo-valor en formato JSON.

Para migrar los datos desde cualquier origen de datos admitido a un clúster de Kafka de destino, se usa la asignación de objetos. Con la asignación de objetos, se determina cómo se estructuran los registros de datos en el tema de destino. También debe definir una clave de partición para cada tabla, que Apache Kafka utiliza para agrupar los datos en particiones. 

Actualmente, AWS DMS admite un solo tema por tarea. En el caso de una sola tarea con varias tablas, todos los mensajes van a un solo tema. Cada mensaje incluye una sección de metadatos que identifica el esquema y la tabla de destino. AWS DMS las versiones 3.4.6 y superiores admiten la replicación multitema mediante el mapeo de objetos. Para obtener más información, consulte [Replicación multitemática mediante asignación de objetos](#CHAP_Target.Kafka.MultiTopic).

**Configuración de punto de enlace de Apache Kafka**

Puede especificar los detalles de la conexión mediante la configuración del punto final en la AWS DMS consola o mediante la `--kafka-settings` opción en la CLI. A continuación se indican los requisitos para cada ajuste:
+ `Broker`: especifique las ubicaciones de uno o más agentes en el clúster de Kafka en forma de una lista separada por comas de cada `broker-hostname:port`. Un ejemplo es `"ec2-12-345-678-901.compute-1.amazonaws.com:2345,ec2-10-987-654-321.compute-1.amazonaws.com:9876"`. Esta configuración puede especificar las ubicaciones de algunos o todos los agentes del clúster. Todos los agentes de clúster se comunican para gestionar la partición de los registros de datos migrados al tema.
+ `Topic`: (opcional) especifique el nombre del tema con una longitud máxima de 255 letras y símbolos. Puede usar el punto (.), el guion bajo (\$1) y el signo menos (-). Los nombres de temas con un punto (.) o guion bajo (\$1) pueden colisionar en las estructuras de datos internas. Puede usar uno de estos símbolos, pero no ambos, en el nombre del tema. Si no especifica un nombre para el tema, `"kafka-default-topic"` lo AWS DMS utiliza como tema de migración.
**nota**  
Para AWS DMS crear un tema de migración que especifique o el tema predeterminado, `auto.create.topics.enable = true` configúrelo como parte de la configuración del clúster de Kafka. Para obtener más información, consulte [Limitaciones a la hora de utilizar Apache Kafka como destino para AWS Database Migration Service](#CHAP_Target.Kafka.Limitations)
+ `MessageFormat`: el formato del resultado de los registros creados en el punto de conexión. El formato del mensaje es `JSON` (predeterminado) o `JSON_UNFORMATTED` (una sola línea sin tabulación).
+ `MessageMaxBytes`: el tamaño máximo en bytes de los registros creados en el punto de conexión. El valor predeterminado es 1 000 000.
**nota**  
Solo puede usar la AWS CLI/SDK para cambiar a un valor que no sea `MessageMaxBytes` el predeterminado. Por ejemplo, para modificar el punto de conexión de Kafka existente y cambiar `MessageMaxBytes`, utilice el siguiente comando.  

  ```
  aws dms modify-endpoint --endpoint-arn your-endpoint 
  --kafka-settings Broker="broker1-server:broker1-port,broker2-server:broker2-port,...",
  Topic=topic-name,MessageMaxBytes=integer-of-max-message-size-in-bytes
  ```
+ `IncludeTransactionDetails`: proporciona información detallada sobre transacciones de la base de datos de origen. Esta información incluye una marca temporal de confirmación, una posición de registro y valores para `transaction_id`, `previous_transaction_id` y `transaction_record_id` (el desplazamiento del registro dentro de una transacción). El valor predeterminado es `false`.
+ `IncludePartitionValue`: muestra el valor de partición dentro de la salida del mensaje de Kafka, a menos que el tipo de partición sea `schema-table-type`. El valor predeterminado es `false`.
+ `PartitionIncludeSchemaTable`: agrega los nombres de los esquemas y de las tablas como prefijo a los valores de partición, cuando el tipo de partición es `primary-key-type`. Al hacerlo, aumenta la distribución de datos entre las particiones de Kafka. Por ejemplo, supongamos que un esquema `SysBench` tiene miles de tablas y cada tabla tiene un rango limitado para una clave principal. En este caso, la misma clave principal se envía desde miles de tablas a la misma partición, lo que provoca limitación. El valor predeterminado es `false`.
+ `IncludeTableAlterOperations`: incluye todas las operaciones de lenguaje de definición de datos (DDL) que cambien la tabla en los datos de control, como `rename-table`, `drop-table`, `add-column`, `drop-column` y `rename-column`. El valor predeterminado es `false`. 
+ `IncludeControlDetails`: muestra información detallada de control para la definición de tablas, la definición de columnas y los cambios de tablas y columnas en la salida del mensaje de Kafka. El valor predeterminado es `false`.
+ `IncludeNullAndEmpty`: incluya columnas NULL y vacías en el objetivo. El valor predeterminado es `false`.
+ `SecurityProtocol`: establece una conexión segura a un punto de conexión de destino de Kafka utilizando la seguridad de la capa de transporte (TLS). Las opciones incluyen `ssl-authentication`, `ssl-encryption` y `sasl-ssl`. El uso de `sasl-ssl` requiere `SaslUsername` y `SaslPassword`.
+ `SslEndpointIdentificationAlgorithm`: establece la verificación del nombre de host para el certificado. Esta configuración se admite en AWS DMS versión 3.5.1 y posteriores. Estas son las opciones disponibles: 
  + `NONE`: deshabilita la verificación del nombre de host del agente en la conexión del cliente.
  + `HTTPS`: habilita la verificación del nombre de host del agente en la conexión del cliente.
+ `useLargeIntegerValue`— Utilice un int de hasta 18 dígitos en lugar de convertir los int como dobles, disponible a partir AWS DMS de la versión 3.5.4. El valor predeterminado es false.

Puede usar la configuración para ayudar a aumentar la velocidad de la transferencia. Para ello, AWS DMS admite la carga completa con varios subprocesos en un clúster de destino de Apache Kafka. AWS DMS admite esta operación con varios subprocesos con las configuraciones de tareas que incluyen lo siguiente:
+ `MaxFullLoadSubTasks`— Utilice esta opción para indicar el número máximo de tablas de origen que se van a cargar en paralelo. AWS DMS carga cada tabla en su tabla de destino de Kafka correspondiente mediante una subtarea dedicada. El valor predeterminado es 8, el valor máximo es 49.
+ `ParallelLoadThreads`— Utilice esta opción para especificar el número de subprocesos que se AWS DMS utilizan para cargar cada tabla en su tabla de destino de Kafka. El valor máximo para un destino de Apache Kafka es 32. Puede pedir que se incremente este límite máximo.
+ `ParallelLoadBufferSize`: utilice esta opción para especificar el número máximo de registros para almacenar en el búfer que los subprocesos de carga en paralelo utilizan para cargar datos en el destino de Kafka. El valor predeterminado es 50. El valor máximo es 1000. Utilice este parámetro con `ParallelLoadThreads`. `ParallelLoadBufferSize` es válido solo cuando hay más de un subproceso.
+ `ParallelLoadQueuesPerThread`: utilice esta opción para especificar el número de colas que acceden a cada subproceso simultáneo para eliminar los registros de datos de las colas y generar una carga por lotes para el destino. El valor predeterminado de es 1. El máximo es 512.

Puede mejorar el rendimiento de la captura de datos de cambios (CDC) para los puntos de conexión de Kafka ajustando la configuración de las tareas para los subprocesos paralelos y las operaciones masivas. Para ello, puede especificar el número de subprocesos simultáneos, las colas por subproceso y el número de registros que se van a almacenar en un búfer mediante la configuración de tareas `ParallelApply*`. Suponga, por ejemplo, que desea realizar una carga de CDC y aplicar 128 subprocesos en paralelo. También desea acceder a 64 colas por subproceso, con 50 registros almacenados por búfer. 

Para promover el desempeño de los CDC, AWS DMS admite las siguientes configuraciones de tareas:
+ `ParallelApplyThreads`— Especifica la cantidad de subprocesos simultáneos que se AWS DMS utilizan durante una carga de CDC para enviar los registros de datos a un punto final de Kafka. El valor predeterminado es cero (0) y el valor máximo es 32.
+ `ParallelApplyBufferSize`: especifica el número máximo de registros que se almacenan en cada cola del búfer para los subprocesos simultáneos que insertan datos en un punto de conexión de destino de Kafka durante una carga de CDC. El valor predeterminado es 100 y el máximo es 1000. Utilice esta opción cuando `ParallelApplyThreads` especifique más de un subproceso. 
+ `ParallelApplyQueuesPerThread`: especifica el número de colas a las que accede cada subproceso para sacar registros de datos de las colas y generar una carga por lotes para un punto de conexión de Kafka durante el proceso de CDC. El valor predeterminado de es 1. El máximo es 512.

Cuando se utiliza la configuración de tareas `ParallelApply*`, el valor predeterminado de `partition-key-type` es el valor de `primary-key` de la tabla, no el valor de `schema-name.table-name`.

## Conexión a Kafka mediante seguridad de la capa de transporte (TLS)
<a name="CHAP_Target.Kafka.TLS"></a>

Un clúster de Kafka acepta conexiones seguras mediante seguridad de la capa de transporte (TLS). Con DMS, puede utilizar cualquiera de las siguientes tres opciones de protocolos de seguridad para proteger una conexión de punto de conexión de Kafka.

**Cifrado SSL (`server-encryption`)**  
Los clientes validan la identidad del servidor mediante el certificado del servidor. A continuación, se establece una conexión cifrada entre el servidor y el cliente.

**Autenticación SSL (`mutual-authentication`)**  
El servidor y el cliente validan la identidad entre sí mediante sus propios certificados. A continuación, se establece una conexión cifrada entre el servidor y el cliente.

**SASL-SSL (`mutual-authentication`)**  
El método de capa de seguridad y autenticación simple (SASL) reemplaza el certificado del cliente por un nombre de usuario y una contraseña para validar la identidad del cliente. En concreto, debe proporcionar un nombre de usuario y una contraseña que el servidor haya registrado para que el servidor pueda validar la identidad de un cliente. A continuación, se establece una conexión cifrada entre el servidor y el cliente.

**importante**  
Apache Kafka y Amazon MSK aceptan certificados resueltos. Se trata de una limitación conocida que deben abordar Kafka y Amazon MSK. Para obtener más información, consulte [Problemas de Apache Kafka, KAFKA-3700](https://issues.apache.org/jira/browse/KAFKA-3700).  
Si utiliza Amazon MSK, considere la posibilidad de utilizar listas de control de acceso (ACLs) como solución alternativa a esta limitación conocida. Para obtener más información sobre su uso ACLs, consulte la ACLs sección [Apache Kafka](https://docs.aws.amazon.com//msk/latest/developerguide/msk-acls.html) de la Guía para desarrolladores de *Amazon Managed Streaming for Apache Kafka*.  
Si utiliza un clúster de Kafka autoadministrado, consulte [Comentario del 21 de octubre de 2018](https://issues.apache.org/jira/browse/KAFKA-3700?focusedCommentId=16658376) para obtener información sobre la configuración del clúster.

### Uso del cifrado SSL con Amazon MSK o un clúster de Kafka autoadministrado
<a name="CHAP_Target.Kafka.TLS.SSLencryption"></a>

Puede utilizar el cifrado SSL para proteger una conexión de punto de conexión con Amazon MSK o con un clúster de Kafka autoadministrado. Cuando utiliza el método de autenticación de cifrado SSL, los clientes validan la identidad de un servidor mediante el certificado del servidor. A continuación, se establece una conexión cifrada entre el servidor y el cliente.

**Uso del cifrado SSL para conectarse a Amazon MSK**
+ Establezca la configuración del punto de conexión del protocolo de seguridad (`SecurityProtocol`) mediante la opción `ssl-encryption` al crear el punto de conexión de Kafka de destino. 

  En el siguiente ejemplo de JSON se establece el protocolo de seguridad como cifrado SSL.

```
"KafkaSettings": {
    "SecurityProtocol": "ssl-encryption", 
}
```

**Uso del cifrado SSL en un clúster de Kafka autoadministrado**

1. Si utiliza una entidad de certificación (CA) privada en el clúster de Kafka en las instalaciones, cargue el certificado de la entidad de certificación privado y obtenga un nombre de recurso de Amazon (ARN). 

1. Establezca la configuración del punto de conexión del protocolo de seguridad (`SecurityProtocol`) mediante la opción `ssl-encryption` al crear el punto de conexión de Kafka de destino. En el siguiente ejemplo de JSON se establece el protocolo de seguridad como `ssl-encryption`.

   ```
   "KafkaSettings": {
       "SecurityProtocol": "ssl-encryption", 
   }
   ```

1. Si utiliza una entidad de certificación privada, establezca `SslCaCertificateArn` en el ARN que obtuvo en el primer paso anterior.

### Uso de la autenticación SSL
<a name="CHAP_Target.Kafka.TLS.SSLauthentication"></a>

Puede utilizar la autenticación SSL para proteger una conexión de punto de conexión con Amazon MSK o con un clúster de Kafka autoadministrado.

Para habilitar la autenticación y el cifrado del cliente mediante la autenticación SSL para conectarse a Amazon MSK, haga lo siguiente:
+ Prepare una clave privada y un certificado público para Kafka.
+ Cargue certificados en el mánager de certificados de DMS.
+ Cree un punto final de destino de Kafka con el certificado correspondiente ARNs especificado en la configuración del punto final de Kafka.

**Preparación de una clave privada y un certificado público para Amazon MSK**

1. Cree una instancia EC2 y configure un cliente para que utilice la autenticación tal y como se describe en los pasos 1 a 9 de la sección [Autenticación de clientes](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) de la *Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka*.

   Tras completar estos pasos, dispondrá de un ARN de certificado (el ARN del certificado público guardado en ACM) y de una clave privada en un archivo `kafka.client.keystore.jks`.

1. Obtenga el certificado público y cópielo en el archivo `signed-certificate-from-acm.pem` mediante el siguiente comando:

   ```
   aws acm-pca get-certificate --certificate-authority-arn Private_CA_ARN --certificate-arn Certificate_ARN
   ```

   El comando devuelve información similar al siguiente ejemplo:

   ```
   {"Certificate": "123", "CertificateChain": "456"}
   ```

   A continuación, copie el equivalente de `"123"` al archivo `signed-certificate-from-acm.pem`.

1. Obtenga la clave privada importando la clave `msk-rsa` desde `kafka.client.keystore.jks to keystore.p12`, como se muestra en el siguiente ejemplo.

   ```
   keytool -importkeystore \
   -srckeystore kafka.client.keystore.jks \
   -destkeystore keystore.p12 \
   -deststoretype PKCS12 \
   -srcalias msk-rsa-client \
   -deststorepass test1234 \
   -destkeypass test1234
   ```

1. Utilice el siguiente comando para exportar `keystore.p12` a un formato `.pem`. 

   ```
   Openssl pkcs12 -in keystore.p12 -out encrypted-private-client-key.pem –nocerts
   ```

   Aparece el mensaje **Ingrese la frase de contraseña PEM** e identifica la clave que se aplica para cifrar el certificado.

1. Elimine los atributos de bolsa y los atributos de clave del archivo `.pem` para asegurarse de que la primera línea comience con la siguiente cadena.

   ```
                                   ---BEGIN ENCRYPTED PRIVATE KEY---
   ```

**Carga de un certificado público y una clave privada en el mánager de certificados de DMS y prueba de la conexión a Amazon MSK**

1. Cargue en el mánager de certificados de DMS mediante el siguiente comando.

   ```
   aws dms import-certificate --certificate-identifier signed-cert --certificate-pem file://path to signed cert
   aws dms import-certificate --certificate-identifier private-key —certificate-pem file://path to private key
   ```

1. Cree un punto de conexión de destino de Amazon MSK y pruebe la conexión para asegurarse de que la autenticación TLS funciona.

   ```
   aws dms create-endpoint --endpoint-identifier $endpoint-identifier --engine-name kafka --endpoint-type target --kafka-settings 
   '{"Broker": "b-0.kafka260.aaaaa1.a99.kafka.us-east-1.amazonaws.com:0000", "SecurityProtocol":"ssl-authentication", 
   "SslClientCertificateArn": "arn:aws:dms:us-east-1:012346789012:cert:",
   "SslClientKeyArn": "arn:aws:dms:us-east-1:0123456789012:cert:","SslClientKeyPassword":"test1234"}'
   aws dms test-connection -replication-instance-arn=$rep_inst_arn —endpoint-arn=$kafka_tar_arn_msk
   ```

**importante**  
Puede utilizar la autenticación SSL para proteger una conexión a un clúster de Kafka autoadministrado. En algunos casos, es posible que use una entidad de certificación (CA) privada en el clúster de Kafka en las instalaciones. Si es así, cargue la cadena de la entidad de certificación, el certificado público y la clave privada en el mánager de certificados de DMS. A continuación, utilice el nombre de recurso de Amazon (ARN) correspondiente en la configuración del punto de conexión cuando cree el punto de conexión de destino Kafka en las instalaciones.

**Preparación de una clave privada y un certificado firmado para un clúster de Kafka autoadministrado**

1. Genere un par de claves como se muestra en el siguiente ejemplo.

   ```
   keytool -genkey -keystore kafka.server.keystore.jks -validity 300 -storepass your-keystore-password 
   -keypass your-key-passphrase -dname "CN=your-cn-name" 
   -alias alias-of-key-pair -storetype pkcs12 -keyalg RSA
   ```

1. Genere una solicitud de firma de certificado (CSR). 

   ```
   keytool -keystore kafka.server.keystore.jks -certreq -file server-cert-sign-request-rsa -alias on-premise-rsa -storepass your-key-store-password 
   -keypass your-key-password
   ```

1. Utilice la entidad de certificación del almacén de confianza del clúster para firmar la CSR. Si no tiene una entidad de certificación, puede crear su propia entidad de certificación privada.

   ```
   openssl req -new -x509 -keyout ca-key -out ca-cert -days validate-days                            
   ```

1. Importe `ca-cert` en el almacén de confianza y al almacén de claves del servidor. Si no dispone de un almacén de confianza, utilice el siguiente comando para crear el almacén de confianza e importar `ca-cert ` en él. 

   ```
   keytool -keystore kafka.server.truststore.jks -alias CARoot -import -file ca-cert
   keytool -keystore kafka.server.keystore.jks -alias CARoot -import -file ca-cert
   ```

1. Firme el certificado.

   ```
   openssl x509 -req -CA ca-cert -CAkey ca-key -in server-cert-sign-request-rsa -out signed-server-certificate.pem 
   -days validate-days -CAcreateserial -passin pass:ca-password
   ```

1. Importe el certificado firmado al almacén de claves.

   ```
   keytool -keystore kafka.server.keystore.jks -import -file signed-certificate.pem -alias on-premise-rsa -storepass your-keystore-password 
   -keypass your-key-password
   ```

1. Utilice el siguiente comando para importar la clave `on-premise-rsa` de `kafka.server.keystore.jks` a `keystore.p12`.

   ```
   keytool -importkeystore \
   -srckeystore kafka.server.keystore.jks \
   -destkeystore keystore.p12 \
   -deststoretype PKCS12 \
   -srcalias on-premise-rsa \
   -deststorepass your-truststore-password \
   -destkeypass your-key-password
   ```

1. Utilice el siguiente comando para exportar `keystore.p12` a un formato `.pem`.

   ```
   Openssl pkcs12 -in keystore.p12 -out encrypted-private-server-key.pem –nocerts
   ```

1. Cargue `encrypted-private-server-key.pem`, `signed-certificate.pem` y `ca-cert` en el mánager de certificados de DMS.

1. Cree un punto final utilizando el devuelto. ARNs

   ```
   aws dms create-endpoint --endpoint-identifier $endpoint-identifier --engine-name kafka --endpoint-type target --kafka-settings 
   '{"Broker": "b-0.kafka260.aaaaa1.a99.kafka.us-east-1.amazonaws.com:9092", "SecurityProtocol":"ssl-authentication", 
   "SslClientCertificateArn": "your-client-cert-arn","SslClientKeyArn": "your-client-key-arn","SslClientKeyPassword":"your-client-key-password", 
   "SslCaCertificateArn": "your-ca-certificate-arn"}'
                               
   aws dms test-connection -replication-instance-arn=$rep_inst_arn —endpoint-arn=$kafka_tar_arn_msk
   ```

### Uso de la autenticación SASL-SSL para conectarse a Amazon MSK
<a name="CHAP_Target.Kafka.TLS.SSL-SASL"></a>

El método de capa de seguridad y autenticación simple (SASL) utiliza un nombre de usuario y una contraseña para validar la identidad del cliente y establece una conexión cifrada entre el servidor y el cliente.

Para usar SASL, primero debe crear un nombre de usuario y una contraseña seguros al configurar el clúster de Amazon MSK. Para obtener una descripción de cómo configurar un nombre de usuario y una contraseña seguros para un clúster de Amazon MSK, consulte [Configuración de la SASL/SCRAM autenticación para un clúster de Amazon MSK en la Guía para desarrolladores](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-tutorial) de *Amazon Managed Streaming for Apache Kafka*.

A continuación, cuando cree el punto de conexión de destino de Kafka, establezca la configuración del punto de conexión del protocolo de seguridad (`SecurityProtocol`) mediante la opción `sasl-ssl`. Establezca también las opciones `SaslUsername` y `SaslPassword`. Asegúrese de que coincidan con el nombre de usuario y la contraseña seguros que creó cuando configuró por primera vez el clúster de Amazon MSK, como se muestra en el siguiente ejemplo de JSON.

```
                   
"KafkaSettings": {
    "SecurityProtocol": "sasl-ssl",
    "SaslUsername":"Amazon MSK cluster secure user name",
    "SaslPassword":"Amazon MSK cluster secure password"                    
}
```

**nota**  
Actualmente, solo AWS DMS admite el SASL-SSL público respaldado por una CA. DMS no admite el SASL-SSL para usarlo con Kafka autoadministrado y respaldado por una entidad de certificación privada.
Para la autenticación SASL-SSL, AWS DMS es compatible con el mecanismo SCRAM-SHA-512 de forma predeterminada. AWS DMS las versiones 3.5.0 y superiores también admiten el mecanismo Plain. Para admitir el mecanismo Plain, defina el parámetro `SaslMechanism` del tipo de datos de la API `KafkaSettings` en `PLAIN`. El tipo de datos `PLAIN` es compatible con Kafka, pero no con Amazon Kafka (MSK).

## Uso de una imagen anterior para consultar los valores originales de las filas de CDC para Apache Kafka como destino
<a name="CHAP_Target.Kafka.BeforeImage"></a>

Al escribir actualizaciones de CDC en un destino de transmisión de datos como Kafka, puede ver los valores originales de una fila de base de datos de origen antes de cambiar mediante una actualización. Para que esto sea posible, AWS DMS rellena una *imagen anterior* de los eventos de actualización en función de los datos proporcionados por el motor de base de datos de origen. 

Los diferentes motores de base de datos de origen proporcionan diferentes cantidades de información para una imagen anterior: 
+ Oracle proporciona actualizaciones a las columnas solo si cambian. 
+ PostgreSQL proporciona datos solo para las columnas que forman parte de la clave principal (cambiadas o no). Si se utiliza la replicación lógica y se ha configurado REPLICA IDENTITY FULL para la tabla de origen, puede escribir toda la información de antes y después de la fila WALs y verla aquí.
+ MySQL generalmente proporciona datos para todas las columnas (cambiadas o no).

Para habilitar imágenes anteriores para agregar valores originales de la base de datos de origen a la salida AWS DMS , utilice la configuración de tarea `BeforeImageSettings` o el parámetro `add-before-image-columns`. Este parámetro aplica una regla de transformación de columna. 

`BeforeImageSettings` agrega un nuevo atributo JSON a cada operación de actualización con valores recopilados desde el sistema de base de datos de origen, como se muestra a continuación.

```
"BeforeImageSettings": {
    "EnableBeforeImage": boolean,
    "FieldName": string,  
    "ColumnFilter": pk-only (default) / non-lob / all (but only one)
}
```

**nota**  
Aplicar `BeforeImageSettings` a tareas de carga completa más CDC (que migran datos existentes y replican cambios en curso) o a tareas de solo CDC (que replican cambios de datos solamente). No se aplica `BeforeImageSettings` a tareas que son solo de carga completa.

Para las opciones de `BeforeImageSettings`, se aplica lo siguiente:
+ Establezca la opción `EnableBeforeImage` para habilitar `true` antes de crear imágenes. El valor predeterminado es `false`. 
+ Utilice la opción `FieldName` para asignar un nombre al nuevo atributo JSON. Cuando `EnableBeforeImage` es `true`, `FieldName` es necesario y no puede estar vacío.
+ La opción `ColumnFilter` especifica una columna para agregar mediante el uso de las imágenes anteriores. Para agregar solo columnas que forman parte de las claves principales de la tabla, utilice el valor predeterminado, `pk-only`. Para agregar solo columnas que no son del tipo LOB, utilice `non-lob`. Para agregar cualquier columna que tenga un valor de imagen anterior, utilice `all`. 

  ```
  "BeforeImageSettings": {
      "EnableBeforeImage": true,
      "FieldName": "before-image",
      "ColumnFilter": "pk-only"
    }
  ```

### Uso de una regla de transformación de imagen anterior
<a name="CHAP_Target.Kafka.BeforeImage.Transform-Rule"></a>

Como alternativa a la configuración de tareas, puede utilizar el parámetro `add-before-image-columns`, que aplica una regla de transformación de columnas. Con este parámetro, puede habilitar las imágenes anteriores durante CDC en destinos de transmisión de datos como Kafka.

Al utilizar `add-before-image-columns` en una regla de transformación, puede aplicar un control más detallado de los resultados de la imagen anterior. Las reglas de transformación permiten utilizar un localizador de objetos que le da control sobre las tablas seleccionadas para la regla. Además, puede encadenar reglas de transformación, lo que permite aplicar diferentes reglas a diferentes tablas. A continuación, puede manipular las columnas producidas utilizando otras reglas. 

**nota**  
No utilice el parámetro `add-before-image-columns` junto con la configuración de tarea `BeforeImageSettings` dentro de la misma tarea. En su lugar, utilice el parámetro o la configuración, pero no ambos, para una sola tarea.

Un tipo de regla `transformation` con el parámetro `add-before-image-columns` de una columna debe proporcionar una sección `before-image-def`. A continuación se muestra un ejemplo.

```
    {
      "rule-type": "transformation",
      …
      "rule-target": "column",
      "rule-action": "add-before-image-columns",
      "before-image-def":{
        "column-filter": one-of  (pk-only / non-lob / all),
        "column-prefix": string,
        "column-suffix": string,
      }
    }
```

El valor de `column-prefix` se antepone a un nombre de columna y el valor predeterminado de `column-prefix` es `BI_`. El valor de `column-suffix` se añade al nombre de la columna y el valor predeterminado está vacío. No configure ambas cadenas `column-prefix` y `column-suffix` como cadenas vacías.

Elija un valor para `column-filter`. Para agregar solo columnas que forman parte de las claves principales de la tabla, elija `pk-only`. Elija `non-lob` para agregar solo columnas que no sean de tipo LOB. O elija `all` para agregar cualquier columna que tenga un valor de imagen anterior.

### Ejemplo de una regla de transformación de imagen anterior
<a name="CHAP_Target.Kafka.BeforeImage.Example"></a>

La regla de transformación del siguiente ejemplo agrega una nueva columna llamada `BI_emp_no` en el destino. Entonces, una instrucción como `UPDATE employees SET emp_no = 3 WHERE emp_no = 1;` rellena el campo `BI_emp_no` con 1. Cuando escribe actualizaciones de CDC en destinos de Amazon S3, la columna `BI_emp_no` permite indicar qué fila original se actualizó.

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "%",
        "table-name": "%"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "%",
        "table-name": "employees"
      },
      "rule-action": "add-before-image-columns",
      "before-image-def": {
        "column-prefix": "BI_",
        "column-suffix": "",
        "column-filter": "pk-only"
      }
    }
  ]
}
```

Para obtener información sobre el uso de la acción de regla `add-before-image-columns`, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Limitaciones a la hora de utilizar Apache Kafka como destino para AWS Database Migration Service
<a name="CHAP_Target.Kafka.Limitations"></a>

Al utilizar Apache Kafka como destino, se aplican las siguientes restricciones:
+ AWS DMS Los puntos de enlace de destino de Kafka no admiten el control de acceso de IAM para Amazon Managed Streaming for Apache Kafka (Amazon MSK).
+ No se admite el modo LOB completo.
+ Especifique un archivo de configuración de Kafka para su clúster con propiedades que permitan AWS DMS crear nuevos temas automáticamente. Incluya el valor `auto.create.topics.enable = true`. Si utiliza Amazon MSK, puede especificar la configuración predeterminada al crear el clúster de Kafka y, a continuación, cambiar la configuración de `auto.create.topics.enable` a `true`. Para obtener más información acerca de los valores de configuración predeterminados, consulte [La configuración predeterminada de Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/msk-default-configuration.html) en la *Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka*. Si necesita modificar un clúster de Kafka existente creado con Amazon MSK, ejecute el AWS CLI comando `aws kafka create-configuration` para actualizar la configuración de Kafka, como en el siguiente ejemplo:

  ```
  14:38:41 $ aws kafka create-configuration --name "kafka-configuration" --kafka-versions "2.2.1" --server-properties file://~/kafka_configuration
  {
      "LatestRevision": {
          "Revision": 1,
          "CreationTime": "2019-09-06T14:39:37.708Z"
      },
      "CreationTime": "2019-09-06T14:39:37.708Z",
      "Name": "kafka-configuration",
      "Arn": "arn:aws:kafka:us-east-1:111122223333:configuration/kafka-configuration/7e008070-6a08-445f-9fe5-36ccf630ecfd-3"
  }
  ```

  Aquí, `//~/kafka_configuration` es el archivo de configuración que ha creado con los valores de propiedades necesarios.

  Si utiliza su propia instancia de Kafka instalada en Amazon EC2, modifique la configuración del clúster de Kafka con `auto.create.topics.enable = true` la configuración AWS DMS que permita la creación automática de nuevos temas mediante las opciones que se proporcionan con la instancia.
+ AWS DMS publica cada actualización en un único registro de la base de datos de origen como un registro de datos (mensaje) de un tema de Kafka determinado, independientemente de las transacciones.
+ AWS DMS admite las siguientes cuatro formas de claves de partición:
  + `SchemaName.TableName` una combinación del nombre de esquema y de tabla.
  + `${AttributeName}`: el valor de uno de los campos del archivo JSON o la clave principal de la tabla de la base de datos de origen.
  + `transaction-id`: El identificador de transacción de los CDC. Todos los registros de la misma transacción van a la misma partición.
  + `constant`: un valor literal fijo para cada registro, independientemente de la tabla o los datos. Todos los registros se envían al mismo valor de clave de partición «constante», lo que proporciona un orden global estricto en todas las tablas.

  ```
  {
      "rule-type": "object-mapping",
      "rule-id": "2",
      "rule-name": "TransactionIdPartitionKey",
      "rule-action": "map-record-to-document",
      "object-locator": {
          "schema-name": "onprem",
          "table-name": "it_system"
      },
      "mapping-parameters": {
          "partition-key-type": "transaction-id | constant | attribute-name | schema-table"
      }
  }
  ```
+ La configuración del `IncludeTransactionDetails` punto final solo se admite cuando el punto final de origen es Oracle, SQL Server, PostgreSQL o MySQL. En el caso de otros tipos de puntos finales de origen, no se incluirán los detalles de la transacción.
+ `BatchApply` no es compatible con un punto de conexión de Kafka. Es posible que el uso de la aplicación por lotes (por ejemplo, la configuración de tareas de metadatos de destino `BatchApplyEnabled`) para un objetivo de Kafka provoque la pérdida de datos.
+ AWS DMS no admite la migración de valores de tipos de `BigInt` datos con más de 16 dígitos. Para evitar esta limitación, puede usar la siguiente regla de transformación para convertir la columna `BigInt` en una cadena. Para obtener más información sobre las reglas de transformación, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

  ```
  {
      "rule-type": "transformation",
      "rule-id": "id",
      "rule-name": "name",
      "rule-target": "column",
      "object-locator": {
          "schema-name": "valid object-mapping rule action",
          "table-name": "",
          "column-name": ""
      },
      "rule-action": "change-data-type",
      "data-type": {
          "type": "string",
          "length": 20
      }
  }
  ```
+ AWS DMS Los puntos de enlace de destino de Kafka no son compatibles con Amazon MSK servless.
+ Al definir las reglas de asignación, no se admite disponer de una regla de asignación de objetos y una regla de transformación. Debe establecer solo una regla. 
+ AWS DMS admite la autenticación SASL para las versiones de Apache Kafka hasta la 3.8. Si utiliza Kafka 4.0 o una versión superior, solo puede conectarse sin la autenticación SASL.
+ AWS DMS no admite datos de origen que contengan `'\0'` caracteres incrustados cuando se utiliza Kafka como punto final de destino. Los datos que contengan `'\0'` caracteres incrustados se truncarán en el primer carácter. `'\0'`

## Uso de la asignación de objetos para migrar datos a un tema de Kafka
<a name="CHAP_Target.Kafka.ObjectMapping"></a>

AWS DMS utiliza reglas de mapeo de tablas para mapear los datos del tema de Kafka de origen al tema de Kafka de destino. Para asignar datos a un tema de destino, se utiliza un tipo de regla de asignación de tablas denominado asignación de objetos. Puede utilizar el mapeo de objetos para definir cómo los registros de datos del origen se asignan a los registros de datos publicados en un tema de Kafka. 

Los temas de Kafka no tienen una estructura predeterminada distinta de una clave de partición.

**nota**  
No tiene que utilizar la asignación de objetos. Puede utilizar la asignación de tablas normal para varias transformaciones. Sin embargo, el tipo de clave de partición seguirá estos comportamientos predeterminados:   
La clave principal se usa como clave de partición para la carga completa.
Si no se utiliza ninguna configuración de tareas de aplicación paralela, `schema.table` se utiliza como clave de partición para CDC.
Si se utiliza la configuración de tareas de aplicación paralela, la clave principal se utiliza como clave de partición para CDC.

Para crear una regla de mapeo de objetos, se especifica `rule-type` como `object-mapping`. Esta regla indica el tipo de mapeo de objetos que desea utilizar. 

La estructura de la regla es la siguiente.

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```

AWS DMS actualmente admite `map-record-to-record` y es `map-record-to-document` el único valor válido para el parámetro. `rule-action` Esta configuración afecta a los valores que no están excluidos como parte de la lista de atributos `exclude-columns`. Los `map-record-to-document` valores `map-record-to-record` y especifican cómo se AWS DMS gestionan estos registros de forma predeterminada. Estos valores no afectan a los mapeos de atributos en modo alguno. 

Utilice `map-record-to-record` al migrar desde una base de datos relacional a un tema de Kafka. Este tipo de regla utiliza el valor `taskResourceId.schemaName.tableName` de la base de datos relacional como la clave de partición en el tema de Kafka y crea un atributo para cada columna de la base de datos de origen. 

Cuando utilice `map-record-to-record`, tenga en cuenta lo siguiente:
+ Esta configuración solo afecta a las columnas excluidas de la lista `exclude-columns`.
+ Para cada columna de este tipo, AWS DMS crea un atributo correspondiente en el tema de destino.
+ AWS DMS crea el atributo correspondiente independientemente de si la columna de origen se utiliza en una asignación de atributos. 

Una forma de entender `map-record-to-record` es verlo en acción. En este ejemplo, imagine que empieza con una fila de una tabla de base de datos relacional con la estructura y los datos siguientes.


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

Para migrar esta información desde un esquema denominado `Test` a un tema de Kafka, cree reglas para mapear los datos al tema. La siguiente regla ilustra la operación de asignación. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToKafka",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

Dados un tema de Kafka y una clave de partición (en este caso, `taskResourceId.schemaName.tableName`), a continuación se ilustra el formato de registro resultante al usar nuestros datos de ejemplo en el tema de destino de Kafka: 

```
  {
     "FirstName": "Randy",
     "LastName": "Marsh",
     "StoreId":  "5",
     "HomeAddress": "221B Baker Street",
     "HomePhone": "1234567890",
     "WorkAddress": "31 Spooner Street, Quahog",
     "WorkPhone": "9876543210",
     "DateOfBirth": "02/29/1988"
  }
```

**Topics**
+ [Reestructuración de datos con el mapeo de atributos](#CHAP_Target.Kafka.AttributeMapping)
+ [Replicación multitemática mediante asignación de objetos](#CHAP_Target.Kafka.MultiTopic)
+ [Formato de mensajes para Apache Kafka](#CHAP_Target.Kafka.Messageformat)

### Reestructuración de datos con el mapeo de atributos
<a name="CHAP_Target.Kafka.AttributeMapping"></a>

Puede reestructurar los datos mientras los migra a un tema de Kafka utilizando un mapa de atributos. Por ejemplo, es posible que desee combinar varios campos del origen en un único campo en el destino. El mapa de atributos siguiente ilustra cómo reestructurar los datos.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToKafka",
            "rule-action": "map-record-to-record",
            "target-table-name": "CustomerData",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            },
            "mapping-parameters": {
                "partition-key-type": "attribute-name",
                "partition-key-name": "CustomerName",
                "exclude-columns": [
                    "firstname",
                    "lastname",
                    "homeaddress",
                    "homephone",
                    "workaddress",
                    "workphone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${lastname}, ${firstname}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "json",
                        "value": {
                            "Home": {
                                "Address": "${homeaddress}",
                                "Phone": "${homephone}"
                            },
                            "Work": {
                                "Address": "${workaddress}",
                                "Phone": "${workphone}"
                            }
                        }
                    }
                ]
            }
        }
    ]
}
```

Para establecer un valor constante para`partition-key`, especifique`"partition-key-type: "constant"`, esto establece el valor de la partición en`constant`. Tal vez desee hacer esto, por ejemplo, para obligar a que todos los datos se almacenen en una única partición. El siguiente mapeo ilustra este enfoque. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "1",
            "rule-name": "TransformToKafka",
            "rule-action": "map-record-to-document",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customer"
            },
            "mapping-parameters": {
                "partition-key-type": "constant",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "attribute-name": "CustomerName",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "attribute-name": "ContactDetails",
                        "value": {
                            "Home": {
                                "Address": "${HomeAddress}",
                                "Phone": "${HomePhone}"
                            },
                            "Work": {
                                "Address": "${WorkAddress}",
                                "Phone": "${WorkPhone}"
                            }
                        }
                    },
                    {
                        "attribute-name": "DateOfBirth",
                        "value": "${DateOfBirth}"
                    }
                ]
            }
        }
    ]
}
```

**nota**  
El valor `partition-key` de un registro de control para una tabla específica es `TaskId.SchemaName.TableName`. El valor `partition-key` de un registro de control para una tabla específica es el `TaskId` de ese registro. La especificación de un valor `partition-key` en el mapeo de objetos no tiene ningún efecto en el elemento `partition-key` de un registro de control.  
 Si `partition-key-type` se establece `attribute-name` en una regla de mapeo de tablas, debe especificarse`partition-key-name`, que debe hacer referencia a una columna de la tabla de origen o a una columna personalizada definida en la asignación. Además, `attribute-mappings` debe proporcionarse para definir cómo se asignan las columnas de origen al tema de Kafka de destino.

### Replicación multitemática mediante asignación de objetos
<a name="CHAP_Target.Kafka.MultiTopic"></a>

De forma predeterminada, AWS DMS las tareas migran todos los datos de origen a uno de los siguientes temas de Kafka:
+ Como se especifica en el campo **Tema** del punto final de AWS DMS destino.
+ Como especifica `kafka-default-topic` si el campo **Tema** del punto de conexión de destino no está rellenado y la configuración `auto.create.topics.enable` de Kafka está establecida en `true`.

Con las versiones 3.4.6 y posteriores AWS DMS del motor, puede usar el `kafka-target-topic` atributo para asignar cada tabla fuente migrada a un tema diferente. Por ejemplo, las siguientes reglas de asignación de objetos migran las tablas de origen `Customer` y `Address` a los temas de Kafka `customer_topic` y `address_topic`, respectivamente. Al mismo tiempo, AWS DMS migra todas las demás tablas de origen, incluida la `Bills` tabla del `Test` esquema, al tema especificado en el punto final de destino.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "MapToKafka1",
            "rule-action": "map-record-to-record",
            "kafka-target-topic": "customer_topic",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customer" 
            },
            "partition-key-type": "constant"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "3",
            "rule-name": "MapToKafka2",
            "rule-action": "map-record-to-record",
            "kafka-target-topic": "address_topic",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Address"
            },
            "partition-key-type": "constant"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "4",
            "rule-name": "DefaultMapToKafka",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Bills"
            }
        }
    ]
}
```

Al utilizar la replicación multitema de Kafka, puede agrupar y migrar las tablas de origen para separar los temas de Kafka mediante una única tarea de replicación.

### Formato de mensajes para Apache Kafka
<a name="CHAP_Target.Kafka.Messageformat"></a>

La salida JSON es simplemente una lista de pares de clave-valor. 

**RecordType**  
El tipo de registro puede ser de datos o de control. Los *registros de datos *representan las filas reales en el origen. Los *registros de control* son para eventos importantes de la secuencia como, por ejemplo, el reinicio de una tarea.

**Operación**  
Para los registros de datos, la operación puede ser `load`, `insert`, `update` o `delete`.  
Para los registros de control, la operación puede ser `create-table`, `rename-table`, `drop-table`, `change-columns`, `add-column`, `drop-column`, `rename-column` o `column-type-change`.

**SchemaName**  
El esquema de origen del registro. Este campo puede estar vacío para un registro de control.

**TableName**  
La tabla de origen del registro. Este campo puede estar vacío para un registro de control.

**Timestamp**  
La marca temporal que indica cuándo se creó el mensaje JSON. El campo está formateado con el formato ISO 8601.

El siguiente ejemplo de mensaje JSON ilustra un mensaje de tipo de datos con todos los metadatos adicionales.

```
{ 
   "data":{ 
      "id":100000161,
      "fname":"val61s",
      "lname":"val61s",
      "REGION":"val61s"
   },
   "metadata":{ 
      "timestamp":"2019-10-31T22:53:59.721201Z",
      "record-type":"data",
      "operation":"insert",
      "partition-key-type":"primary-key",
      "partition-key-value":"sbtest.sbtest_x.100000161",
      "schema-name":"sbtest",
      "table-name":"sbtest_x",
      "transaction-id":9324410911751,
      "transaction-record-id":1,
      "prev-transaction-id":9324410910341,
      "prev-transaction-record-id":10,
      "commit-timestamp":"2019-10-31T22:53:55.000000Z",
      "stream-position":"mysql-bin-changelog.002171:36912271:0:36912333:9324410911751:mysql-bin-changelog.002171:36912209"
   }
}
```

El siguiente ejemplo de mensaje JSON ilustra un mensaje de tipo control.

```
{ 
   "control":{ 
      "table-def":{ 
         "columns":{ 
            "id":{ 
               "type":"WSTRING",
               "length":512,
               "nullable":false
            },
            "fname":{ 
               "type":"WSTRING",
               "length":255,
               "nullable":true
            },
            "lname":{ 
               "type":"WSTRING",
               "length":255,
               "nullable":true
            },
            "REGION":{ 
               "type":"WSTRING",
               "length":1000,
               "nullable":true
            }
         },
         "primary-key":[ 
            "id"
         ],
         "collation-name":"latin1_swedish_ci"
      }
   },
   "metadata":{ 
      "timestamp":"2019-11-21T19:14:22.223792Z",
      "record-type":"control",
      "operation":"create-table",
      "partition-key-type":"task-id",
      "schema-name":"sbtest",
      "table-name":"sbtest_t1"
   }
}
```

# Utilizar un clúster OpenSearch de Amazon Service como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch"></a>

Se puede utilizar AWS DMS para migrar datos a Amazon OpenSearch Service (OpenSearch Servicio). OpenSearch El servicio es un servicio gestionado que facilita la implementación, el funcionamiento y el escalado de un clúster OpenSearch de servicios. 

En OpenSearch Service, se trabaja con índices y documentos. Un *índice* es una colección de documentos y un *documento* es un objeto JSON que contiene valores escalares, matrices y otros objetos. OpenSearch proporciona un lenguaje de consulta basado en JSON para que pueda consultar los datos de un índice y recuperar los documentos correspondientes.

Cuando AWS DMS crea índices para un punto final de destino para OpenSearch Service, crea un índice para cada tabla desde el punto final de origen. El coste de crear un índice OpenSearch de servicios depende de varios factores. Estos son el número de índices creados, la cantidad total de datos que contienen y la pequeña cantidad de metadatos que se OpenSearch almacenan para cada documento.

Configure su clúster de OpenSearch servicios con los recursos de procesamiento y almacenamiento adecuados para el alcance de la migración. Le recomendamos que tenga en cuenta los factores siguientes, en función de la tarea de replicación que desee utilizar:
+ Para una carga de datos completa, considere la cantidad total de datos que va a migrar, así como la velocidad de la transferencia.
+ Para replicar los cambios en curso, tenga en cuenta la frecuencia de las actualizaciones y sus requisitos de end-to-end latencia.

Además, configure los ajustes del índice en su OpenSearch clúster, prestando especial atención al recuento de documentos.

**Configuración de tareas de carga completa con varios subprocesos**

Para ayudar a aumentar la velocidad de la transferencia, AWS DMS admite una carga completa de subprocesos múltiples a un clúster de destino del OpenSearch servicio. AWS DMS admite este subprocesamiento múltiple con una configuración de tareas que incluye lo siguiente:
+ `MaxFullLoadSubTasks`: utilice esta opción para indicar el número máximo de tablas de origen que se pueden cargar en paralelo. DMS carga cada tabla en su índice de objetivos de OpenSearch servicio correspondiente mediante una subtarea dedicada. El valor predeterminado es 8, el valor máximo es 49.
+ `ParallelLoadThreads`— Utilice esta opción para especificar el número de subprocesos que se AWS DMS utilizan para cargar cada tabla en su índice de destino OpenSearch de servicio. El valor máximo para un objetivo OpenSearch de servicio es 32. Puede pedir que se incremente este límite máximo.
**nota**  
Si no cambia `ParallelLoadThreads` desde su valor predeterminado (0), AWS DMS transfiere un solo registro a la vez. Este enfoque supone una carga excesiva para el clúster OpenSearch de servicios. Asegúrese de que configura esta opción en 1 o más.
+ `ParallelLoadBufferSize`— Utilice esta opción para especificar el número máximo de registros que se almacenarán en el búfer que utilizan los subprocesos de carga paralela para cargar datos en el destino del OpenSearch servicio. El valor predeterminado es 50. El valor máximo es 1000. Utilice este parámetro con `ParallelLoadThreads`. `ParallelLoadBufferSize` es válido solo cuando hay más de un subproceso.

Para obtener más información sobre cómo DMS carga un clúster de OpenSearch servicios mediante subprocesos múltiples, consulte la AWS entrada del blog Scale [Amazon OpenSearch Service](https://aws.amazon.com/blogs/database/scale-amazon-elasticsearch-service-for-aws-database-migration-service-migrations/) for migrations. AWS Database Migration Service 

**Configuración de tareas de carga de CDC con varios subprocesos**

Puede mejorar el rendimiento de la captura de datos de cambios (CDC) para un clúster de destino de un OpenSearch servicio mediante la configuración de tareas para modificar el comportamiento de la llamada a la API. `PutRecords` Para ello, puede especificar el número de subprocesos simultáneos, las colas por subproceso y el número de registros que se van a almacenar en un búfer mediante la configuración de tareas `ParallelApply*`. Suponga, por ejemplo, que desea realizar una carga de CDC y aplicar 32 subprocesos en paralelo. También desea acceder a 64 colas por subproceso, con 50 registros almacenados por búfer. 
**nota**  
El soporte para el uso de la configuración de `ParallelApply*` tareas durante los puntos finales de destino de CDC a Amazon OpenSearch Service está disponible en AWS DMS las versiones 3.4.0 y posteriores.

Para promover el desempeño de los CDC, AWS DMS apoya las siguientes configuraciones de tareas:
+ `ParallelApplyThreads`— Especifica la cantidad de subprocesos simultáneos que se AWS DMS utilizan durante una carga de CDC para enviar los registros de datos a un punto final de destino del OpenSearch servicio. El valor predeterminado es cero (0) y el valor máximo es 32.
+ `ParallelApplyBufferSize`— Especifica el número máximo de registros que se deben almacenar en cada cola de búfer para que los subprocesos simultáneos se envíen a un punto final de destino del OpenSearch servicio durante una carga de CDC. El valor predeterminado es 100 y el máximo es 1000. Utilice esta opción cuando `ParallelApplyThreads` especifique más de un subproceso. 
+ `ParallelApplyQueuesPerThread`— Especifica el número de colas a las que accede cada subproceso para extraer los registros de datos de las colas y generar una carga por lotes para un punto final del servicio durante la CDC. OpenSearch 

Cuando se utiliza la configuración de tareas `ParallelApply*`, el valor predeterminado de `partition-key-type` es el valor de `primary-key` de la tabla, no el valor de `schema-name.table-name`.

## Migración de una tabla de base de datos relacional a un índice de servicios OpenSearch
<a name="CHAP_Target.Elasticsearch.RDBMS2Elasticsearch"></a>

AWS DMS admite la migración de datos a los tipos de datos escalares del OpenSearch Servicio. Al migrar de una base de datos relacional como Oracle o MySQL a OpenSearch Service, es posible que desee reestructurar la forma en que almacena estos datos.

AWS DMS admite los siguientes tipos de datos escalares OpenSearch de servicio: 
+ Booleano 
+ Date
+ Flotante
+ Int
+ Cadena

AWS DMS convierte los datos de tipo Date en tipo String. Puede especificar la asignación personalizada para interpretar estas fechas.

AWS DMS no admite la migración de tipos de datos LOB.

## Requisitos previos para utilizar Amazon OpenSearch Service como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Prerequisites"></a>

Antes de empezar a trabajar con una base de datos de OpenSearch servicios como destino AWS DMS, asegúrese de crear un rol AWS Identity and Access Management (de IAM). Esta función debería permitir el AWS DMS acceso a los índices del OpenSearch servicio en el punto final de destino. El conjunto mínimo de permisos de acceso se muestra en la siguiente política de IAM.

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

****  

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

------

El rol que utilice para la migración al OpenSearch Servicio debe tener los siguientes permisos.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttpDelete",
        "es:ESHttpGet",
        "es:ESHttpHead",
        "es:ESHttpPost",
        "es:ESHttpPut"
      ],
      "Resource": "*"
    }
  ]
}
```

------

En el ejemplo anterior, `region` sustitúyalo por el identificador de AWS región, *`account-id`* por el ID de tu AWS cuenta y `domain-name` por el nombre de tu dominio de Amazon OpenSearch Service. Un ejemplo es `arn:aws:es:us-west-2:123456789012:domain/my-es-domain`.

## Configuración del punto final cuando se utiliza el OpenSearch Servicio como destino para AWS DMS
<a name="CHAP_Target.Elasticsearch.Configuration"></a>

Puede utilizar los ajustes de punto final para configurar la base de datos de destino del OpenSearch Servicio de forma similar a como se utilizan atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` comando del [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--elasticsearch-settings '{"EndpointSetting": "value", ...}'` JSON.

En la siguiente tabla se muestran los ajustes de punto final que puede utilizar con OpenSearch Service como destino.


| Nombre de atributo | Valores válidos | Valor predeterminado y descripción | 
| --- | --- | --- | 
|  `FullLoadErrorPercentage`   |  Un número entero positivo mayor que 0, pero menor que 100.  |  10: para una tarea de carga completa, este atributo determina el umbral de errores permitidos antes de producirse un error en la tarea. Por ejemplo, suponga que hay 1 500 filas en el punto de enlace de origen y que este parámetro está establecido en 10. Entonces, la tarea falla si AWS DMS encuentra más de 150 errores (el 10 por ciento del recuento de filas) al escribir en el punto final de destino.  | 
|   `ErrorRetryDuration`   |  Un número entero positivo mayor que 0.  |  300: si se produce un error en el punto final de destino, AWS DMS vuelve a intentarlo durante ese número de segundos. De lo contrario, la tarea produce un error.  | 
|  `UseNewMappingType`  | true o false |  `false`, pero para trabajar con opensearch v2.x, debe configurarse en `true`.  | 

## Limitaciones al utilizar Amazon OpenSearch Service como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Limitations"></a>

Cuando se utiliza Amazon OpenSearch Service como objetivo, se aplican las siguientes limitaciones:
+ OpenSearch El servicio utiliza el mapeo dinámico (estimación automática) para determinar los tipos de datos que se utilizarán para los datos migrados.
+ OpenSearch El servicio almacena cada documento con un identificador único. A continuación, se muestra un ID de ejemplo. 

  ```
  "_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"
  ```

  Cada ID de documento tiene una longitud de 64 bytes, por lo que debe prever este requisito de almacenamiento. Por ejemplo, si migra 100 000 filas de una AWS DMS fuente, el índice de OpenSearch servicios resultante requiere almacenamiento de 6 400 000 bytes adicionales.
+ Con OpenSearch Service, no puede actualizar los atributos clave principales. Esta restricción es importante cuando se utiliza la replicación continua con captura de datos de cambio (CDC), ya que puede resultar en la presencia de datos no deseados en el destino. En el modo CDC, las claves principales se asignan a SHA256 valores, que tienen una longitud de 32 bytes. Se convierten en cadenas de 64 bytes legibles por humanos y se utilizan como documento de servicio. OpenSearch IDs
+ Si AWS DMS encuentra algún elemento que no se pueda migrar, escribe mensajes de error en Amazon CloudWatch Logs. Este comportamiento difiere del de otros puntos finales de AWS DMS destino, que escriben los errores en una tabla de excepciones.
+ AWS DMS no admite la conexión a un clúster de Amazon ES que tenga habilitado el control de acceso detallado con un usuario maestro y una contraseña.
+ AWS DMS no es compatible con el servicio sin servidor OpenSearch .
+ OpenSearch El servicio no admite la escritura de datos en índices preexistentes.
+ La configuración de tareas de replicación no `TargetTablePrepMode:TRUNCATE_BEFORE_LOAD` se admite para su uso con un punto final de OpenSearch destino.
+ Al migrar datos a Amazon Elasticsearch mediante AWS DMS, los datos de origen deben tener una clave principal o una columna de identificador único. Si los datos de origen no tienen una clave principal o un identificador único, debe definir uno mediante la define-primary-key regla de transformación.

## Tipos de datos de destino para Amazon OpenSearch Service
<a name="CHAP_Target.Elasticsearch.DataTypes"></a>

Cuando AWS DMS migra datos de bases de datos heterogéneas, el servicio mapea los tipos de datos de la base de datos de origen a tipos de datos intermedios, denominados tipos de AWS DMS datos. A continuación, el servicio asigna los tipos de datos intermedios a los tipos de datos de destino. La siguiente tabla muestra cada tipo de AWS DMS datos y el tipo de datos al que se asigna en OpenSearch Service.


| AWS DMS tipo de datos | OpenSearch tipo de datos de servicio | 
| --- | --- | 
|  Booleano  |  booleano  | 
|  Fecha  |  cadena  | 
|  Tiempo  |  date  | 
|  Marca temporal  |  date  | 
|  INT4  |  entero  | 
|  Real4  |  float  | 
|  UINT4  |  entero  | 

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte[Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md).

# Uso de Amazon DocumentDB como destino para AWS Database Migration Service
<a name="CHAP_Target.DocumentDB"></a>

 Para obtener información sobre las versiones de Amazon DocumentDB (compatibles con MongoDB) compatibles, consulte. AWS DMS [Objetivos para AWS DMS](CHAP_Introduction.Targets.md) Puede usar AWS DMS para migrar datos a Amazon DocumentDB (con compatibilidad con MongoDB) desde cualquiera de los motores de datos de origen compatibles con AWS DMS . El motor de origen puede estar en un servicio AWS gestionado como Amazon RDS, Aurora o Amazon S3. O el motor puede estar en una base de datos autoadministrada, como MongoDB ejecutándose en Amazon EC2 o en las instalaciones.

Puede utilizarlos AWS DMS para replicar los datos de origen en bases de datos, colecciones o documentos de Amazon DocumentDB. 

**nota**  
Si el punto de conexión de origen es MongoDB o Amazon DocumentDB, ejecute la migración en **modo documento**.

MongoDB almacena los datos en un formato JSON binario (BSON). AWS DMS admite todos los tipos de datos BSON compatibles con Amazon DocumentDB. Para obtener una lista de estos tipos de datos, consulte [ APIsMongoDB, operaciones y tipos de datos compatibles en la Guía](https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html) para desarrolladores de *Amazon DocumentDB.*

Si el punto final de origen es una base de datos relacional, AWS DMS asigna los objetos de la base de datos a Amazon DocumentDB de la siguiente manera:
+ Una base de datos relacional o un esquema de base de datos, se asigna una *base de datos* de Amazon DocumentDB. 
+ Las tablas de una base de datos relacional se corresponden con *recopilaciones* en Amazon DocumentDB.
+ Los registros de una tabla relacional se asignan a *documentos* en Amazon DocumentDB. Cada documento se crea a partir de los datos del registro de origen.

Si el punto de conexión de origen es Amazon S3, los objetos de Amazon DocumentDB resultantes se corresponden con reglas de asignación de AWS DMS para Amazon S3. Considere, por ejemplo, el siguiente URI.

```
s3://amzn-s3-demo-bucket/hr/employee
```

En este caso, AWS DMS asigne los objetos `amzn-s3-demo-bucket` a Amazon DocumentDB de la siguiente manera:
+ La parte del URI del nivel superior (`hr`) se asigna a una base de datos de Amazon DocumentDB. 
+ La parte del URI siguiente (`employee`) se asigna a una recopilación de Amazon DocumentDB.
+ Cada objeto en `employee` asigna un documento de Amazon DocumentDB.

Para obtener más información sobre las reglas de asignación de Amazon S3, consulte [Uso de Amazon S3 como fuente de AWS DMS](CHAP_Source.S3.md).

**Configuración del punto de conexión de Amazon DocumentDB**

En AWS DMS las versiones 3.5.0 y posteriores, puede mejorar el rendimiento de la captura de datos de cambios (CDC) para los puntos de enlace de Amazon DocumentDB ajustando la configuración de las tareas para los subprocesos paralelos y las operaciones masivas. Para ello, puede especificar el número de subprocesos simultáneos, las colas por subproceso y el número de registros que se van a almacenar en un búfer mediante la configuración de tareas `ParallelApply*`. Suponga, por ejemplo, que desea realizar una carga de CDC y aplicar 128 subprocesos en paralelo. También desea acceder a 64 colas por subproceso, con 50 registros almacenados por búfer. 

Para promover el desempeño de los CDC, AWS DMS es compatible con las siguientes configuraciones de tareas:
+ `ParallelApplyThreads`— Especifica el número de subprocesos simultáneos que se AWS DMS utilizan durante una carga de CDC para enviar registros de datos a un punto final de destino de Amazon DocumentDB. El valor predeterminado es cero (0) y el valor máximo es 32.
+ `ParallelApplyBufferSize`: especifica el número máximo de registros que se almacenan en cada cola del búfer para los subprocesos simultáneos que insertan datos en un punto de conexión de destino de Amazon DocumentDB durante una carga de CDC. El valor predeterminado es 100 y el máximo es 1000. Utilice esta opción cuando `ParallelApplyThreads` especifique más de un subproceso. 
+ `ParallelApplyQueuesPerThread`: especifica el número de colas a las que accede cada subproceso para sacar registros de datos de las colas y generar una carga por lotes para un punto de conexión de Amazon DocumentDB durante el proceso de CDC. El valor predeterminado de es 1. El máximo es 512.

**nota**  
 En el caso de los objetivos de Amazon DocumentDB, la solicitud paralela de los CDC puede provocar errores clave duplicados o el estancamiento de la solicitud de los CDC para las cargas de trabajo que utilizan índices únicos secundarios o que requieren un orden estricto de los cambios. Utilice la configuración de aplicación CDC de subproceso único predeterminada para estas cargas de trabajo. 

Para obtener información adicional sobre cómo trabajar con Amazon DocumentDB como destino AWS DMS, consulte las siguientes secciones:

**Topics**
+ [Asignación de datos desde un origen a un destino de Amazon DocumentDB](#CHAP_Target.DocumentDB.data-mapping)
+ [Conexión a los clústeres elásticos de Amazon DocumentDB como destino](#CHAP_Target.DocumentDB.data-mapping.elastic-cluster-connect)
+ [Replicación continua con Amazon DocumentDB como destino](#CHAP_Target.DocumentDB.data-mapping.ongoing-replication)
+ [Limitaciones para usar Amazon DocumentDB como destino](#CHAP_Target.DocumentDB.limitations)
+ [Uso de la configuración de puntos de conexión con Amazon DocumentDB como destino](#CHAP_Target.DocumentDB.ECAs)
+ [Tipos de datos de destino de Amazon DocumentDB](#CHAP_Target.DocumentDB.datatypes)

**nota**  
Para obtener información step-by-step detallada sobre el proceso de migración, consulte [Migración de MongoDB a Amazon DocumentDB](https://docs.aws.amazon.com/dms/latest/sbs/CHAP_MongoDB2DocumentDB.html) en la Guía de migración. AWS Database Migration Service Step-by-Step 

## Asignación de datos desde un origen a un destino de Amazon DocumentDB
<a name="CHAP_Target.DocumentDB.data-mapping"></a>

AWS DMS lee los registros del punto final de origen y crea documentos JSON en función de los datos que lee. Para cada documento JSON, AWS DMS debe determinar un `_id` campo que actúe como identificador único. A continuación, escribe el documento JSON en una recopilación de Amazon DocumentDB, con el campo `_id` como clave principal.

### Datos de origen que están en una sola columna
<a name="CHAP_Target.DocumentDB.data-mapping.single-column"></a>

Si los datos de origen constan de una única columna, deben ser del tipo cadena. (Según el motor de origen, el tipo de datos real puede ser VARCHAR, NVARCHAR, TEXT, LOB, CLOB o similar). AWS DMS asume que los datos son un documento JSON válido y los replica en Amazon DocumentDB tal cual.

Si el documento JSON resultante contiene un campo llamado `_id`, entonces se utiliza ese campo como el `_id` único en Amazon DocumentDB.

Si JSON no contiene un campo `_id`, Amazon DocumentDB genera un valor de `_id` automáticamente.

### Datos de origen que están en varias columnas
<a name="CHAP_Target.DocumentDB.data-mapping.multiple-columns"></a>

Si los datos de origen constan de varias columnas, crea un documento JSON a partir de todas estas columnas. AWS DMS Para determinar el `_id` campo del documento, AWS DMS proceda de la siguiente manera:
+ Si una de las columnas se llama `_id`, los datos de esa columna se utilizan como el `_id` de destino.
+ Si no hay ninguna `_id` columna, pero los datos de origen tienen una clave principal o un índice único, AWS DMS utiliza esa clave o valor de índice como `_id` valor. Los datos de la clave principal o el índice único también aparecen como campos explícitos en el documento JSON.
+ Si no hay ninguna columna `_id` y tampoco hay una clave principal o un índice único, Amazon DocumentDB genera un valor de `_id` automáticamente.

### Forzar un tipo de datos en el punto de enlace de destino
<a name="CHAP_Target.DocumentDB.coercing-datatype"></a>

AWS DMS puede modificar las estructuras de datos cuando escribe en un punto final de destino de Amazon DocumentDB. Puede solicitar estos cambios modificando los nombres de las columnas y las tablas en el punto de enlace de origen o proporcionando reglas de transformación que se apliquen cuando se ejecute una tarea.

#### Uso de un documento JSON anidado (json\$1 prefix)
<a name="CHAP_Target.DocumentDB.coercing-datatype.json"></a>

Para forzar un tipo de datos, puede incluir el prefijo `json_` en el nombre de la columna de origen (por ejemplo, `json_columnName`) manualmente o mediante una transformación. En este caso, la columna se crea como un documento JSON anidado dentro del documento de destino, en lugar de como un campo de cadena.

Suponga, por ejemplo, que desea migrar el siguiente documento desde un punto de enlace de origen de MongoDB.

```
{
    "_id": "1", 
    "FirstName": "John", 
    "LastName": "Doe",
    "ContactDetails": "{"Home": {"Address": "Boston","Phone": "1111111"},"Work": { "Address": "Boston", "Phone": "2222222222"}}"
}
```

Si no fuerza ningún tipo de datos de origen, el documento `ContactDetails` incrustado se migra como una cadena.

```
{
    "_id": "1", 
    "FirstName": "John", 
    "LastName": "Doe",
    "ContactDetails": "{\"Home\": {\"Address\": \"Boston\",\"Phone\": \"1111111\"},\"Work\": { \"Address\": \"Boston\", \"Phone\": \"2222222222\"}}"
}
```

Sin embargo, puede añadir una regla de transformación para obligar a que `ContactDetails` sea un objeto JSON. Suponga, por ejemplo, que el nombre original de la columna de origen es `ContactDetails`. Para utilizar el tipo de datos como JSON anidado, es necesario cambiar el nombre de la columna situada en el punto final de origen a «json\$1ContactDetails», ya sea añadiendo el prefijo «\$1json\$1\$1» a la fuente de forma manual o mediante reglas de transformación. Por ejemplo, puede usar la siguiente regla de transformación:

```
{
    "rules": [
    {
    "rule-type": "transformation",
    "rule-id": "1",
    "rule-name": "1",
    "rule-target": "column",
    "object-locator": {
    "schema-name": "%",
    "table-name": "%",
    "column-name": "ContactDetails"
     },
    "rule-action": "rename",
    "value": "json_ContactDetails",
    "old-value": null
    }
    ]
}
```

AWS DMS replica el campo como JSON anidado, de la siguiente manera. ContactDetails 

```
{
    "_id": "1",
    "FirstName": "John",
    "LastName": "Doe",
    "ContactDetails": {
        "Home": {
            "Address": "Boston",
            "Phone": "1111111111"
        },
        "Work": {
            "Address": "Boston",
            "Phone": "2222222222"
        }
    }
}
```

#### Uso de una matriz JSON (array\$1 prefix)
<a name="CHAP_Target.DocumentDB.coercing-datatype.array"></a>

Para forzar un tipo de datos, puede incluir el prefijo `array_` en el nombre de la columna (por ejemplo, `array_columnName`) manualmente o mediante una transformación. En este caso, AWS DMS considera la columna como una matriz JSON y la crea como tal en el documento de destino.

Suponga que desea migrar el siguiente documento desde un punto de enlace de origen de MongoDB.

```
{
    "_id" : "1",
    "FirstName": "John",
    "LastName": "Doe", 
    "ContactAddresses": ["Boston", "New York"],             
    "ContactPhoneNumbers": ["1111111111", "2222222222"]
}
```

Si no fuerza ningún tipo de datos de origen, el documento `ContactDetails` incrustado se migra como una cadena.

```
{
    "_id": "1",
    "FirstName": "John",
    "LastName": "Doe", 
    "ContactAddresses": "[\"Boston\", \"New York\"]",             
    "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]" 
}
```

 Sin embargo, puede añadir reglas de transformación para imponer el tipo de datos de matriz JSON a `ContactAddress` y `ContactPhoneNumbers`, tal y como se muestra en la siguiente tabla.


****  

| Nombre original de la columna de origen | Nuevo nombre de la columna de origen | 
| --- | --- | 
| ContactAddress | array\$1ContactAddress | 
| ContactPhoneNumbers | array\$1ContactPhoneNumbers | 

AWS DMS se replica `ContactAddress` y de la `ContactPhoneNumbers` siguiente manera.

```
{
    "_id": "1",
    "FirstName": "John",
    "LastName": "Doe",
    "ContactAddresses": [
        "Boston",
        "New York"
    ],
    "ContactPhoneNumbers": [
        "1111111111",
        "2222222222"
    ]
}
```

### Conexión a Amazon DocumentDB mediante TLS
<a name="CHAP_Target.DocumentDB.tls"></a>

De forma predeterminada, un clúster de Amazon DocumentDB recién creado solo acepta conexiones seguras mediante la seguridad de la capa de transporte (TLS). Cuando TLS está habilitado, cada conexión a Amazon DocumentDB requiere una clave pública.

Puede recuperar la clave pública de Amazon DocumentDB descargando el archivo desde un bucket de Amazon S3 AWS alojado. `rds-combined-ca-bundle.pem` Para obtener más información acerca de la descarga de este archivo, consulte [Cifrado de conexiones mediante TLS](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) en la *Guía para desarrolladores de Amazon DocumentDB*

Tras descargar este archivo.pem, puede importar la clave pública que contiene tal y AWS DMS como se describe a continuación.

#### Consola de administración de AWS
<a name="CHAP_Target.DocumentDB.tls.con"></a>

**Para importar el archivo de clave pública (.pem)**

1. [Abra la AWS DMS consola en /dms. https://console.aws.amazon.com](https://console.aws.amazon.com/dms)

1. En el panel de navegación, elija **Certificates**.

1. Elija **Import certificate (Importar certificado)** y haga lo siguiente:
   + En **Certificate identifier (Identificador del certificado)**, escriba un nombre único para el certificado (por ejemplo `docdb-cert`).
   + En **Import file (Archivo de importación)**, desplácese hasta la ubicación en la que guardó el archivo .pem.

   Cuando los ajustes sean los deseados, elija **Add new CA certificate (Añadir nuevo certificado de CA)**.

#### AWS CLI
<a name="CHAP_Target.DocumentDB.tls.cli"></a>

Utilice el comando `aws dms import-certificate`, tal y como se muestra en el ejemplo siguiente.

```
aws dms import-certificate \
    --certificate-identifier docdb-cert \
    --certificate-pem file://./rds-combined-ca-bundle.pem
```

Al crear un punto final de AWS DMS destino, proporcione el identificador del certificado (por ejemplo,`docdb-cert`). A continuación, establezca el parámetro de modo de SSL en `verify-full`.

## Conexión a los clústeres elásticos de Amazon DocumentDB como destino
<a name="CHAP_Target.DocumentDB.data-mapping.elastic-cluster-connect"></a>

En AWS DMS las versiones 3.4.7 y posteriores, puede crear un punto final de destino de Amazon DocumentDB como un clúster elástico. Si crea el punto de conexión de destino como un clúster elástico, debe adjuntar un certificado SSL nuevo al punto de conexión del clúster elástico de Amazon DocumentDB, ya que el certificado SSL existente no funcionará.

**Asociación de un certificado SSL nuevo al punto de conexión del clúster elástico de Amazon DocumentDB**

1. En un navegador, abra [ https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) y guarde el contenido en un `.pem` archivo con un nombre de archivo único, por ejemplo. `SFSRootCAG2.pem` Este es el archivo de certificado que debe importar en los pasos siguientes.

1. Cree el punto de conexión del clúster elástico y establezca las siguientes opciones:

   1. En **Configuración del punto de conexión**, elija **Agregar un nuevo certificado de entidad de certificación**.

   1. En **Identificador del certificado**, escriba **SFSRootCAG2.pem**.

   1. Para **Importar archivo de certificado**, elija **Elegir archivo**, después acceda al archivo `SFSRootCAG2.pem` que descargó anteriormente.

   1. Seleccione y abra el archivo `SFSRootCAG2.pem` descargado.

   1. Seleccione **Importar certificado**.

   1. **En el menú desplegable **Elegir un certificado**, elija SFSRoot CAG2 .pem.**

El nuevo certificado SSL del archivo `SFSRootCAG2.pem` descargado ahora está adjunto al punto de conexión del clúster elástico de Amazon DocumentDB.

## Replicación continua con Amazon DocumentDB como destino
<a name="CHAP_Target.DocumentDB.data-mapping.ongoing-replication"></a>

Si la replicación continua (captura de datos de cambios, CDC) está habilitada para Amazon DocumentDB como objetivo, las versiones 3.5.0 y superiores de AWS DMS proporcionan una mejora del rendimiento veinte veces mayor que las versiones anteriores. En versiones anteriores, en AWS DMS las que se gestionaban hasta 250 registros por segundo, AWS DMS ahora se procesan de forma eficiente más de 5000 registros por segundo. AWS DMS también garantiza que los documentos de Amazon DocumentDB permanezcan sincronizados con la fuente. Cuando se crea o actualiza un registro fuente, primero AWS DMS debe determinar qué registro de Amazon DocumentDB se ve afectado de la siguiente manera:
+ Si el registro de origen tiene una columna denominada `_id`, el valor de esa columna determina el `_id` correspondiente en la recopilación de Amazon DocumentDB.
+ Si no hay ninguna `_id` columna, pero los datos de origen tienen una clave principal o un índice único, AWS DMS utiliza esa clave o valor de índice como el de la `_id` colección Amazon DocumentDB.
+ Si el registro de origen no tiene una `_id` columna, una clave principal o un índice único, hace AWS DMS coincidir todas las columnas de origen con los campos correspondientes de la colección Amazon DocumentDB.

Cuando se crea un registro de origen nuevo, AWS DMS escribe el documento correspondiente en Amazon DocumentDB. Si se actualiza un registro de origen existente, AWS DMS actualiza los campos correspondientes del documento de destino en Amazon DocumentDB. Los campos que existen en el documento de destino pero no en el registro de origen se mantienen tal cual están.

Cuando se elimina un registro de origen, AWS DMS elimina el documento correspondiente de Amazon DocumentDB.

### Cambios estructurales (DDL) en el origen
<a name="CHAP_Target.DocumentDB.data-mapping.ongoing-replication.ddl"></a>

Con la replicación continua, todos los cambios realizados en las estructuras de datos de origen (como tablas, columnas, etc.) se propagan a los elementos correspondientes en Amazon DocumentDB. En las bases de datos relacionales, estos cambios se inician con instrucciones del lenguaje de definición de datos (DDL). Puede ver cómo AWS DMS se propagan estos cambios a Amazon DocumentDB en la siguiente tabla.


****  

| DDL en el origen | Efecto en el objetivo de Amazon DocumentDB | 
| --- | --- | 
| CREATE TABLE | Crea una colección vacía. | 
| Instrucción que cambia el nombre de una tabla (RENAME TABLE, ALTER TABLE...RENAME y similar) | Cambia el nombre de la colección. | 
| TRUNCATE TABLE | Elimina todos los documentos de la colección, pero solo si HandleSourceTableTruncated es true. Para obtener más información, consulte [Configuración de tareas para la administración de DDL del procesamiento de cambios](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md). | 
| DROP TABLE | Elimina la colección, pero solo si HandleSourceTableDropped es true. Para obtener más información, consulte [Configuración de tareas para la administración de DDL del procesamiento de cambios](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md). | 
| Instrucción que añade una columna a una tabla (ALTER TABLE...ADD y similar) | La instrucción DDL se omite y se envía una advertencia. Cuando se ejecuta la primera instrucción INSERT en el origen, se añade el nuevo campo al documento de destino. | 
| ALTER TABLE...RENAME COLUMN | La instrucción DDL se omite y se envía una advertencia. Cuando se ejecuta la primera instrucción INSERT en el origen, el campo con el nuevo nombre se añade al documento de destino. | 
| ALTER TABLE...DROP COLUMN | La instrucción DDL se omite y se envía una advertencia. | 
| Instrucción que cambia el tipo de datos de las columnas (ALTER COLUMN...MODIFY y similar) | La instrucción DDL se omite y se envía una advertencia. Cuando se ejecuta la primera instrucción INSERT en el origen con el nuevo tipo de datos, se crea el documento de destino con un campo de ese nuevo tipo de datos. | 

## Limitaciones para usar Amazon DocumentDB como destino
<a name="CHAP_Target.DocumentDB.limitations"></a>

Se aplican las siguientes limitaciones cuando se utiliza Amazon DocumentDB como destino para: AWS DMS
+ En Amazon DocumentDB, los nombres de las recopilaciones no pueden incluir el símbolo del dólar (\$1). Además, los nombres de las bases de datos no pueden contener caracteres Unicode.
+ AWS DMS no admite la fusión de varias tablas de origen en una única colección de Amazon DocumentDB.
+ Cuando AWS DMS los procesos cambian desde una tabla de origen que no tiene una clave principal, se ignoran todas las columnas LOB de esa tabla.
+ Si la opción **Tabla de cambios** está habilitada y AWS DMS encuentra una columna de origen llamada “*\$1id*”, esa columna aparece como “*\$1\$1id*” (con dos guiones bajos) en la tabla de cambios.
+ Si elige Oracle como punto de enlace de origen, el origen de Oracle debe tener el registro suplementario completo habilitado. De lo contrario, si hay columnas en el origen que no han cambiado, los datos se cargan en Amazon DocumentDB como valores nulos.
+ La configuración de tareas de replicación, `TargetTablePrepMode:TRUNCATE_BEFORE_LOAD` no se admite para su uso con un punto de conexión de destino de DocumentDB. 
+ Amazon DocumentDB no admite las colecciones limitadas de MongoDB. Sin embargo, AWS DMS migra automáticamente dichos objetos como colecciones ilimitadas en la DocumentDB de destino.
+ La solicitud paralela de los CDC a los objetivos de Amazon DocumentDB puede provocar errores clave duplicados o el estancamiento de la solicitud de los CDC para cargas de trabajo que utilizan índices únicos secundarios o que requieren un orden estricto de los cambios. Para este tipo de cargas de trabajo, utilice la configuración de aplicación CDC predeterminada de un solo subproceso.

## Uso de la configuración de puntos de conexión con Amazon DocumentDB como destino
<a name="CHAP_Target.DocumentDB.ECAs"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Amazon DocumentDB de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` comando del [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la `--doc-db-settings '{"EndpointSetting": "value", ...}'` sintaxis JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Amazon DocumentDB como destino.


| Nombre de atributo | Valores válidos | Valor predeterminado y descripción | 
| --- | --- | --- | 
|   `replicateShardCollections`   |  booleano `true` `false`  |  Cuando se establece en `true`, esta configuración de punto de conexión tiene los siguientes efectos e impone las siguientes limitaciones: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.DocumentDB.html)  | 

## Tipos de datos de destino de Amazon DocumentDB
<a name="CHAP_Target.DocumentDB.datatypes"></a>

En la siguiente tabla, puede encontrar los tipos de datos de destino de Amazon DocumentDB que se admiten cuando se utiliza AWS DMS y el mapeo predeterminado a partir de los tipos de datos de AWS DMS. Para obtener más información sobre los tipos de datos de AWS DMS, consulte. [Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  AWS Tipo de datos DMS  |  Tipo de datos de Amazon DocumentDB  | 
| --- | --- | 
|  BOOLEAN  |  Booleano  | 
|  BYTES  |  Datos binarios  | 
|  DATE  | Date | 
|  TIME  | Cadena () UTF8 | 
|  DATETIME  | Date | 
|  INT1  | Entero de 32 bits | 
|  INT2  |  Entero de 32 bits  | 
|  INT4  | Entero de 32 bits | 
|  INT8  |  Entero de 64 bits  | 
|  NUMERIC  | Cadena (UTF8) | 
|  REAL4  |  Double  | 
|  REAL8  | Double | 
|  STRING  |  Si los datos se reconocen como JSON, AWS DMS los migra a Amazon DocumentDB como un documento. De lo contrario, los datos se asignan a String (). UTF8  | 
|  UINT1  | Entero de 32 bits | 
|  UINT2  | Entero de 32 bits | 
|  UINT4  | Entero de 64 bits | 
|  UINT8  |  Cadena () UTF8  | 
|  WSTRING  | Si los datos se reconocen como JSON, AWS DMS los migra a Amazon DocumentDB como un documento. De lo contrario, los datos se asignan a String (). UTF8 | 
|  BLOB  | Binario | 
|  CLOB  | Si los datos se reconocen como JSON, AWS DMS los migra a Amazon DocumentDB como un documento. De lo contrario, los datos se asignan a String (). UTF8 | 
|  NCLOB  | Si los datos se reconocen como JSON, AWS DMS los migra a Amazon DocumentDB como un documento. De lo contrario, los datos se asignan a String (). UTF8 | 

# Uso de Amazon Neptune como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Neptune"></a>

Amazon Neptune es un servicio de base de datos de gráficos rápido, fiable y completamente administrado que le permite crear y ejecutar fácilmente aplicaciones que funcionen con conjuntos de datos altamente conectados. El componente principal de Neptune es un motor de base de datos de gráficos de alto rendimiento y personalizado. Este motor está optimizado para almacenar miles de millones de relaciones y consultar el gráfico con una latencia de milisegundos. Neptune es compatible con los populares lenguajes de consulta gráfica Apache TinkerPop Gremlin y SPARQL del W3C. Para obtener más información sobre Amazon Neptune, consulte [¿Qué es Amazon Neptune?](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html) en la *Guía del usuario de Amazon Neptune*. 

Sin una base de datos de gráficos como Neptune, probablemente modele datos altamente conectados en una base de datos relacional. Como los datos tienen conexiones potencialmente dinámicas, las aplicaciones que usan dichos orígenes de datos deben modelar consultas de datos conectados en SQL. Este enfoque requiere que escriba una capa adicional para convertir consultas de gráficos a SQL. Además, las bases de datos relacionales vienen con rigidez de esquema. Cualquier cambio en el esquema para modelar las conexiones cambiantes requiere tiempo de inactividad y mantenimiento adicional de la conversión de la consulta para admitir el nuevo esquema. El rendimiento de la consulta es otra gran restricción a tener en cuenta al diseñar sus aplicaciones.

Las bases de datos de gráficos pueden simplificar en gran medida dichas situaciones. Sin ningún esquema, las capas (Gremlin o SPARQL) de consulta de gráficos enriquecidos y los índices optimizados para la consulta de gráficos aumentan la flexibilidad y el rendimiento. La base de datos de gráficos de Amazon Neptune también tiene características empresariales como el cifrado en reposo, una capa de autorización con seguridad, copias de seguridad por defecto, compatibilidad Multi-AZ, compatibilidad con réplicas de lectura, etc.

Con él AWS DMS, puede migrar datos relacionales que modelan un gráfico altamente conectado a un punto final de destino de Neptune desde un punto final de origen de DMS para cualquier base de datos SQL compatible.

Para obtener más detalles, consulte lo siguiente.

**Topics**
+ [Información general sobre la migración a Amazon Neptune como destino](#CHAP_Target.Neptune.MigrationOverview)
+ [Especificación de la configuración del punto de conexión de Amazon Neptune como destino](#CHAP_Target.Neptune.EndpointSettings)
+ [Creación de un rol de servicio de IAM para acceder a Amazon Neptune como destino](#CHAP_Target.Neptune.ServiceRole)
+ [Especificación de reglas de asignación de gráficos mediante Gremlin y R2RML para Amazon Neptune como destino](#CHAP_Target.Neptune.GraphMapping)
+ [Tipos de datos para la migración de Gremlin y R2RML a Amazon Neptune como destino](#CHAP_Target.Neptune.DataTypes)
+ [Restricciones del uso de Amazon Neptune como destino](#CHAP_Target.Neptune.Limitations)

## Información general sobre la migración a Amazon Neptune como destino
<a name="CHAP_Target.Neptune.MigrationOverview"></a>

Antes de iniciar una migración a un objetivo de Neptune, cree los siguientes recursos en su AWS cuenta:
+ Un clúster de Neptune para el punto de conexión de destino. 
+ Una base de datos relacional SQL compatible con el punto AWS DMS final de origen. 
+ Un bucket de Amazon S3 para el punto de conexión de destino. Cree este depósito S3 en la misma AWS región que su clúster de Neptune. AWS DMS utiliza este depósito S3 como almacenamiento de archivos intermedio para los datos de destino que carga de forma masiva en la base de datos de Neptune. Para obtener más información sobre la creación de un bucket de S3, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) en la *Guía del usuario de Amazon Simple Storage Service.*
+ Un punto de conexión de nube privada virtual (VPC) de S3 en la misma VPC que el clúster de Neptune. 
+ Un rol AWS Identity and Access Management (de IAM) que incluye una política de IAM. Esta política especifica los permisos `GetObject`, `PutObject`, `DeleteObject` y `ListObject` del bucket de S3 de su punto de enlace de destino. Tanto AWS DMS Neptune como Neptune asumen esta función con acceso de IAM tanto al bucket S3 de destino como a la base de datos de Neptune. Para obtener más información, consulte [Creación de un rol de servicio de IAM para acceder a Amazon Neptune como destino](#CHAP_Target.Neptune.ServiceRole).

Después de obtener estos recursos, la configuración y el inicio de una migración a un destino de Neptune es similar a cualquier migración de carga completa mediante la consola o la API de DMS. Sin embargo, una migración a un destino de Neptune requiere algunos pasos únicos.

**Para migrar una base de datos AWS DMS relacional a Neptune**

1. Cree una instancia de replicación como se describe en [Creación de una instancia de replicación](CHAP_ReplicationInstance.Creating.md).

1. Cree y pruebe una base de datos relacional SQL compatible con el punto final AWS DMS de origen.

1. Cree y pruebe el punto de conexión de destino de la base de datos de Neptune. 

   Para conectar el punto de conexión de destino con la base de datos de Neptune, especifique el nombre del servidor para el punto de conexión del clúster de Neptune o para el punto de conexión de la instancia de escritor de Neptune. Además, especifique la carpeta del bucket S3 para almacenar sus archivos intermedios AWS DMS para cargarlos de forma masiva en la base de datos de Neptune. 

   Durante la migración, AWS DMS almacena todos los datos de destino migrados en esta carpeta de bucket de S3 hasta el tamaño máximo de archivo que especifique. Cuando el almacenamiento de este archivo alcanza este tamaño máximo, carga de AWS DMS forma masiva los datos de S3 almacenados en la base de datos de destino. Luego elimina la carpeta para permitir el almacenamiento de cualquier dato de destino adicional para su carga posterior en la base de datos de destino. Para obtener más información sobre cómo especificar esta configuración, consulte [Especificación de la configuración del punto de conexión de Amazon Neptune como destino](#CHAP_Target.Neptune.EndpointSettings).

1. Cree una tarea de replicación de carga completa con los recursos que ha creado en los pasos 1-3 y haga lo siguiente: 

   1. Use la asignación de la tabla de tareas como de costumbre para identificar esquemas, tablas y vistas de origen concreto para migrar de su base de datos relacional mediante las reglas de transformación y selección adecuadas. Para obtener más información, consulte [Uso del mapeo de tablas para especificar la configuración de tareas](CHAP_Tasks.CustomizingTasks.TableMapping.md). 

   1. Especifique las asignaciones de destino eligiendo una de las siguientes para especificar las reglas de asignación de las tablas y vistas de origen al gráfico de base de datos de destino de Neptune:
      + Gremlin JSON: para obtener información sobre el uso de JSON de Gremlin para cargar una base de datos de Neptune, consulte el [formato de datos de carga Gremlin](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) en la *Guía del usuario de Amazon Neptune*.
      + Lenguaje de asignación del RDB al marco de descripción de recursos (R2RML) de SPARQL: para obtener información sobre el uso de R2RML de SPARQL, consulte la especificación de W3C [R2RML: lenguaje de asignación de RDB a RDF](https://www.w3.org/TR/r2rml/).

   1. Realice una de las siguientes acciones:
      + Con la AWS DMS consola, especifique las opciones de mapeo de gráficos mediante las **reglas de mapeo de gráficos** en la página de **tareas Crear una base de datos para migrar**. 
      + Con la AWS DMS API, especifique estas opciones mediante el parámetro de `TaskData` solicitud de la llamada a la `CreateReplicationTask` API. 

      Para obtener más información y ejemplos de uso de JSON de Gremlin y R2RML de SPARQL para especificar reglas de asignación de gráficos, consulte [Especificación de reglas de asignación de gráficos mediante Gremlin y R2RML para Amazon Neptune como destino](#CHAP_Target.Neptune.GraphMapping).

1. Inicie la replicación de la tarea de migración.

## Especificación de la configuración del punto de conexión de Amazon Neptune como destino
<a name="CHAP_Target.Neptune.EndpointSettings"></a>

Para crear o modificar un punto de enlace de destino, puede usar la consola o las operaciones de la API `CreateEndpoint` o `ModifyEndpoint`. 

**Para un destino de Neptune en la AWS DMS consola, especifique la **configuración específica del punto final en la página Crear punto** **final o Modificar punto final** de la consola.** En `CreateEndpoint` y `ModifyEndpoint`, especifique los parámetros de solicitud de la opción `NeptuneSettings`. El siguiente ejemplo muestra cómo hacer esto usando la CLI. 

```
dms create-endpoint --endpoint-identifier my-neptune-target-endpoint
--endpoint-type target --engine-name neptune 
--server-name my-neptune-db.cluster-cspckvklbvgf.us-east-1.neptune.amazonaws.com 
--port 8192
--neptune-settings 
     '{"ServiceAccessRoleArn":"arn:aws:iam::123456789012:role/myNeptuneRole",
       "S3BucketName":"amzn-s3-demo-bucket",
       "S3BucketFolder":"amzn-s3-demo-bucket-folder",
       "ErrorRetryDuration":57,
       "MaxFileSize":100, 
       "MaxRetryCount": 10, 
       "IAMAuthEnabled":false}‘
```

Aquí, la opción `--server-name` de la CLI especifica el nombre del servidor del punto de conexión del escritor del clúster de Neptune. O puede especificar el nombre del servidor para un punto de conexión de instancia del escritor de Neptune. 

Los parámetros de la solicitud de la opción `--neptune-settings` son los siguientes:
+ `ServiceAccessRoleArn`: (requerido) el nombre de recurso de Amazon (ARN) del rol de servicio que ha creado para el punto de conexión de destino de Neptune. Para obtener más información, consulte [Creación de un rol de servicio de IAM para acceder a Amazon Neptune como destino](#CHAP_Target.Neptune.ServiceRole).
+ `S3BucketName`: (requerido) el nombre del bucket de S3 en el que DMS puede almacenar temporalmente datos de gráficos migrados en archivos .csv antes de cargarlos en masa en la base de datos de destino de Neptune. DMS asigna los datos de origen SQL a datos gráficos antes de almacenarlos en estos archivos.csv.
+ `S3BucketFolder`: (requerido) una ruta de carpeta en la que desea que DMS almacene datos de gráficos migrados en el bucket de S3 especificado por `S3BucketName`.
+ `ErrorRetryDuration`: (opcional) el número de milisegundos para DMS que espera para volver a intentar una carga en masa de datos de gráficos migrados a la base de datos de destino de Neptune antes de generar un error. El valor predeterminado es 250.
+ `MaxFileSize`: (opcional) el tamaño máximo en KB de datos de gráficos migrados almacenados en un archivo .csv antes de que DMS cargue en masa los datos en la base de datos de destino de Neptune. El valor predeterminado es 1.048.576 KB (1 GB). Si se realiza correctamente, DMS borra el bucket y está listo para almacenar el siguiente lote de datos de gráficos migrados.
+ `MaxRetryCount`: (opcional) el número de veces que DMS vuelve a intentar una carga en masa de datos de gráficos migrados a la base de datos de destino de Neptune antes de generar un error. El valor predeterminado es 5.
+ `IAMAuthEnabled`: (opcional) si desea habilitar la autorización de IAM para este punto de conexión, establezca este parámetro en `true` y adjunte el documento de política de IAM correspondiente al rol de servicio especificado por `ServiceAccessRoleArn`. El valor predeterminado es `false`.

## Creación de un rol de servicio de IAM para acceder a Amazon Neptune como destino
<a name="CHAP_Target.Neptune.ServiceRole"></a>

Para acceder a Neptune como destino, cree un rol de servicio mediante IAM. En función de la configuración del punto de conexión de Neptune, adjunte a este rol alguna o todas las políticas de IAM y documentos de confianza. Cuando crea el punto de conexión de Neptune, proporciona el ARN de este rol de servicio. De este modo, AWS DMS Amazon Neptune podrá obtener permisos para acceder tanto a Neptune como a su bucket de Amazon S3 asociado.

Si establece el parámetro `IAMAuthEnabled` de `NeptuneSettings` en `true` en la configuración del punto de conexión de Neptune, adjunte una política de IAM como la siguiente al rol de servicio. Si establece `IAMAuthEnabled` como `false`, puede ignorar esta política.

```
// Policy to access Neptune

    {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "neptune-db:*",
                "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-CLG7H7FHK54AZGHEH6MNS55JKM/*"
            }
        ]
    }
```

La política de IAM anterior permite acceso completo al clúster de destino de Neptune especificado por `Resource`.

Adjunte una política de IAM como la siguiente a su rol de servicio. Esta política permite a DMS almacenar de forma temporal datos de gráficos migrados en el bucket de S3 que ha creado para cargarlos por lotes a la base de datos de destino de Neptune.

```
//Policy to access S3 bucket

{
	"Version": "2012-10-17",		 	 	 
	"Statement": [{
			"Sid": "ListObjectsInBucket0",
			"Effect": "Allow",
			"Action": "s3:ListBucket",
			"Resource": [
				"arn:aws:s3:::amzn-s3-demo-bucket"
			]
		},
		{
			"Sid": "AllObjectActions",
			"Effect": "Allow",
			"Action": ["s3:GetObject",
				"s3:PutObject",
				"s3:DeleteObject"
			],

			"Resource": [
				"arn:aws:s3:::amzn-s3-demo-bucket/"
			]
		},
		{
			"Sid": "ListObjectsInBucket1",
			"Effect": "Allow",
			"Action": "s3:ListBucket",
			"Resource": [
				"arn:aws:s3:::amzn-s3-demo-bucket",
				"arn:aws:s3:::amzn-s3-demo-bucket/"
			]
		}
	]
}
```

La política de IAM anterior permite a la cuenta consultar el contenido del bucket de S3 (`arn:aws:s3:::amzn-s3-demo-bucket`) creado para el destino de Neptune. También permite que su cuenta funcione completamente con el contenido de todos los archivos y carpetas del bucket (`arn:aws:s3:::amzn-s3-demo-bucket/`).

Edite la relación de confianza y asocie la siguiente función de IAM a su función de servicio para permitir que AWS DMS tanto el servicio de base de datos Amazon Neptune asuman la función.

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

****  

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

------

Para obtener información sobre cómo especificar este rol de servicio para el punto de conexión de destino de Neptune, consulte [Especificación de la configuración del punto de conexión de Amazon Neptune como destino](#CHAP_Target.Neptune.EndpointSettings).

## Especificación de reglas de asignación de gráficos mediante Gremlin y R2RML para Amazon Neptune como destino
<a name="CHAP_Target.Neptune.GraphMapping"></a>

Las reglas de asignación de gráficos que cree especifican cómo se cargan los datos extraídos de un origen de base de datos relacional SQL en un destino de clúster Neptune de base de datos. El formato de estas reglas de mapeo varía en función de si se utilizan para cargar datos de gráficos de propiedades con Apache TinkerPop Gremlin o datos del Resource Description Framework (RDF) con R2RML. A continuación, puede encontrar información sobre estos formatos y dónde obtener más información.

Puede especificar estas reglas de asignación al crear la tarea de migración mediante la consola o la API de DMS. 

Mediante la consola, especifique estas reglas de asignación mediante **Graph mapping rules (Reglas de asignación de gráficos)** en la página **Create database migration task (Crear migración de base de datos)**. En **Graph mapping rules (Reglas de asignación de gráficos)**, puede introducir y editar las reglas de asignación directamente mediante el editor proporcionado. También puede buscar un archivo que contenga las reglas de asignación en el formato de asignación de gráficos adecuado. 

Mediante la API, especifique estas opciones mediante el parámetro de solicitud `TaskData` de la llamada a la API `CreateReplicationTask`. Establezca `TaskData` en la ruta de un archivo que contiene las reglas de asignación en el formato de asignación de gráficos adecuado.

### Reglas de mapeo de gráficos para generar datos de gráficos de propiedades mediante Gremlin
<a name="CHAP_Target.Neptune.GraphMapping.Gremlin"></a>

Usando Gremlin para generar los datos de gráficos de propiedades, especifique un objeto JSON con una regla de asignación para cada entidad de gráfico que se generará a partir de los datos de origen. El formato de este JSON se define específicamente para la carga por lotes de Amazon Neptune. La plantilla siguiente muestra el aspecto de cada regla en este objeto.

```
{
    "rules": [
        {
            "rule_id": "(an identifier for this rule)",
            "rule_name": "(a name for this rule)",
            "table_name": "(the name of the table or view being loaded)",
            "vertex_definitions": [
                {
                    "vertex_id_template": "{col1}",
                    "vertex_label": "(the vertex to create)",
                    "vertex_definition_id": "(an identifier for this vertex)",
                    "vertex_properties": [
                        {
                            "property_name": "(name of the property)",
                            "property_value_template": "{col2} or text",
                            "property_value_type": "(data type of the property)"
                        }
                    ]
                }
            ]
        },
        {
            "rule_id": "(an identifier for this rule)",
            "rule_name": "(a name for this rule)",
            "table_name": "(the name of the table or view being loaded)",
            "edge_definitions": [
                {
                    "from_vertex": {
                        "vertex_id_template": "{col1}",
                        "vertex_definition_id": "(an identifier for the vertex referenced above)"
                    },
                    "to_vertex": {
                        "vertex_id_template": "{col3}",
                        "vertex_definition_id": "(an identifier for the vertex referenced above)"
                    },
                    "edge_id_template": {
                        "label": "(the edge label to add)",
                        "template": "{col1}_{col3}"
                    },
                    "edge_properties":[
                        {
                            "property_name": "(the property to add)",
                            "property_value_template": "{col4} or text",
                            "property_value_type": "(data type like String, int, double)"
                        }
                    ]
                }
            ]
        }
    ]
}
```

La presencia de una etiqueta de vértice implica que el vértice se está creando aquí. Su ausencia implica que el vértice es creado por una fuente diferente, y esta definición solo añade propiedades de vértice. Especifique tantas definiciones de borde y vértice como sea necesario para especificar las asignaciones de su origen de base de datos relacional entero.

A continuación se muestra una regla de ejemplo para una tabla de `employee`.

```
{
    "rules": [
        {
            "rule_id": "1",
            "rule_name": "vertex_mapping_rule_from_nodes",
            "table_name": "nodes",
            "vertex_definitions": [
                {
                    "vertex_id_template": "{emp_id}",
                    "vertex_label": "employee",
                    "vertex_definition_id": "1",
                    "vertex_properties": [
                        {
                            "property_name": "name",
                            "property_value_template": "{emp_name}",
                            "property_value_type": "String"
                        }
                    ]
                }
            ]
        },
        {
            "rule_id": "2",
            "rule_name": "edge_mapping_rule_from_emp",
            "table_name": "nodes",
            "edge_definitions": [
                {
                    "from_vertex": {
                        "vertex_id_template": "{emp_id}",
                        "vertex_definition_id": "1"
                    },
                    "to_vertex": {
                        "vertex_id_template": "{mgr_id}",
                        "vertex_definition_id": "1"
                    },
                    "edge_id_template": {
                        "label": "reportsTo",
                        "template": "{emp_id}_{mgr_id}"
                    },
                    "edge_properties":[
                        {
                            "property_name": "team",
                            "property_value_template": "{team}",
                            "property_value_type": "String"
                        }
                    ]
                }
            ]
        }
    ]
}
```

Aquí, las definiciones de vértice y borde asignan una relación de informe de un nodo `employee` con el ID de empleado (`EmpID`) y un nodo `employee` con un ID de empleado (`managerId`).

Para obtener más información acerca de la creación de reglas de asignación de gráficos mediante el JSON de Gremlin, consulte [Formato de datos de carga Gremlin](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) en la *Guía del usuario de Amazon Neptune*.

### Reglas de RDF/SPARQL mapeo gráfico para generar datos
<a name="CHAP_Target.Neptune.GraphMapping.R2RML"></a>

Si está cargando datos de RDF para realizar consultas mediante SPARQL, escriba las reglas de asignación de gráficos en R2RML. R2RML es un lenguaje W3C estándar para asignar datos relacionales a RDF. En un archivo R2RML, una *asignación de triples* (por ejemplo, el `<#TriplesMap1>` a continuación) especifica una regla para traducir cada fila de una tabla lógica a cero o más triples de RDF. Una *asignación de asunto* (por ejemplo, cualquier `rr:subjectMap` a continuación) especifica una regla para generar los sujetos de los triples de RDF generados por las asignaciones de triples. Una *asignación de predicación-objeto* (por ejemplo, cualquier `rr:predicateObjectMap` a continuación) es una función que crea uno o más pares de predicación-objeto para cada fila de tabla lógica de una tabla lógica.

A continuación se muestra un sencillo ejemplo de `nodes`.

```
@prefix rr: <http://www.w3.org/ns/r2rml#>.
@prefix ex: <http://example.com/ns#>.

<#TriplesMap1>
    rr:logicalTable [ rr:tableName "nodes" ];
    rr:subjectMap [
        rr:template "http://data.example.com/employee/{id}";
        rr:class ex:Employee;
    ];
    rr:predicateObjectMap [
        rr:predicate ex:name;
        rr:objectMap [ rr:column "label" ];
    ]
```

En el ejemplo anterior, la asignación define los nodos de gráficos asignados a partir de una tabla de empleados.

A continuación se muestra otro sencillo ejemplo de una tabla de `Student`.

```
@prefix rr: <http://www.w3.org/ns/r2rml#>.
@prefix ex: <http://example.com/#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.

<#TriplesMap2>
    rr:logicalTable [ rr:tableName "Student" ];
    rr:subjectMap   [ rr:template "http://example.com/{ID}{Name}";
                      rr:class foaf:Person ];
    rr:predicateObjectMap [
        rr:predicate ex:id ;
        rr:objectMap  [ rr:column "ID";
                        rr:datatype xsd:integer ]
    ];
    rr:predicateObjectMap [
        rr:predicate foaf:name ;
        rr:objectMap  [ rr:column "Name" ]
    ].
```

En el ejemplo anterior, el mapeo define los nodos gráficos que mapean friend-of-a-friend las relaciones entre las personas de una `Student` tabla.

Para obtener más información acerca de la creación de reglas de mapeo de gráficos mediante SPARQL R2RML, consulte la especificación de W3C [R2RML: RDB to RDF mapping language](https://www.w3.org/TR/r2rml/).

## Tipos de datos para la migración de Gremlin y R2RML a Amazon Neptune como destino
<a name="CHAP_Target.Neptune.DataTypes"></a>

AWS DMS realiza la asignación de tipos de datos desde el punto final de origen de SQL al destino de Neptune de dos maneras. La forma en que los utilice depende del formato de asignación de gráficos que utilice para cargar la base de datos de Neptune: 
+ Apache TinkerPop Gremlin, mediante una representación en JSON de los datos de migración.
+ SPARQL de W3C, mediante una representación R2RML de los datos de migración. 

Para obtener más información sobre estos dos formatos de asignación de gráficos, consulte [Especificación de reglas de asignación de gráficos mediante Gremlin y R2RML para Amazon Neptune como destino](#CHAP_Target.Neptune.GraphMapping).

A continuación, puede encontrar descripciones de las asignaciones de tipos de datos para cada formato.

### Mapeo de tipos de datos de origen de SQL a destino de Gremlin
<a name="CHAP_Target.Neptune.DataTypes.Gremlin"></a>

En la siguiente tabla se muestran las asignaciones de tipos de datos de un origen SQL a un destino con formato Gremlin. 

AWS DMS asigna cualquier tipo de datos fuente SQL que no figure en la lista a un Gremlin. `String`



[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.Neptune.html)

Para obtener más información sobre los tipos de datos de Gremlin para cargar Neptune, consulte [Tipos de datos de Gremlin](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html#bulk-load-tutorial-format-gremlin-datatypes) en la *Guía del usuario de Neptune.*

### Mapeo de tipos de datos de origen de SQL a destino de R2RML (RDF)
<a name="CHAP_Target.Neptune.DataTypes.R2RML"></a>

En la tabla siguiente se muestran las asignaciones de tipos de datos de un origen SQL a un destino con formato R2RML.

Todos los tipos de datos RDF listados distinguen mayúsculas de minúsculas, excepto el RDF literal. AWS DMS asigna cualquier tipo de datos de origen SQL que no figure en la lista a un literal RDF. 

Un *RDF literal* es uno de entre una variedad de formas léxicas literales y tipos de datos. Para obtener más información, consulte [RDF literals](https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-Literal) en la especificación de W3C *Marco de descripción de recursos (RDF): Conceptos y sintaxis abstracta*.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.Neptune.html)

Para obtener más información sobre los tipos de datos RDF para cargar Neptune y las asignaciones a tipos de datos de origen de SQL, consulte [Conversiones de tipos de datos](https://www.w3.org/TR/r2rml/#datatype-conversions) en la especificación de W3C *R2RML: Lenguaje de asignación RBD a RDF*.

## Restricciones del uso de Amazon Neptune como destino
<a name="CHAP_Target.Neptune.Limitations"></a>

Al utilizar Neptune como destino se aplican las siguientes restricciones:
+ AWS DMS actualmente solo admite tareas de carga completa para la migración a un objetivo de Neptune. No se admite la migración de captura de datos (CDC) a un destino de Neptune.
+ Asegúrese de que elimina todos los datos de la base de datos de Neptune de destino antes de empezar la tarea de migración, como en los siguientes ejemplos.

  Para borrar todos los datos (vértices y bordes) que hay en el gráfico, ejecute el siguiente comando Gremlin.

  ```
  gremlin> g.V().drop().iterate()
  ```

  Para borrar los vértices que tienen la etiqueta `'customer'`, ejecute el siguiente comando Gremlin.

  ```
  gremlin> g.V().hasLabel('customer').drop()
  ```
**nota**  
Puede llevar algún tiempo eliminar un conjunto de datos grande. Es posible que desee iterar `drop()` con un límite, por ejemplo, `limit(1000)`.

  Para borrar las aristas que tienen la etiqueta `'rated'`, ejecute el siguiente comando Gremlin.

  ```
  gremlin> g.E().hasLabel('rated').drop()
  ```
**nota**  
Puede llevar algún tiempo eliminar un conjunto de datos grande. Es posible que desee iterar `drop()` con un límite, por ejemplo `limit(1000)`.
+ La operación `DescribeTableStatistics` de la API de DMS puede devolver resultados inexactos sobre una tabla dada debido a la naturaleza de las estructuras de datos de gráficos de Neptune.

  Durante la migración, AWS DMS escanea cada tabla de origen y utiliza el mapeo de gráficos para convertir los datos de origen en un gráfico de Neptune. Los datos convertidos se almacenan primero en la carpeta del bucket de S3 en el punto de enlace de destino. Si se analiza el origen y estos datos de S3 intermedios se generan correctamente, `DescribeTableStatistics` asume que los datos se han cargado correctamente en la base de datos de destino de Neptune. Pero esto no siempre es cierto. Para verificar que los datos se han cargado correctamente en una tabla, compare los valores de retorno de `count()` en ambos extremos de la migración de esa tabla. 

  En el siguiente ejemplo, AWS DMS ha cargado una `customer` tabla de la base de datos de origen, a la que se le asigna la etiqueta `'customer'` en el gráfico de la base de datos de Neptune de destino. Puede asegurarse de que esta etiqueta se escribe en la base de datos de destino. Para ello, compare la cantidad de filas `customer` disponibles en la base de datos de origen con la cantidad de filas etiquetadas con `'customer'` cargadas en la base de datos de destino de Neptune después de la finalización de la tarea.

  Para obtener la cantidad de filas de cliente disponibles en la base de datos de origen mediante SQL, ejecute lo siguiente.

  ```
  select count(*) from customer;
  ```

  Para obtener la cantidad de filas etiquetadas como `'customer'` cargadas en el gráfico de la base de datos de destino mediante Gremlin, ejecute lo siguiente.

  ```
  gremlin> g.V().hasLabel('customer').count()
  ```
+ Actualmente, si una sola tabla no se carga, se produce un error en toda la tarea. A diferencia de un destino de base de datos relacional, los datos de Neptune están altamente conectados, lo que hace que en muchos casos sea imposible realizar una tarea. Si no se puede reanudar una tarea correctamente debido a esta clase de error de carga de datos, cree una nueva tarea para cargar la tabla que no se ha podido cargar. Antes de ejecutar esta nueva tarea, borre manualmente la tabla parciamente cargada del destino de Neptune.
**nota**  
Puede reanudar una tarea con un error de migración a un destino de Neptune si el error se puede recuperar (por ejemplo, un error de tránsito de red).
+ AWS DMS es compatible con la mayoría de los estándares de R2RML. Sin embargo, AWS DMS no es compatible con ciertos estándares de R2RML, incluidas las expresiones inversas, las uniones y las vistas. Una solución alternativa para una vista R2RML consiste en crear una vista SQL personalizada correspondiente en la base de datos de origen. En la tarea de migración, utilice la asignación de tablas para elegir la vista como entrada. A continuación, asigne la vista a una tabla que R2RML consume para generar datos de gráficos.
+ Al migrar datos de origen con tipos de datos SQL no admitidos, puede haber una pérdida de precisión en los datos de destino resultantes. Para obtener más información, consulte [Tipos de datos para la migración de Gremlin y R2RML a Amazon Neptune como destino](#CHAP_Target.Neptune.DataTypes).
+ AWS DMS no admite la migración de datos LOB a un objetivo de Neptune.

# Uso de Redis OSS como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Redis"></a>

Redis OSS es un almacén de estructura de datos en memoria de código abierto que se utiliza como base de datos, caché y agente de mensajes. La administración de datos en memoria puede provocar que las operaciones de lectura o escritura tarden menos de un milisegundo y que se realicen cientos de millones de operaciones por segundo. Como almacén de datos en memoria, Redis OSS potencia las aplicaciones más exigentes que requieren tiempos de respuesta inferiores a un milisegundo.

Con él AWS DMS, puede migrar datos de cualquier base de datos de origen compatible a un almacén de datos de Redis OSS de destino con un tiempo de inactividad mínimo. Para obtener información adicional sobre Redis OSS, consulte la [Documentación de Redis OSS](https://redis.io/documentation).

Además del OSS de Redis local, es AWS Database Migration Service compatible con lo siguiente:
+ [Amazon ElastiCache (Redis OSS)](https://aws.amazon.com/elasticache/redis/) como almacén de datos de destino. ElastiCache (Redis OSS) funciona con sus clientes de Redis OSS y utiliza el formato de datos abierto de Redis OSS para almacenar sus datos.
+ [Amazon MemoryDB](https://aws.amazon.com/memorydb/) como almacén de datos de destino. MemoryDB es compatible con Redis OSS y le permite crear aplicaciones utilizando todas las estructuras de datos y comandos de Redis OSS que se utilizan en la actualidad. APIs

Para obtener información adicional sobre cómo trabajar con Redis OSS como objetivo AWS DMS, consulte las siguientes secciones: 

**Topics**
+ [Requisitos previos para utilizar un clúster de Redis OSS como destino para AWS DMS](#CHAP_Target.Redis.Prerequisites)
+ [Limitaciones a la hora de utilizar Redis como objetivo para AWS Database Migration Service](#CHAP_Target.Redis.Limitations)
+ [Migración de datos de una base de datos relacional o no relacional a un destino de Redis OSS](#CHAP_Target.Redis.Migrating)
+ [Especificación de la configuración del punto de conexión para Redis OSS como destino](#CHAP_Target.Redis.EndpointSettings)

## Requisitos previos para utilizar un clúster de Redis OSS como destino para AWS DMS
<a name="CHAP_Target.Redis.Prerequisites"></a>

DMS admite un destino de Redis OSS en las instalaciones en una configuración independiente o como clúster de Redis OSS en el que los datos se *particionan* de forma automática en varios nodos. La fragmentación es el proceso de separar los datos en partes más pequeñas, denominados particiones, que se distribuyen en varios servidores o nodos. En efecto, una partición es una partición de datos que contiene un subconjunto del conjunto total de datos y sirve para cubrir una parte de la carga de trabajo total.

Dado que Redis OSS es un almacén de datos NoSQL de clave-valor, la convención de nomenclatura de claves de Redis OSS que se debe utilizar cuando el origen es una base de datos relacional es **schema-name.table-name.primary-key**. En Redis OSS, la clave y el valor no deben contener el carácter especial %. De lo contrario, DMS omite el registro. 

**nota**  
Si utiliza ElastiCache (Redis OSS) como destino, el DMS solo admite configuraciones habilitadas en *modo clúster*. Para obtener más información sobre el uso de la versión 6.x o superior ElastiCache (Redis OSS) para crear un almacén de datos de destino habilitado para el modo de clúster, consulte [Introducción](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/GettingStarted.html) en la Guía del usuario de *Amazon ElastiCache (Redis OSS)*. 

Antes de iniciar la migración de una base de datos, lance el clúster de Redis OSS con los siguientes criterios.
+ El clúster tiene una o varias particiones.
+ Si utiliza un destino ElastiCache (Redis OSS), asegúrese de que su clúster no utilice un control de acceso basado en roles de IAM. En su lugar, utilice la autenticación de Redis OSS para autenticar a los usuarios.
+ Habilite Multi-AZ (zonas de disponibilidad).
+ Asegúrese de que el clúster tenga suficiente memoria disponible para ajustar los datos a migrar desde la base de datos. 
+ Asegúrese de que el clúster de Redis OSS de destino esté libre de todos los datos antes de empezar la tarea de migración inicial.

Debe determinar los requisitos de seguridad para la migración de datos antes de crear la configuración del clúster. DMS admite la migración a los grupos de replicación de destino, independientemente de la configuración de cifrado. Sin embargo, solo puede habilitar o desactivar el cifrado al crear la configuración del clúster.

## Limitaciones a la hora de utilizar Redis como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Redis.Limitations"></a>

Las siguientes restricciones se aplican cuando se usa Redis OSS como destino:
+ Dado que Redis OSS es un almacén de datos de clave-valor NoSQL, la convención de nomenclatura de claves de Redis OSS que se debe utilizar cuando el origen es una base de datos relacional es `schema-name.table-name.primary-key`. 
+ En Redis OSS, la clave y el valor no pueden contener el carácter especial `%`. De lo contrario, DMS omite el registro.
+ DMS no migrará las filas que contengan el carácter `%`.
+ DMS no migrará los campos que contengan el carácter `%` en el nombre del campo.
+ No se admite el modo LOB completo.
+  No se admite una autoridad de certificación (CA) privada cuando se utiliza ElastiCache (Redis OSS) como destino.
+ AWS DMS no admite datos de origen que contengan `'\0'` caracteres incrustados cuando se utiliza Redis como punto final de destino. Los datos que contengan `'\0'` caracteres incrustados se truncarán en el primer carácter. `'\0'`

## Migración de datos de una base de datos relacional o no relacional a un destino de Redis OSS
<a name="CHAP_Target.Redis.Migrating"></a>

Puede migrar datos de cualquier almacén de datos SQL o NoSQL de origen directamente a un destino de Redis OSS. La configuración y el inicio de una migración a un destino de Redis OSS es similar a cualquier migración de carga completa y captura de datos de cambios mediante la API o la consola de DMS. Para realizar una migración de base de datos a un destino de Redis OSS, haga lo siguiente.
+ Cree una instancia de replicación que efectúe todos los procesos para la migración. Para obtener más información, consulte [Creación de una instancia de replicación](CHAP_ReplicationInstance.Creating.md).
+ Especifique un punto de conexión de origen. Para obtener más información, consulte [Creación de puntos de enlace de origen y destino](CHAP_Endpoints.Creating.md).
+ Busque el nombre de DNS y el número de puerto del clúster.
+ Descargue un paquete de certificados que pueda usar para verificar las conexiones SSL.
+ Especifique un punto de conexión de destino, tal y como se describe a continuación.
+ Crear una tarea o conjunto de tareas para definir qué tablas y procesos de replicación desea utilizar. Para obtener más información, consulte [Creación de una tarea](CHAP_Tasks.Creating.md).
+ Migre los datos de la base de datos de origen al clúster de destino.

Puede iniciar una migración de base de datos de una de las dos formas:

1. Puede elegir la AWS DMS consola y realizar allí cada paso.

1. Puede usar el AWS Command Line Interface (AWS CLI). [Para obtener más información sobre el uso de la CLI con AWS DMS, consulte AWS CLIAWS DMS.](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)

**Búsqueda del nombre de DNS y el número de puerto del clúster**
+ Utilice el siguiente AWS CLI comando para `replication-group-id` proporcionarle el nombre de su grupo de replicación.

  ```
  aws elasticache describe-replication-groups --replication-group-id myreplgroup
  ```

  Aquí, el resultado muestra el nombre de DNS en el atributo `Address` y el número de puerto en el atributo `Port` del nodo principal del clúster. 

  ```
   ...
  "ReadEndpoint": {
  "Port": 6379,
  "Address": "myreplgroup-
  111.1abc1d.1111.uuu1.cache.example.com"
  }
  ...
  ```

  Si utiliza MemoryDB como destino, utilice el comando de la AWS CLI siguiente para proporcionar una dirección de punto de conexión al clúster de Redis OSS. 

  ```
  aws memorydb describe-clusters --clusterid clusterid
  ```

**Descarga de un paquete de certificados para usar para verificar las conexiones SSL**
+ Ingrese el siguiente comando `wget` en la línea de comandos. Wget es una herramienta de utilidad gratuita de línea de comandos de GNU que se utiliza para descargar archivos de Internet.

  ```
  wget https://s3.aws-api-domain/rds-downloads/rds-combined-ca-bundle.pem
  ```

  Aquí, `aws-api-domain` complete el dominio de Amazon S3 de su AWS región necesario para acceder al bucket de S3 especificado y al rds-combined-ca-bundle archivo.pem que proporciona.

**Para crear un punto final de destino mediante la consola AWS DMS**

Este punto de conexión es para el destino de Redis OSS que ya está en ejecución. 
+ En la consola, elija **Puntos de conexión** del panel de navegación y, a continuación, elija **Crear punto de conexión**. La tabla siguiente describe la configuración.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.Redis.html)

Cuando haya terminado de proporcionar toda la información para el punto de conexión, AWS DMS crea el punto de conexión de destino de Redis OSS para usarlo durante la migración de la base de datos.

Para obtener información sobre cómo crear una tarea de migración e iniciar la migración de la base de datos, consulte [Creación de una tarea](CHAP_Tasks.Creating.md).

## Especificación de la configuración del punto de conexión para Redis OSS como destino
<a name="CHAP_Target.Redis.EndpointSettings"></a>

Para crear o modificar un punto de enlace de destino, puede usar la consola o las operaciones de la API `CreateEndpoint` o `ModifyEndpoint`. 

**Para un destino de Redis OSS en la AWS DMS consola, especifique la **configuración específica del punto final en la página Crear punto** **final o Modificar dispositivo final** de la consola.**

Cuando utilice las operaciones de API `CreateEndpoint` y `ModifyEndpoint`, especifique los parámetros de solicitud de la opción `RedisSettings`. El siguiente ejemplo muestra cómo hacer esto mediante la AWS CLI.

```
aws dms create-endpoint --endpoint-identifier my-redis-target
--endpoint-type target --engine-name redis --redis-settings 
'{"ServerName":"sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com","Port":6379,"AuthType":"auth-token", 
 "SslSecurityProtocol":"ssl-encryption", "AuthPassword":"notanactualpassword"}'

{
    "Endpoint": {
        "EndpointIdentifier": "my-redis-target",
        "EndpointType": "TARGET",
        "EngineName": "redis",
        "EngineDisplayName": "Redis",
        "TransferFiles": false,
        "ReceiveTransferredFiles": false,
        "Status": "active",
        "KmsKeyId": "arn:aws:kms:us-east-1:999999999999:key/x-b188188x",
        "EndpointArn": "arn:aws:dms:us-east-1:555555555555:endpoint:ABCDEFGHIJKLMONOPQRSTUVWXYZ",
        "SslMode": "none",
        "RedisSettings": {
            "ServerName": "sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com",
            "Port": 6379,
            "SslSecurityProtocol": "ssl-encryption",
            "AuthType": "auth-token"
        }
    }
}
```

Los parámetros `--redis-settings` son:
+ `ServerName`: (obligatorio) de tipo `string`, especifica el clúster de Redis OSS al que se migrarán los datos y se encuentra en la misma VPC.
+ `Port`: (obligatorio) de tipo `number`, el valor del puerto utilizado para acceder al punto de conexión.
+ `SslSecurityProtocol`: (opcional) los valores válidos son `plaintext` y `ssl-encryption`. El valor predeterminado es `ssl-encryption`. 

  La opción de `plaintext` no ofrece cifrado de seguridad de la capa de transporte (TLS) para el tráfico entre el punto de conexión y la base de datos. 

  Se utiliza `ssl-encryption` para establecer una conexión cifrada. `ssl-encryption` no requiere un ARN de una entidad de certificación (CA) SSL para verificar el certificado de un servidor, pero se puede identificar uno opcionalmente mediante la configuración `SslCaCertificateArn`. Si no se proporciona un ARN de entidad de certificación, DMS utiliza la entidad de certificación raíz de Amazon.

  Cuando se utiliza un destino de Redis OSS en las instalaciones, se puede utilizar `SslCaCertificateArn` para importar una autoridad de certificación (CA) pública o privada a DMS y proporcionar ese ARN para la autenticación del servidor. No se admite una CA privada cuando se utiliza ElastiCache (Redis OSS) como destino.
+ `AuthType`: (obligatorio) indica el tipo de autenticación que se realiza cuando se conecta a Redis OSS. Los valores válidos son `none`, `auth-token` y `auth-role`.

  La `auth-token` opción requiere que se proporcione un *AuthPassword* «», mientras que la `auth-role` opción requiere que se proporcionen *AuthUserName* «» y *AuthPassword* «».

# Uso de Babelfish como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Babelfish"></a>

Puede migrar datos de una base de datos fuente de Microsoft SQL Server a un destino de Babelfish utilizando. AWS Database Migration Service

Babelfish for Aurora PostgreSQL amplía la base de datos de edición compatible con Amazon Aurora PostgreSQL con la capacidad de aceptar conexiones de bases de datos de clientes de Microsoft SQL Server. Esto permite que las aplicaciones creadas originalmente para SQL Server funcionen directamente con Aurora PostgreSQL con pocos cambios de código en comparación con una migración tradicional y sin cambiar los controladores de base de datos. 

Para obtener información sobre las versiones de Babelfish AWS DMS compatibles como destino, consulte. [Objetivos para AWS DMS](CHAP_Introduction.Targets.md) Las versiones anteriores de Babelfish en Aurora PostgreSQL requieren una actualización antes de utilizar el punto de conexión de Babelfish.

**nota**  
El punto de conexión de destino de Aurora PostgreSQL es la forma preferida de migrar datos a Babelfish. Para obtener más información, consulte [Uso de Babelfish para Aurora PostgreSQL como destino](CHAP_Target.PostgreSQL.md#CHAP_Target.PostgreSQL.Babelfish). 

Para obtener información sobre el uso de Babelfish como punto de conexión de la base de datos, consulte [Babelfish para Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) en la *Guía del usuario de Amazon Aurora para Aurora* 

## Requisitos previos para utilizar Babelfish como objetivo para AWS DMS
<a name="CHAP_Target.Babelfish.Prerequisites"></a>

Debe crear sus tablas antes de migrar los datos para asegurarse de que AWS DMS utiliza los tipos de datos y los metadatos de las tablas correctos. Si no crea las tablas en el destino antes de ejecutar la migración, es AWS DMS posible que cree las tablas con permisos y tipos de datos incorrectos. Por ejemplo, AWS DMS crea una columna de fecha y hora como binaria (8) y no proporciona la funcionalidad esperada timestamp/rowversion .

**Preparación y creación de las tablas antes de la migración**

1. Ejecute las instrucciones DDL de creación de tablas que incluyan cualquier restricción única, claves principales o restricciones predeterminadas. 

   No incluya restricciones de clave externa ni instrucciones DDL para objetos como vistas, procedimientos almacenados, funciones o desencadenadores. Puede aplicarlos después de migrar la base de datos de origen.

1. Identifique las columnas de identidad, columnas calculadas o columnas que contengan tipos de datos de versión de fila o marca temporal para las tablas. A continuación, cree las reglas de transformación necesarias para gestionar los problemas conocidos al ejecutar la tarea de migración. Para obtener más información, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

1. Identifique las columnas con tipos de datos que Babelfish no admite. A continuación, cambie las columnas afectadas de la tabla de destino para utilizar los tipos de datos compatibles o cree una regla de transformación que las elimine durante la tarea de migración. Para obtener más información, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

   En la siguiente tabla se muestran los tipos de datos de origen que Babelfish no admite y el correspondiente tipo de datos de destino que se recomienda utilizar.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.Babelfish.html)

**Para establecer el nivel de unidades de capacidad (ACUs) de Aurora para la base de datos de origen Aurora PostgreSQL Serverless V2**

Puede mejorar el rendimiento de la tarea de AWS DMS migración antes de ejecutarla estableciendo el valor mínimo de la ACU.
+ En la ventana de **configuración de capacidad de Severless v2**, establezca un nivel **mínimo ACUs** o razonable para su clúster de base de datos Aurora. **2**

  Para obtener información adicional sobre cómo establecer unidades de capacidad de Aurora, consulte [Elección del rango de capacidad máxima de Aurora sin servidor v2 para un clúster de Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html) en la *Guía del usuario de Amazon Aurora* 

Tras ejecutar AWS DMS la tarea de migración, puede restablecer el valor mínimo de su base de datos de origen Aurora PostgreSQL Serverless V2 ACUs a un nivel razonable.

## Requisitos de seguridad al utilizar Babelfish como destino para AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Security"></a>

A continuación se describen los requisitos de seguridad para su uso AWS DMS con un objetivo Babelfish:
+ El nombre de usuario del administrador (el usuario administrador) utilizado para crear la base de datos.
+ Inicio de sesión y usuario de PSQL con los permisos SELECT, INSERT, UPDATE, DELETE y REFERENCES suficientes.

## Permisos de usuario para usar Babelfish como objetivo para AWS DMS
<a name="CHAP_Target.Babelfish.Permissions"></a>

**importante**  
Por motivos de seguridad, la cuenta de usuario utilizada para la migración de datos debe ser un usuario registrado en cualquier base de datos de Babelfish que utilice como destino.

El punto de conexión de destino de Babelfish requiere permisos de usuario mínimos para ejecutar una migración de AWS DMS .

**Creación de un inicio de sesión y un usuario Transact-SQL (T-SQL) con pocos privilegios**

1. Cree un nombre de usuario y una contraseña para utilizarlos cuando se conecte al servidor.

   ```
   CREATE LOGIN dms_user WITH PASSWORD = 'password';
   GO
   ```

1. Cree la base de datos virtual para el clúster de Babelfish.

   ```
   CREATE DATABASE my_database;
   GO
   ```

1. Cree el usuario de T-SQL para la base de datos de destino.

   ```
   USE my_database
   GO
   CREATE USER dms_user FOR LOGIN dms_user;
   GO
   ```

1. CONCEDA permisos a las tablas para cada tabla de la base de datos de Babelfish.

   ```
   GRANT SELECT, DELETE, INSERT, REFERENCES, UPDATE ON [dbo].[Categories] TO dms_user;  
   ```

## Limitaciones en el uso de Babelfish como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Limitations"></a>

Cuando se utiliza una base de datos de Babelfish como destino para AWS DMS, se aplican las siguientes restricciones:
+ Solo se admite el modo de preparación de tablas “**No hacer nada**”.
+ El tipo de datos ROWVERSION requiere una regla de asignación de tablas que elimine el nombre de la columna de la tabla durante la tarea de migración.
+ No se admite el tipo de datos sql\$1variant.
+ Se admite el modo de LOB completo. El uso de SQL Server como punto final de origen requiere que se establezca la configuración `ForceFullLob=True` del atributo de conexión del punto final de SQL Server para poder migrarlo LOBs al punto final de destino.
+ La configuración de las tareas de replicación presenta las siguientes limitaciones:

  ```
  {
     "FullLoadSettings": {
        "TargetTablePrepMode": "DO_NOTHING",
        "CreatePkAfterFullLoad": false,
        }.
      
  }
  ```
+ Los tipos de datos TIME DATETIME2 (7), (7) y DATETIMEOFFSET (7) de Babelfish limitan el valor de precisión de la parte de segundos del tiempo a 6 dígitos. Considere la posibilidad de utilizar un valor de precisión de 6 para la tabla de destino cuando utilice estos tipos de datos. En las versiones 2.2.0 y posteriores de Babelfish, cuando se utilizan TIME (7) y DATETIME2 (7), el séptimo dígito de precisión es siempre cero.
+ En el modo DO\$1NOTHING, DMS comprueba si la tabla ya existe. Si la tabla no existe en el esquema de destino, DMS la crea en función de la definición de la tabla de origen y asigna cualquier tipo de datos definido por el usuario al tipo de datos base.
+ Una tarea de AWS DMS migración a un destino de Babelfish no admite tablas que tengan columnas con los tipos de datos ROWVERSION o TIMESTAMP. Puede usar una regla de asignación de tablas que elimine el nombre de la columna de la tabla durante el proceso de transferencia. En el siguiente ejemplo de regla de transformación, se transforma una tabla denominada `Actor` en el origen para eliminar todas las columnas que empiecen por los caracteres `col` de la tabla de `Actor` en el destino.

  ```
  {
   	"rules": [{
  		"rule-type": "selection",is 
  		"rule-id": "1",
  		"rule-name": "1",
  		"object-locator": {
  			"schema-name": "test",
  			"table-name": "%"
  		},
  		"rule-action": "include"
  	}, {
  		"rule-type": "transformation",
  		"rule-id": "2",
  		"rule-name": "2",
  		"rule-action": "remove-column",
  		"rule-target": "column",
  		"object-locator": {
  			"schema-name": "test",
  			"table-name": "Actor",
  			"column-name": "col%"
  		}
  	}]
   }
  ```
+ Para las tablas con columnas de identidad o calculadas, en las que las tablas de destino utilizan nombres en mayúsculas y minúsculas, como Categorías, debe crear una acción de regla de transformación que convierta los nombres de las tablas a minúsculas para la tarea de DMS. En el siguiente ejemplo, se muestra cómo crear la acción de la regla de transformación, **Convertir** en minúsculas, mediante la consola. AWS DMS Para obtener más información, consulte [Reglas y acciones de transformación](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).  
![\[Regla de transformación de Babelfish\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/images/datarep-babelfish-transform-1.png)
+ Antes de la versión 2.2.0 de Babelfish, DMS limitó el número de columnas que se podían replicar en un punto de conexión de destino de Babelfish a veinte (20) columnas. Con Babelfish 2.2.0, el límite aumentó a 100 columnas. Sin embargo, con las versiones 2.4.0 y superiores de Babelfish, el número de columnas que puede replicar vuelve a aumentar. Puede ejecutar el siguiente ejemplo de código en la base de datos de SQL Server para determinar qué tablas son demasiado largas.

  ```
  USE myDB;
  GO
  DECLARE @Babelfish_version_string_limit INT = 8000; -- Use 380 for Babelfish versions before 2.2.0
  WITH bfendpoint
  AS (
  SELECT 
  	[TABLE_SCHEMA]
        ,[TABLE_NAME]
  	  , COUNT( [COLUMN_NAME] ) AS NumberColumns
  	  , ( SUM( LEN( [COLUMN_NAME] ) + 3)  
  		+ SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 )  
  	    + LEN( TABLE_SCHEMA ) + 3
  		+ 12 -- INSERT INTO string
  		+ 12)  AS InsertIntoCommandLength -- values string
        , CASE WHEN ( SUM( LEN( [COLUMN_NAME] ) + 3)  
  		+ SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 )  
  	    + LEN( TABLE_SCHEMA ) + 3
  		+ 12 -- INSERT INTO string
  		+ 12)  -- values string
  			>= @Babelfish_version_string_limit
  			THEN 1
  			ELSE 0
  		END AS IsTooLong
  FROM [INFORMATION_SCHEMA].[COLUMNS]
  GROUP BY [TABLE_SCHEMA], [TABLE_NAME]
  )
  SELECT * 
  FROM bfendpoint
  WHERE IsTooLong = 1
  ORDER BY TABLE_SCHEMA, InsertIntoCommandLength DESC, TABLE_NAME
  ;
  ```

## Tipos de datos de destino para Babelfish
<a name="CHAP_Target.Babelfish.DataTypes"></a>

La siguiente tabla muestra los tipos de datos objetivo de Babelfish que se admiten cuando se utiliza AWS DMS y el mapeo predeterminado a partir de los tipos de datos. AWS DMS 

Para obtener información adicional sobre AWS DMS los tipos de datos, consulte. [Tipos de datos de AWS Database Migration Service](CHAP_Reference.DataTypes.md) 


|  AWS DMS tipo de datos  |  Tipo de datos de Babelfish   | 
| --- | --- | 
|  BOOLEANO  |  TINYINT  | 
|  BYTES  |  VARBINARY (longitud)  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  INT1  |  SMALLINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INT  | 
|  INT8  |  BIGINT  | 
|  NUMERIC   |  NUMERIC(p,s)  | 
|  REAL4  |  REAL  | 
|  REAL8  |  FLOAT  | 
|  STRING  |  Si la columna es una columna de fecha u hora, haga lo siguiente:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.Babelfish.html) Si la columna no es una columna de fecha o de hora, utilice VARCHAR (longitud).  | 
|  UINT1  |  TINYINT  | 
|  UINT2  |  SMALLINT  | 
|  UINT4  |  INT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  NVARCHAR(length)  | 
|  BLOB  |  VARBINARY (máx.) Para usar este tipo de datos con DMS, debe habilitar el uso de BLOBs para una tarea específica. DMS solo es compatible con tipos de datos BLOB en las tablas que incluyen una clave principal.  | 
|  CLOB  |  VARCHAR (máx.) Para utilizar este tipo de datos con el DMS, debe habilitar el uso de CLOBs para una tarea específica.  | 
|  NCLOB  |  NVARCHAR (máx.) Para utilizar este tipo de datos con el DMS, debe habilitar el uso de NCLOBs para una tarea específica. En la CDC, DMS admite tipos de datos NCLOB solo en las tablas que incluyan una clave principal.  | 

# Uso de Amazon Timestream como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Timestream"></a>

Puede utilizarlos AWS Database Migration Service para migrar datos de su base de datos de origen a un punto final de destino de Amazon Timestream, con soporte para migraciones de datos de Full Load y CDC.

Amazon Timestream es un servicio de base de datos de series temporales rápido, escalable y sin servidor creado para la ingesta de datos de gran volumen. Los datos de series temporales son una secuencia de puntos de datos recopilados durante un intervalo de tiempo y se utilizan para medir eventos que cambian con el tiempo. Se utiliza para recopilar, almacenar y analizar métricas de aplicaciones de IoT, DevOps aplicaciones y aplicaciones de análisis. Una vez que tenga los datos en Timestream, podrá visualizar e identificar las tendencias y los patrones de los datos prácticamente en tiempo real. Para obtener más información sobre Amazon Timestream, consulte [¿Qué es Amazon Timestream?](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) en la *Guía para desarrolladores de Amazon Timestream*.

**Topics**
+ [Requisitos previos para usar Amazon Timestream como objetivo para AWS Database Migration Service](#CHAP_Target.Timestream.Prerequisites)
+ [Configuración de tareas de carga completa con varios subprocesos](#CHAP_Target.Timestream.FLTaskSettings)
+ [Configuración de tareas de carga de CDC con varios subprocesos](#CHAP_Target.Timestream.CDCTaskSettings)
+ [Configuración del punto final cuando se utiliza Timestream como objetivo para AWS DMS](#CHAP_Target.Timestream.ConnectionAttrib)
+ [Creación y modificación de un punto de conexión de destino de Amazon Timestream](#CHAP_Target.Timestream.CreateModifyEndpoint)
+ [Uso de la asignación de objetos para migrar datos a un tema de Timestream](#CHAP_Target.Timestream.ObjectMapping)
+ [Limitaciones al usar Amazon Timestream como objetivo para AWS Database Migration Service](#CHAP_Target.Timestream.Limitations)

## Requisitos previos para usar Amazon Timestream como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Timestream.Prerequisites"></a>

Antes de configurar Amazon Timestream como objetivo, asegúrese AWS DMS de crear un rol de IAM. Esta función debe permitir acceder AWS DMS a los datos que se migran a Amazon Timestream. En la siguiente política de IAM se muestra el conjunto mínimo de permisos de acceso para el rol que utilice para migrar a Timestream.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDescribeEndpoints",
      "Effect": "Allow",
      "Action": [
        "timestream:DescribeEndpoints"
      ],
      "Resource": "*"
    },
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "timestream:ListTables",
        "timestream:DescribeDatabase"
      ],
      "Resource": "arn:aws:timestream:us-east-1:123456789012:database/DATABASE_NAME"
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": [
        "timestream:DeleteTable",
        "timestream:WriteRecords",
        "timestream:UpdateTable",
        "timestream:CreateTable"
      ],
      "Resource": "arn:aws:timestream:us-east-1:123456789012:database/DATABASE_NAME/table/TABLE_NAME"
    }
  ]
}
```

------

Si tiene intención de migrar todas las tablas, úselo `*` *TABLE\$1NAME* en el ejemplo anterior.

Tenga en cuenta lo siguiente acerca del uso de Timestream como destino:
+ Si tiene intención de ingerir datos históricos con marcas de tiempo de más de 1 año, le recomendamos que utilice AWS DMS para escribir los datos en Amazon S3 en un formato de valores separados por comas (csv). A continuación, utilice la carga por lotes de Timestream para ingerir los datos a Timestream. Para obtener más información, consulte [Uso de la carga por lotes en Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/batch-load.html) en la [Guía para desarrolladores de Amazon Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html).
+ Para migraciones de datos de carga completa de datos con menos de 1 año de antigüedad, recomendamos establecer el período de retención en el almacén en memoria de la tabla de Timestream superior o igual a la marca de tiempo más antigua. A continuación, una vez finalizada la migración, edite la retención del almacén en memoria de la tabla con el valor deseado. Por ejemplo, para migrar datos cuya marca de tiempo más antigua tenga 2 meses de antigüedad, haga lo siguiente:
  + Establezca la retención del almacén en memoria de la tabla de destino de Timestream en 2 meses.
  + Inicie la migración de datos utilizando AWS DMS.
  + Una vez que se complete la migración de datos, cambie el período de retención de la tabla de Timestream de destino al valor deseado. 

   Recomendamos estimar el costo del almacén en memoria antes de la migración utilizando la información de las siguientes páginas:
  + [Precios de Amazon Timestream](https://aws.amazon.com/timestream/pricing)
  + [AWS calculadora de precios](https://calculator.aws/#/addService) 
+ Para las migraciones de datos de CDC, recomendamos configurar el período de retención en el almacén en memoria de la tabla de destino de manera que los datos ingeridos se encuentren dentro de los límites de retención del almacén en memoria. Para obtener más información, consulte [Prácticas recomendadas de escritura](https://docs.aws.amazon.com/timestream/latest/developerguide/data-ingest.html) en la [Guía para desarrolladores de Amazon Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html).

## Configuración de tareas de carga completa con varios subprocesos
<a name="CHAP_Target.Timestream.FLTaskSettings"></a>

Para ayudar a aumentar la velocidad de transferencia de datos, AWS DMS admite una tarea de migración a carga completa y multiproceso a un punto final de destino de Timestream con la siguiente configuración de tareas:
+ `MaxFullLoadSubTasks`: utilice esta opción para indicar el número máximo de tablas de origen que se pueden cargar en paralelo. DMS carga cada tabla en su tabla de destino de Amazon Timestream correspondiente mediante una tarea secundaria dedicada. El valor predeterminado es 8, el valor máximo es 49.
+ `ParallelLoadThreads`— Utilice esta opción para especificar el número de subprocesos que se AWS DMS utilizan para cargar cada tabla en su tabla de destino de Amazon Timestream. El valor máximo para un destino de Amazon Timestream es de 32. Puede pedir que se incremente este límite máximo.
+ `ParallelLoadBufferSize`: utilice esta opción para especificar el número máximo de registros para almacenar en el búfer que los subprocesos de carga en paralelo utilizan para cargar datos en el destino de Amazon Timestream. El valor predeterminado es 50. El valor máximo es 1000. Utilice este parámetro con `ParallelLoadThreads`. `ParallelLoadBufferSize` es válido solo cuando hay más de un subproceso.
+ `ParallelLoadQueuesPerThread`: utilice esta opción para especificar el número de colas que acceden a cada subproceso simultáneo para eliminar los registros de datos de las colas y generar una carga por lotes para el destino. El valor predeterminado de es 1. Sin embargo, para los destinos de Amazon Timestream de varios tamaños de carga, el intervalo válido es de 5-512 colas por subproceso.

## Configuración de tareas de carga de CDC con varios subprocesos
<a name="CHAP_Target.Timestream.CDCTaskSettings"></a>

Para promover el desempeño de los CDC, AWS DMS es compatible con las siguientes configuraciones de tareas:
+ `ParallelApplyThreads`— Especifica la cantidad de subprocesos simultáneos que se AWS DMS utilizan durante una carga de los CDC para enviar los registros de datos a un punto final de destino de Timestream. El valor predeterminado es 1 y el máximo es 32.
+ `ParallelApplyBufferSize`: especifica el número máximo de registros que se almacenan en cada cola del búfer para los subprocesos simultáneos que insertan datos en un punto de conexión de destino de Timestream durante una carga de CDC. El valor predeterminado es 100 y el máximo es 1000. Utilice esta opción cuando `ParallelApplyThreads` especifique más de un subproceso. 
+ `ParallelApplyQueuesPerThread`: especifica el número de colas a las que accede cada subproceso para sacar registros de datos de las colas y generar una carga por lotes para un punto de conexión de Timestream durante el proceso de CDC. El valor predeterminado es 1 y el máximo es 512.

## Configuración del punto final cuando se utiliza Timestream como objetivo para AWS DMS
<a name="CHAP_Target.Timestream.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Timestream de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` comando del [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--timestream-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Timestream como destino.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/dms/latest/userguide/CHAP_Target.Timestream.html)

## Creación y modificación de un punto de conexión de destino de Amazon Timestream
<a name="CHAP_Target.Timestream.CreateModifyEndpoint"></a>

Una vez que haya creado un rol de IAM y establecido el conjunto mínimo de permisos de acceso, podrá crear un punto final de destino de Amazon Timestream AWS DMS mediante la consola o `create-endpoint` mediante el comando de, con la sintaxis [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)JSON. `--timestream-settings '{"EndpointSetting": "value", ...}'`

En los siguientes ejemplos se muestra cómo crear y modificar un punto de conexión de destino de Timestream con la AWS CLI.

**Crear comando de punto de conexión de destino de Timestream**

```
aws dms create-endpoint —endpoint-identifier timestream-target-demo
--endpoint-type target —engine-name timestream
--service-access-role-arn arn:aws:iam::123456789012:role/my-role
--timestream-settings
{
    "MemoryDuration": 20,
    "DatabaseName":"db_name",
    "MagneticDuration": 3,
    "CdcInsertsAndUpdates": true,
    "EnableMagneticStoreWrites": true,
}
```

**Modificar el comando de punto de conexión de destino de Timestream**

```
aws dms modify-endpoint —endpoint-identifier timestream-target-demo
--endpoint-type target —engine-name timestream
--service-access-role-arn arn:aws:iam::123456789012:role/my-role
--timestream-settings
{
    "MemoryDuration": 20,
    "MagneticDuration": 3,
}
```

## Uso de la asignación de objetos para migrar datos a un tema de Timestream
<a name="CHAP_Target.Timestream.ObjectMapping"></a>

AWS DMS utiliza reglas de mapeo de tablas para mapear los datos del tema de Timestream de origen al tema de Timestream de destino. Para asignar datos a un tema de destino, se utiliza un tipo de regla de asignación de tablas denominado asignación de objetos. Puede utilizar el mapeo de objetos para definir cómo los registros de datos del origen se asignan a los registros de datos publicados en un tema de Timestream. 

Los temas de Timestream no tienen una estructura predeterminada distinta de una clave de partición.

**nota**  
No tiene que utilizar la asignación de objetos. Puede utilizar la asignación de tablas normal para varias transformaciones. Sin embargo, el tipo de clave de partición seguirá estos comportamientos predeterminados:   
La clave principal se usa como clave de partición para la carga completa.
Si no se utiliza ninguna configuración de tareas de aplicación paralela, `schema.table` se utiliza como clave de partición para CDC.
Si se utiliza la configuración de tareas de aplicación paralela, la clave principal se utiliza como clave de partición para CDC.

Para crear una regla de mapeo de objetos, se especifica `rule-type` como `object-mapping`. Esta regla indica el tipo de mapeo de objetos que desea utilizar. La estructura de la regla es la siguiente.

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```



```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "1",
            "rule-name": "timestream-map",
            "rule-action": "map-record-to-record",
            "target-table-name": "tablename",
            "object-locator": {
                "schema-name": "",
                "table-name": ""
            },
            "mapping-parameters": {
                "timestream-dimensions": [
                    "column_name1",
                     "column_name2"
                ],
                "timestream-timestamp-name": "time_column_name",
                "timestream-multi-measure-name": "column_name1or2",
                "timestream-hash-measure-name":  true or false,
                "timestream-memory-duration": x,
                "timestream-magnetic-duration": y
            }
        }
    ]
}
```

AWS DMS actualmente admite `map-record-to-record` y `map-record-to-document` es el único valor válido para el parámetro. `rule-action` `map-record-to-document`Los valores `map-record-to-record` y especifican lo que AWS DMS ocurre de forma predeterminada con los registros que no se excluyen como parte de la lista de `exclude-columns` atributos. Estos valores no afectan a los mapeos de atributos en modo alguno. 

Utilice `map-record-to-record` al migrar desde una base de datos relacional a un tema de Timestream. Este tipo de regla utiliza el valor `taskResourceId.schemaName.tableName` de la base de datos relacional como la clave de partición en el tema de Timestream y crea un atributo para cada columna de la base de datos de origen. Cuando se utiliza`map-record-to-record`, para cualquier columna de la tabla de origen que no aparezca en la lista de `exclude-columns` atributos, AWS DMS crea el atributo correspondiente en el tema de destino. Este atributo se crea independientemente de si dicha columna de origen se utiliza en un mapeo de atributos. 

Una forma de entender `map-record-to-record` es verlo en acción. En este ejemplo, imagine que empieza con una fila de una tabla de base de datos relacional con la estructura y los datos siguientes.


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

Para migrar esta información desde un esquema denominado `Test` a un tema de Timestream, cree reglas para mapear los datos al tema. La siguiente regla ilustra la operación de asignación. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToTimestream",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

Dados un tema de Timestream y una clave de partición (en este caso, `taskResourceId.schemaName.tableName`), a continuación se ilustra el formato de registro resultante al usar nuestros datos de ejemplo en el tema de destino de Timestream: 

```
  {
     "FirstName": "Randy",
     "LastName": "Marsh",
     "StoreId":  "5",
     "HomeAddress": "221B Baker Street",
     "HomePhone": "1234567890",
     "WorkAddress": "31 Spooner Street, Quahog",
     "WorkPhone": "9876543210",
     "DateOfBirth": "02/29/1988"
  }
```

## Limitaciones al usar Amazon Timestream como objetivo para AWS Database Migration Service
<a name="CHAP_Target.Timestream.Limitations"></a>

Al utilizar Amazon Timestream como destino se aplican las siguientes restricciones:
+ **Dimensiones y marcas de tiempo:** Timestream utiliza las dimensiones y las marcas de tiempo de los datos de origen como una clave primaria compuesta, y no permite actualizar estos valores. Esto significa que si cambia la marca de tiempo o las dimensiones de un registro en la base de datos de origen, la base de datos de Timestream intentará crear un registro nuevo. Por lo tanto, si cambia la dimensión o la marca de tiempo de un registro para que coincidan con las de otro registro existente, AWS DMS actualice los valores del otro registro en lugar de crear un registro nuevo o actualizar el registro anterior correspondiente.
+ **Comandos DDL:** la versión actual AWS DMS solo admite `CREATE TABLE` comandos DDL. `DROP TABLE`
+ **Limitaciones de registro:** Timestream tiene limitaciones para los registros, como el tamaño del registro y el tamaño de la medida. Para obtener más información, consulte [Cuotas](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) en la [Guía para desarrolladores de Amazon Timestream](https://docs.aws.amazon.com/).
+ **Eliminar registros y valores nulos:** Timestream no admite la eliminación de registros. Para permitir la migración de registros eliminados del origen, AWS DMS borra los campos correspondientes de los registros de la base de datos de destino de Timestream. AWS DMS cambia los valores de los campos del registro de destino correspondiente con **0** para los campos numéricos, **nulo** para los campos de texto y **falso** para los campos booleanos.
+ Timestream como destino no admite orígenes que no sean bases de datos relacionales (RDBMS).
+ AWS DMS solo admite Timestream como destino en las siguientes regiones:
  + Este de EE. UU. (Norte de Virginia)
  + Este de EE. UU. (Ohio)
  + Oeste de EE. UU. (Oregón)
  + Europa (Irlanda)
  + Europa (Fráncfort)
  + Asia-Pacífico (Sídney)
  + Asia-Pacífico (Tokio)
+ Timestream como destino no admite la configuración de `TargetTablePrepMode` para `TRUNCATE_BEFORE_LOAD`. Le recomendamos que utilice `DROP_AND_CREATE` para esta configuración.

# Uso de Amazon RDS para Db2 e IBM Db2 LUW como destino para AWS DMS
<a name="CHAP_Target.DB2"></a>

Puede migrar datos a una base de datos Amazon RDS para Db2 o a una base de datos Db2 local desde una base de datos LUW de Db2 mediante (). AWS Database Migration Service AWS DMS

Para obtener información sobre las versiones de Db2 LUW compatibles como destino, consulte. AWS DMS [Objetivos para AWS DMS](CHAP_Introduction.Targets.md)

Puede utilizar la Capa de conexión segura (SSL) para cifrar las conexiones entre el punto de enlace de Db2 LUW y la instancia de replicación. Para obtener más información sobre cómo utilizar SSL con un punto de conexión de Db2 LUW, consulte [Uso de SSL con AWS Database Migration Service](CHAP_Security.SSL.md).

## Limitaciones al utilizar Db2 LUW como destino para AWS DMS
<a name="CHAP_Target.DB2.Limitations"></a>

Las siguientes limitaciones se aplican al utilizar la base de datos LUW de Db2 como destino para. AWS DMS Para restricciones al usar Db2 LUW como origen, consulte [Limitaciones al utilizar Db2 LUW como fuente de AWS DMS](CHAP_Source.DB2.md#CHAP_Source.DB2.Limitations).
+ AWS DMS solo admite Db2 LUW como destino cuando el origen es Db2 LUW o Db2 for z/OS.
+ El uso de Db2 LUW como destino no admite replicaciones con el modo de LOB completo.
+ El uso de Db2 LUW como destino no admite el tipo de datos XML en la fase de carga completa. Se trata de una limitación de la utilidad dbload de IBM. Para obtener más información, consulte [La utilidad dbload](https://www.ibm.com/docs/en/informix-servers/14.10?topic=utilities-dbload-utility) en la documentación de *IBM Informix Servers*.
+ AWS DMS trunca los campos BLOB con valores correspondientes al carácter de comillas dobles («). Se trata de una limitación de la utilidad dbload de IBM. 
+ AWS DMS no admite la opción de carga completa en paralelo al migrar a un destino LUW de Db2 en la versión 3.5.3 del DMS. Esta opción está disponible a partir de la versión 3.5.4 o posteriores de DMS.

## Configuración del punto final cuando se utiliza Db2 LUW como destino para AWS DMS
<a name="CHAP_Target.DB2.ConnectionAttrib"></a>

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Db2 LUW de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el `create-endpoint` comando del [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), con la sintaxis `--ibm-db2-settings '{"EndpointSetting": "value", ...}'` JSON.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Db2 LUW como destino.


| Name | Description (Descripción) | 
| --- | --- | 
|  `KeepCsvFiles`  |  Si es verdadero, AWS DMS guarda todos los archivos.csv en el destino LUW de Db2 que se hayan utilizado para replicar datos. DMS utiliza estos archivos para el análisis y la solución de problemas.  | 
|  `LoadTimeout`  |  El tiempo (en milisegundos) antes de que se agote el AWS DMS tiempo de espera de las operaciones realizadas por el DMS en el destino de Db2. El valor predeterminado es 1200 (20 minutos).  | 
|  `MaxFileSize`  |  Especifica el tamaño máximo (en KB) de los archivos .csv que se utilizan para transferir datos a Db2 LUW.  | 
|  `WriteBufferSize`  |  El tamaño (en KB) del búfer de escritura de archivos en memoria que se utiliza al generar archivos .csv en el disco local de la instancia de replicación DMS. El valor predeterminado es 1024 (1 MB).  | 

# Configuración de puntos finales de VPC para AWS DMS
<a name="CHAP_VPC_Endpoints"></a>

AWS DMS admite puntos de conexión de la nube privada virtual (VPC) de Amazon como orígenes y destinos. AWS DMS pueden conectarse a cualquier base de datos de AWS origen o destino con puntos de enlace de Amazon VPC siempre que las rutas definidas explícitamente a estas bases de datos de origen y destino estén definidas en su VPC. AWS DMS 

Al ser compatible con los puntos de conexión de Amazon VPC, AWS DMS facilita el mantenimiento de la seguridad de la end-to-end red para todas las tareas de replicación sin necesidad de realizar configuraciones ni ajustes de red adicionales. El uso de puntos de conexión de VPC para todos los puntos de conexión de origen y destino garantiza que todo el tráfico permanezca dentro de la VPC y bajo su control.

Para la instancia de AWS DMS replicación creada en una subred privada o una replicación AWS DMS sin servidor, para conectarse a bases de datos AWS gestionadas, es necesario configurar un punto de enlace de Amazon VPC:
+ Amazon S3
+ Amazon DynamoDB
+ Amazon Kinesis
+ Amazon Redshift
+  OpenSearch Servicio Amazon

Si utilizas AWS Secrets Manager para almacenar las credenciales de conexión para que las utilice DMS, también tendrás que configurar un punto final de VPC.

A partir de la AWS DMS versión 3.4.7, se requieren puntos de enlace de VPC para establecer la conexión entre la instancia de replicación de DMS o la replicación sin servidor y los servicios de Amazon anteriores, cuando se utiliza una red privada.

## Requisitos previos comunes AWS DMS
<a name="CHAP_VPC_Endpoints.prereq"></a>

Antes de configurar un punto de conexión de VPC, debe cumplir los siguientes requisitos previos:
+ Localice o cree la VPC para usarla con la instancia de replicación o AWS DMS la replicación AWS DMS sin servidor. Si no proporciona esta información, DMS intentará utilizar la VPC predeterminada de la región en la que está configurada.
+ Asegúrese de disponer de los permisos de IAM para crear un punto de conexión de VPC. Para conectarse a Amazon S3 y Amazon DynamoDB, puede crear punto de conexión de VPC de puerta de enlace que proporcionen una conectividad fiable sin necesidad de una puerta de enlace de Internet o un dispositivo NAT para su VPC. Los puntos finales de puerta de enlace no utilizan AWS PrivateLink, a diferencia de otros tipos de puntos finales de VPC. *Para obtener más información, consulte los [puntos de enlace de puerta de enlace en](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html) la guía.AWS PrivateLink*
+ Configure los permisos para usar DMS:
  + Configure el rol `dms-vpc-role`. Para obtener más información, consulte [Política AWS gestionada: Amazon DMSVPCManagement Role](https://docs.aws.amazon.com/dms/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonDMSVPCManagementRole).
  + Configure el rol `dms-cloudwatch-logs-role`. Para obtener más información, consulta la [política AWS gestionada: Amazon DMSCloud WatchLogsRole](https://docs.aws.amazon.com/dms/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonDMSCloudWatchLogsRole).
  + AWS DMS Serverless requiere que exista un rol vinculado a un servicio (SLR) en tu cuenta. AWS DMS gestiona la creación y el uso de este rol. Para obtener más información sobre cómo asegurarse de que dispone del SLR necesario, consulte [Rol vinculado al servicio de sin servidor AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/slr-services-sl.html). Al crear una replicación, AWS DMS Serverless crea mediante programación un rol vinculado al servicio Serverless. Puede consultar este rol en la consola de IAM.

## Configure un punto final de Amazon VPC con Secrets Manager AWS
<a name="CHAP_VPC_Endpoints.vpcforsecrets"></a>

Puedes configurar un punto de conexión de Amazon VPC con el que pueda trabajar con AWS Secrets Manager. AWS DMS Al crear este punto final, habilita las instancias de AWS DMS replicación o las configuraciones de replicación sin servidor en subredes privadas para acceder de forma segura a las credenciales de la base de datos almacenadas en Secrets Manager sin necesidad de acceso público a Internet.

**Requisitos previos**

Antes de configurar un punto final de VPC con AWS Secrets Manager incorporado AWS DMS, debe cumplir los siguientes requisitos previos:
+ Asegúrese de configurar todos los [Requisitos previos comunes AWS DMS](#CHAP_VPC_Endpoints.prereq).
+ Cree y configure la base de datos de [origen](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html) o [destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html) a la que desee conectarse.
+ Cree un secreto en AWS Secrets Manager con credenciales para acceder a las bases de datos de origen y destino. El secreto debe estar ubicado en la misma región que la instancia de AWS DMS replicación o la replicación AWS DMS sin servidor. Según el tipo de base de datos, el esquema del secreto puede variar. Para obtener más información, consulte [Trabajar con puntos AWS DMS finales](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html).
**importante**  
AWS DMS la instancia de replicación y la replicación AWS DMS sin servidor no funcionan con secretos, gestionados por Amazon RDS. Estas credenciales no incluyen la información de host y puerto necesaria AWS DMS para establecer las conexiones.
+ Algunas bases de datos requieren configurar los permisos de IAM para gestionar el punto final del DMS: Amazon S3, Amazon Kinesis, Amazon DynamoDB, Amazon Redshift, Amazon Service, Amazon Neptune y OpenSearch Amazon Timestream. Para [obtener más información, consulte Trabajar con AWS DMS puntos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html) de enlace.

**Cree un punto final de VPC para Secrets Manager AWS**

1. Inicie sesión en la consola de Amazon VPC Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. En la barra de menús de la consola de VPC, elija lo Región de AWS mismo que su instancia de AWS DMS replicación.

1. En el panel de navegación de la VPC, elija **Puntos de conexión**.

1. En **Puntos de conexión**, elija **Crear punto de conexión**.

1. Configure el punto de conexión de VPC de la siguiente manera:

   1. Seleccione **Tipo** para **Servicios de AWS **.

   1. En el cuadro de texto **Nombre del servicio**, busque **secretsmanager** y seleccione **com.amazonaws.[región].secretsmanager**. Asegúrese de que el valor de **Tipo** para el servicio seleccionado sea **Interfaz**.

   1. En **Configuración de red**, seleccione la VPC que se ejecuta en la misma región que la instancia de replicación de DMS o en la que creó la replicación sin servidor.

   1. En la sección **Subredes**, seleccione las subredes en las que desee que trabaje DMS. Asegúrese de seleccionar solo subredes privadas. Puede identificar una subred privada con el ID de subred. Por ejemplo: `vpc-xxxxxx-subnet-private1-us-west-2a`.

      Si la instancia de replicación de DMS se crea sin acceso público, debe elegir las tablas de enrutamiento asociadas a las subredes privadas en las que reside la instancia de replicación.
**nota**  
Asegúrese de anotar las subredes privadas, ya que deberá proporcionarlas al crear el grupo de subredes de replicación de DMS. Para conectar el DMS con el administrador de AWS secretos mediante los puntos de enlace de la VPC, las subredes especificadas para el punto de enlace de la VPC deben ser las mismas que las subredes del grupo de subredes de replicación del DMS.

   1. Seleccione los **Grupos de seguridad** que desee. Las reglas de grupo de seguridad controlan el tráfico proveniente de los recursos de su VPC hacia la interfaz de red de punto de conexión. Si no especifica ningún grupo de seguridad, se seleccionará el grupo de seguridad predeterminado.

1. Seleccione **Acceso completo** en **Política**. Si desea utilizar una política personalizada para especificar su propio control de acceso, seleccione **Personalizada**. En cualquier caso, puede utilizar una política de confianza que se ajuste al documento de política de JSON `dms-vpc-role`. Para obtener más información, consulte [Creación de los roles de IAM para usarlos con AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/security-iam.html#CHAP_Security.APIRole).

1. Seleccione **Crear punto de conexión**.

   Debe esperar hasta que el estado pase a ser `Available`. Su punto de conexión de VPC ahora tiene un ID que empieza por `vpce-xxxx`.

Ha creado correctamente un punto de conexión de VPC. Debe configurar los puntos finales y los grupos de subredes del DMS. AWS DMS Según la opción de migración que elija, configure la instancia de replicación de DMS o la replicación sin servidor.

## Configuración de un punto de conexión de Amazon VPC con Amazon S3
<a name="CHAP_VPC_Endpoints.vpcfors3"></a>

Puede configurar un punto de conexión de Amazon VPC para que funcione con Amazon S3. AWS DMS Al crear este punto de conexión, habilita las instancias de AWS DMS replicación o las configuraciones de replicación sin servidor en subredes privadas para acceder de forma segura a las credenciales de las bases de datos almacenadas en los depósitos de S3 sin necesidad de acceso público a Internet.

**Requisitos previos**

Antes de configurar un punto de conexión de VPC con Amazon S3 AWS DMS, debe cumplir los siguientes requisitos previos:
+ Asegúrese de configurar todos los [Requisitos previos comunes AWS DMS](#CHAP_VPC_Endpoints.prereq).
+ Cree un bucket de Amazon S3 para usarlo como base de datos de [origen](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html) o [destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html) AWS DMS. No active el control de versiones para S3. Si necesita el control de versiones de S3, utilice las políticas de ciclo de vida para eliminar activamente las versiones antiguas. De lo contrario, es posible que se produzcan errores en la conexión de las pruebas de punto de conexión debido al tiempo de espera de una llamada a list-object de S3.
+ Configure los permisos de IAM para administrar el punto de conexión de Amazon S3 de DMS. Si utiliza la consola de AWS DMS , puede crear el rol de IAM con los permisos necesarios si tiene permisos para crear roles de IAM.

**Creación de un punto de conexión de VPC para Amazon S3**

1. Inicie sesión en la consola de Amazon VPC Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. En la barra de menús de la consola de VPC, elija lo Región de AWS mismo que su instancia de AWS DMS replicación.

1. En el panel de navegación de la VPC, elija **Puntos de conexión**.

1. En **Puntos de conexión**, elija **Crear punto de conexión**.

1. Configure el punto de conexión de VPC de la siguiente manera:

   1. Seleccione **Tipo** para **Servicios de AWS **.

   1. En el cuadro de texto **Nombre del servicio**, busque **s3** y seleccione **com.amazonaws.[región].s3**. Asegúrese de que el valor de **Tipo** para el servicio seleccionado sea **Puerta de enlace**. Puede crear un punto de conexión de VPC de puerta de enlace al conectarse a Amazon S3 y DynamoDB. Los puntos de conexión de puerta de enlace no utilizan AWS PrivateLink, a diferencia de otros tipos de puntos de conexión de VPC.

   1. En **Configuración de red**, seleccione la VPC que se ejecuta en la misma región que la instancia de replicación de DMS o en la que creó la replicación sin servidor.

   1. En la sección **Subredes**, seleccione las subredes en las que desee que trabaje DMS. Asegúrese de seleccionar solo subredes privadas. Puede identificar una subred privada con el ID de subred. Por ejemplo: `vpc-xxxxxx-subnet-private1-us-west-2a`.
**nota**  
Si ha creado la instancia de replicación de DMS sin acceso público, debe elegir las tablas de enrutamiento asociadas a las subredes privadas que se encuentran en la misma región que su instancia de DMS. Asegúrese de anotar las subredes privadas, ya que deberá proporcionarlas al crear el grupo de subredes de replicación de DMS. Para conectar DMS con Amazon S3 mediante los puntos de conexión de VPC, las subredes especificadas para el punto de conexión de VPC deben ser las mismas que las subredes del grupo de subredes de replicación de DMS.

1. Seleccione **Acceso completo** en **Política**. Si desea utilizar una política personalizada para especificar su propio control de acceso, seleccione **Personalizada**. En cualquier caso, puede utilizar una política de confianza que se ajuste al documento de política de JSON `dms-vpc-role`. Para obtener más información, consulte [Creación de los roles de IAM para usarlos con AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/security-iam.html#CHAP_Security.APIRole).

1. Seleccione **Crear punto de conexión**.

   Debe esperar hasta que el estado pase a ser `Available`. Su punto de conexión de VPC ahora tiene un ID que empieza por `vpce-xxxx`.

Ha creado correctamente un punto de conexión de VPC. Debe configurar los AWS DMS puntos finales y los grupos de subredes del DMS. Según la opción de migración que elija, configure la instancia de replicación de DMS o la replicación sin servidor.

## Configuración de un punto de conexión de Amazon VPC para Amazon DynamoDB
<a name="CHAP_VPC_Endpoints.vpcfordynamoDB"></a>

Cuando utilice instancias de AWS DMS replicación en subredes privadas o replicación AWS DMS sin servidor, debe crear un punto de enlace de VPC para establecer una conectividad segura con Amazon DynamoDB. Sin una configuración de punto final de VPC, AWS DMS se enfrenta a errores de conexión.

Al crear el punto de conexión de la VPC, debe seleccionar para **Tipo de punto de enlace** **Puerta de enlace** o **Interfaz** en la consola de DMS. Para obtener más información, consulte lo siguiente:
+ [Requisitos previos comunes AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ [Puntos de enlace de enlace para Amazon DynamoDB](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-ddb.html)
+ [¿Cómo puedo solucionar los problemas de conectividad con los puntos de conexión de Amazon VPC de mi puerta de enlace?](https://repost.aws/knowledge-center/connect-s3-vpc-endpoint)

## Configuración de un punto de conexión de Amazon VPC para Amazon Kinesis
<a name="CHAP_VPC_Endpoints.vpcforkinesis"></a>

Cuando utilice instancias de AWS DMS replicación en subredes privadas o replicación AWS DMS sin servidor, debe crear un punto de enlace de VPC para establecer una conectividad segura con Amazon Kinesis. Sin una configuración de punto final de VPC, AWS DMS se enfrenta a errores de conexión. Para obtener más información, consulte lo siguiente:
+ [Requisitos previos comunes AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ [Uso de Amazon Kinesis Data Streams como objetivo para AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kinesis.html)

## Configuración de un punto de conexión de Amazon VPC para Amazon Redshift
<a name="CHAP_VPC_Endpoints.vpcforredshift"></a>

Cuando utilice instancias de AWS DMS replicación en subredes privadas o replicación AWS DMS sin servidor, debe crear un punto de enlace de VPC para establecer una conectividad segura con Amazon Redshift. Sin una configuración de punto final de VPC, AWS DMS se enfrenta a errores de conexión. Para obtener más información, consulte lo siguiente:
+ [Requisitos previos comunes AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ [Puntos finales de VPC gestionados por Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-cluster-cross-vpc.html)

## Configurar un punto de conexión de Amazon VPC para Amazon Service OpenSearch
<a name="CHAP_VPC_Endpoints.vpcforos"></a>

Al utilizar instancias de AWS DMS replicación en subredes privadas o replicación AWS DMS sin servidor, debe crear un punto de enlace de VPC para establecer una conectividad segura con Amazon Service. OpenSearch Sin una configuración de punto final de VPC, AWS DMS se enfrenta a errores de conexión. Para obtener más información, consulte lo siguiente:
+ [Requisitos previos comunes AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ [Configuración del acceso a la VPC para las canalizaciones de Amazon Ingestion OpenSearch ](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-security.html)

## Configuración de instancias de replicación, grupos de subredes de DMS y puntos de conexión de DMS
<a name="CHAP_VPC_Endpoints.option.123"></a>

Debe configurar los recursos de AWS DMS replicación después de crear los puntos de enlace de la VPC. Puede configurar grupos de subredes de replicación para aislar la red, instancias de replicación o replicaciones sin servidor para el procesamiento y puntos de conexión para conectarse a las bases de datos de origen y destino a fin de permitir la migración segura de las bases de datos dentro de su VPC.

### Configure una instancia de replicación AWS DMS
<a name="CHAP_VPC_Endpoints.option.123.provisioned"></a>

Para configurar una instancia de replicación AWS DMS aprovisionada, debe configurar los grupos de subredes de replicación del DMS.

**Creación de grupos de subredes de replicación de DMS**

1. Inicie sesión en la consola de DMS Consola de administración de AWS y ábrala.

1. En el panel de navegación de la izquierda, abra **Grupos de subredes** y, a continuación, seleccione **Crear grupo de subredes**.

1. Introduzca un **Nombre** y una **Descripción**.

1. En el menú desplegable **VPC**, seleccione la VPC que se esté ejecutando en la misma región en la que desee crear la instancia de replicación de DMS.

1. En el menú desplegable **Agregar subredes**, añada las subredes privadas que ha especificado al crear el punto de conexión de VPC. Puede identificar una subred privada con el ID de subred. Por ejemplo: `vpc-xxxxxx-subnet-private1-us-west-2a`.

1. Haga clic en **Crear grupo de subredes**.

**Creación de una instancia de replicación de DMS (aprovisionada)**

1. Navegue hasta la Consola de administración de AWS para crear una instancia de replicación. Para obtener más información, consulte [Creación de una instancia de replicación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html). Para obtener más información sobre cómo elegir, dimensionar y configurar las instancias de replicación, consulte [Trabajar con una instancia de AWS DMS replicación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html).

1. En la sección **Conectividad y seguridad**, seleccione la VPC de la **nube privada virtual (VPC) IPv4** o el **modo de doble pila** en el que desee crear la instancia de replicación. AWS DMS Para obtener más información, consulte [Configuración de una red para una instancia de replicación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html).

1. En el menú desplegable **Grupo de subredes de replicación**, elija el grupo de subredes que ha creado para la instancia de replicación.
**nota**  
Asegúrese de que las subredes especificadas para el punto de conexión de VPC sean idénticas a las subredes del grupo de subredes de la instancia de replicación de DMS. Debe eliminar todas las subredes de su grupo de subredes que no estén asociadas al punto de conexión de VPC.

1. Desmarque la casilla de verificación **Acceso público** para deshabilitar el acceso público.

1. En la sección **Configuración avanzada**, en el menú desplegable **Grupos de seguridad de VPC**, seleccione todos los grupos de subredes de VPC asociados a la instancia de replicación. Estos grupos deben incluir el grupo de subredes que incluye las subredes que especificó al crear el punto de conexión de VPC.

   Si no especifica los grupos de subredes, DMS elige el **Grupo de subredes de replicación** predeterminado o lo crea, si no existe. Para obtener más información, consulte [Configuración de grupos de seguridad para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Advanced.Endpoints.securitygroup.html).

1. Complete la configuración de la instancia de replicación y seleccione **Crear instancia de replicación**.

   Debe esperar hasta que el estado pase a ser `Available`.

**Cree puntos finales de AWS DMS origen y destino**

1. Inicie sesión en la consola de DMS.

1. Vaya a **Puntos de conexión de AWS DMS ** y, a continuación, **Crear punto de conexión**.

1. Cree y configure puntos de conexión de [origen](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html) y [destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html).

1. En la consola del DMS, puede elegir una función de IAM existente o crear una nueva función de IAM para acceder a las credenciales de la base de datos almacenadas en el administrador de secretos. AWS 

1. Haga clic en **Ejecutar prueba** para probar la conexión del punto de conexión en la instancia de replicación de DMS. La instancia de replicación debe tener el estado `Available` para poder ejecutar la prueba.

1. Seleccione **Crear punto de conexión**.

### Configure una replicación sin servidor AWS DMS
<a name="CHAP_VPC_Endpoints.option.123.serverless"></a>

Para configurar una replicación AWS DMS sin servidor, debe configurar los grupos de subredes de replicación del DMS.

**Cree puntos finales de AWS DMS origen y destino**

1. Inicie sesión en la consola de DMS.

1. Vaya a **Puntos de conexión de AWS DMS ** y, a continuación, **Crear punto de conexión**.

1. Cree y configure puntos de conexión de [origen](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html) y [destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html).

1. En la consola del DMS, puede elegir una función de IAM existente o crear una nueva función de IAM para acceder a las credenciales de la base de datos almacenadas en el administrador de secretos. AWS 
**nota**  
En el AWS DMS caso de la replicación sin servidor, no puede probar la conexión del punto final del DMS ni utilizar la API. `TestConnection` La prueba de conexión se realiza durante el inicio de la replicación sin servidor entre la instancia de DMS y sus bases de datos. source/target Para obtener más información, consulte [Componentes de AWS DMS sin servidor](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Serverless.Components.html).

1. Seleccione **Crear punto de conexión**.

**Creación de grupos de subredes de replicación de DMS**

1. Inicie sesión en la consola de Consola de administración de AWS DMS y ábrala.

1. En el panel de navegación de la izquierda, abra **Grupos de subredes** y, a continuación, seleccione **Crear grupo de subredes**.

1. Introduzca un **Nombre** y una **Descripción**.

1. En el menú desplegable **VPC**, seleccione la VPC que se esté ejecutando en la misma región que la instancia sin servidor de DMS.

1. En el menú desplegable **Agregar subredes**, añada las subredes privadas que ha especificado al crear el punto de conexión de VPC. Puede identificar una subred privada con el ID de subred. Por ejemplo: `vpc-xxxxxx-subnet-private1-us-west-2a`.

1. Haga clic en **Crear grupo de subredes**.

**Creación de una replicación sin servidor de DMS**

1. Navegue hasta la consola de DMS para crear una instancia sin servidor. Para obtener más información, consulte [Creación de una replicación sin servidor](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Serverless.Components.html#CHAP_Serverless.create). Para obtener más información sobre cómo elegir, dimensionar y configurar instancias sin servidor, consulte Cómo [trabajar](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Serverless.html) con instancias sin servidor. AWS DMS 

1. En la sección **Conectividad y seguridad**, selecciona la VPC en el menú desplegable de la **nube privada virtual (VPC)** en la que quieres crear la instancia sin servidor. AWS DMS Para obtener más información, consulte [Configuración de una red para una instancia de replicación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html).

1. En el menú desplegable **Grupo de subredes**, elija el grupo de subredes que ha creado para la instancia sin servidor.
**nota**  
Asegúrese de que las subredes especificadas para el punto de conexión de VPC sean idénticas a las subredes del grupo de subredes de la instancia sin servidor de DMS. Debe eliminar todas las subredes del grupo de subredes que no estén asociadas a su instancia sin servidor.

1. Seleccione **Zona de disponibilidad**.

1. En el menú desplegable **Máximo de unidades de capacidad de DMS (DCU)**, seleccione la capacidad de DCU deseada.

1. Seleccione **Crear tarea**. Al hacerlo, se crea una configuración de replicación sin servidor de DMS que aparece en la lista de tareas con el estado `Start required`.

1. Para iniciar la replicación sin servidor, elija su tarea y seleccione **Iniciar** en el menú **Acciones**.

## ¿A quién afecta la migración a las versiones 3.4.7 y posteriores AWS DMS ?
<a name="CHAP_VPC_Endpoints.Users_Impacted"></a>

Se ve afectado si utiliza uno o más de los puntos de conexión de AWS DMS mostrados anteriormente y estos puntos de conexión no se pueden enrutar públicamente o no tienen puntos de conexión de VPC ya asociados.

## ¿Quién no se ve afectado al migrar a las AWS DMS versiones 3.4.7 y posteriores?
<a name="CHAP_VPC_Endpoints.Users_Not_Impacted"></a>

No se verá afectado si:
+ No está utilizando uno o más de los puntos finales enumerados AWS DMS anteriormente.
+ Utiliza alguno de los puntos de conexión mostrados anteriormente y se pueden enrutar públicamente.
+ Utiliza alguno de los puntos de conexión mostrados anteriormente y tienen puntos de conexión de VPC asociados a ellos.

## Preparando una migración a las versiones 3.4.7 y superiores de AWS DMS
<a name="CHAP_VPC_Endpoints.User_Mitigation"></a>

Para evitar errores en las tareas del AWS DMS al utilizar cualquiera de los puntos finales descritos anteriormente, siga uno de los pasos siguientes antes de actualizar el AWS DMS a la versión 3.4.7 o superior:
+ Haga que los puntos finales del AWS DMS afectados se puedan enrutar públicamente. Por ejemplo, añada una ruta de Internet Gateway (IGW) a cualquier VPC que ya utilice la instancia de replicación de DMS para que todos sus puntos finales AWS de origen y destino se puedan enrutar públicamente.
+ Cree puntos de conexión de VPC para acceder a todos los puntos de conexión de origen y destino utilizados por AWS DMS, tal y como se describe a continuación.

Para todos los puntos de enlace de VPC existentes que utilice para los puntos de enlace de origen y destino del AWS DMS, asegúrese de que utilizan una política de confianza que se ajuste al documento de política XML,. `dms-vpc-role` Para obtener más información sobre este documento de política de XML, consulte [Crear los roles de IAM para usarlos con AWS DMS](security-iam.md#CHAP_Security.APIRole).

De lo contrario, configure las instancias de replicación como puntos de conexión de VPC agregando un punto de conexión de VPC a la VPC que las contiene. Si ha configurado las instancias de replicación sin puntos de conexión públicos, al añadir un punto de conexión de VPC de acceso público a la VPC que contiene las instancias de replicación hace que sean de acceso público. No es necesario hacer nada más para asociar de forma específica las instancias de replicación con el punto de conexión de VPC.

**nota**  
Es posible que los distintos servicios tengan configuraciones de punto de conexión de VPC únicas. Por ejemplo, cuando se usa AWS Secrets Manager, normalmente no es necesario ajustar la tabla de enrutamiento. Compruebe siempre los requisitos específicos de cada servicio.

Para obtener más información sobre la configuración de puntos finales de VPC para una instancia de replicación de AWS DMS, consulte. [Configuraciones de red para migrar bases de datos](CHAP_ReplicationInstance.VPC.md#CHAP_ReplicationInstance.VPC.Configurations) *Para obtener más información sobre la creación de puntos de enlace de VPC de interfaz para acceder a AWS los servicios en general, consulte [Acceder a un AWS servicio mediante un punto de enlace de VPC de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) en la Guía.AWS PrivateLink * [Para obtener información sobre la disponibilidad regional del AWS DMS para los puntos finales de la VPC, consulte AWS la tabla de regiones.](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)

# Declaraciones de DDL respaldadas por AWS DMS
<a name="CHAP_Introduction.SupportedDDL"></a>

Durante el proceso de migrar datos es posible ejecutar instrucciones en lenguaje de definición de datos (DDL) en la base de datos de origen. El servidor de replicación replica estas instrucciones en la base de datos de destino. 

Las instrucciones DDL compatibles permiten realizar las siguientes acciones: 
+ Crear tabla
+ Eliminar tablas
+ Cambiar de nombre las tablas
+ Truncar tabla
+ Agregar columna
+ Eliminar columna
+ Cambiar el nombre de las columnas
+ Cambiar el tipo de datos de las columnas

DMS no captura todas las instrucciones de DDL compatibles con algunos tipos de motores de origen. Además, DMS gestiona las instrucciones de DDL de forma diferente cuando las aplica a motores de destino específicos. Para obtener información sobre qué instrucciones de DDL son compatibles con un origen específico y cómo se aplican a un destino, consulte el tema de la documentación específico para ese punto de conexión de origen y destino.

Puede usar la configuración de las tareas para configurar la forma en que DMS gestiona el comportamiento de DDL durante la captura de datos de cambios (CDC). Para obtener más información, consulte [Configuración de tareas para la administración de DDL del procesamiento de cambios](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md).

## Limitaciones y consideraciones
<a name="CHAP_Introduction.SupportedDDL.Limitations"></a>

Las secuencias rápidas de operaciones de DDL en la base de datos de origen (por ejemplo, DDL>DML>DDL) pueden provocar un análisis incorrecto del registro y AWS DMS provocar la pérdida de datos o un comportamiento inesperado. Para mantener la coherencia de los datos, espere a que se apliquen todos los cambios AWS DMS al destino antes de realizar las siguientes operaciones.

Por ejemplo, durante la captura de datos de cambios (CDC), varias operaciones rápidas de cambio de nombre de una tabla de origen pueden provocar errores. Si cambias el nombre de una tabla y, a continuación, le cambias rápidamente el nombre a su nombre original, AWS DMS podría indicar que la tabla ya existe en la base de datos de destino.

# Configuración avanzada de puntos de conexión
<a name="CHAP_Advanced.Endpoints"></a>

Puedes configurar ajustes avanzados para tus puntos finales en AWS Database Migration Service (AWS DMS) para controlar el comportamiento de los puntos finales de origen y destino durante el proceso de migración. Como parte de la configuración avanzada, puede configurar el emparejamiento de AWS DMS VPC para permitir una comunicación segura entre VPCs, los grupos de seguridad del DMS para controlar el tráfico entrante y saliente, las listas de control de acceso a la red (NACLs) como capa adicional de seguridad y los puntos finales de VPC para Secrets Manager. AWS 

Puede configurar estas configuraciones durante la creación de los terminales o modificarlas posteriormente mediante la AWS DMS consola o la API para ajustar los procesos de migración en función de los requisitos específicos del motor de base de datos y las necesidades de rendimiento.

A continuación, encontrará más detalles acerca de la configuración de punto de conexión.

**Topics**
+ [Configuración de emparejamiento de VPC para. AWS DMS](CHAP_Advanced.Endpoints.vpc.peering.md)
+ [Configuración de grupos de seguridad para AWS DMS](CHAP_Advanced.Endpoints.securitygroup.md)
+ [Configuración de la lista de control de acceso a la red (NACL) para AWS DMS](CHAP_Advanced.Ednpoints.NACL.md)
+ [Configuración del punto AWS DMS final de VPC del administrador de secretos](CHAP_Advanced.Endpoints.secretsmanager.md)
+ [Consideraciones adicionales](#CHAP_secretsmanager.additionalconsiderations)

# Configuración de emparejamiento de VPC para. AWS DMS
<a name="CHAP_Advanced.Endpoints.vpc.peering"></a>

La interconexión de VPC permite la conectividad de red privada entre dos VPCs, lo que permite que las instancias de AWS DMS replicación y los puntos finales de la base de datos se comuniquen entre sí, VPCs como si estuvieran en la misma red. Esto es crucial cuando la instancia de replicación de DMS reside en una VPC mientras que las bases de datos de origen y destino están VPCs separadas, lo que permite una migración de datos directa y segura sin tener que atravesar la Internet pública.

Al utilizar Amazon RDS, debe configurar la interconexión de VPC entre DMS y RDS si sus instancias están ubicadas en lugares diferentes. VPCs

Debe realizar los pasos siguientes:

**Creación de una interconexión de VPC**

1. Vaya a la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/).

1. En el panel de navegación, seleccione **Conexiones de emparejamiento** en **Nube privada virtual**.

1. Haga clic en **Crear conexión de emparejamiento**.

1. Configure las conexiones de emparejamiento:
   + Etiqueta de nombre (opcional): introduzca un nombre para la conexión de emparejamiento (por ejemplo, `DMS-RDS-Peering`).

     **Solicitante de VPC**: seleccione la VPC que contiene su instancia de DMS.
   + **Receptor de VPC**: seleccione la VPC que contiene su instancia de RDS.
**nota**  
Si la VPC receptora está asociada a una cuenta de AWS diferente, debe tener el ID de cuenta y el ID de VPC de esa cuenta.

1. Haga clic en **Crear conexión de emparejamiento**.

**Aceptación de la conexión de emparejamiento de VPC**

1. En la lista **Conexiones de emparejamiento**, busque la nueva conexión de emparejamiento con el estado **Aceptación pendiente**.

1. Seleccione la conexión de emparejamiento adecuada, haga clic en **Acciones** y elija **Aceptar solicitud**.

   El estado de la conexión de emparejamiento cambia a **Activa**.

**Actualización de las tablas de enrutamiento**

Para habilitar el tráfico entre ellos VPCs, debe actualizar la tabla de rutas en ambos. VPCs Para actualizar las tablas de enrutamiento en la VPC de DMS:

1. Identifique el bloque de CIDR de la VPC de RDS:

   1. Navegue hasta su VPC de RDS VPCs y selecciónela.

   1. Copie el valor del IPv4 CIDR en la pestaña. **CIDRs**

1. Identifique las tablas de enrutamiento de DMS pertinentes con el mapa de recursos:

   1. Navegue hasta su VPC de DMS VPCs y selecciónela.

   1. Haga clic en la pestaña **Mapa de recursos** y anote las tablas de enrutamiento asociadas a las subredes en las que se encuentra su instancia de DMS.

1. Actualice todas las tablas de enrutamiento en la VPC de DMS:

   1. Navegue hasta las tablas de enrutamiento de la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/).

   1. Seleccione los identificadores de las tablas de enrutamiento para la VPC de DMS. Puede abrirlas desde la pestaña **Mapa de recursos** de la VPC.

   1. Haga clic en **Editar rutas**.

   1. Elija Añadir regla y especifique la siguiente información:
      + **Destino**: introduzca el bloque IPv4 CIDR de la VPC de RDS (ejemplo:). `10.1.0.0/16`
      + **Destino**: seleccione el ID de configuración de emparejamiento (por ejemplo, `pcx-1234567890abcdef`).

   1. Haga clic en **Guardar rutas**.

      Sus rutas de VPC se guardan para la VPC de DMS. Siga los mismos pasos para la VPC de RDS.

**Actualización de grupos de seguridad**

1. Compruebe el grupo de seguridad de la instancia de DMS:

   1. Debe asegurarse de que las reglas de salida permitan el tráfico a la instancia de RDS:
     + **Tipo**: TCP personalizado o el puerto de base de datos específico (por ejemplo, 3306 para MySQL).
     + **Destino**: el bloque de CIDR de la VPC de RDS o el grupo de seguridad de la instancia de RDS.

1. Compruebe el grupo de seguridad de la instancia de RDS:

   1. Debe asegurarse de que las reglas de entrada permitan el tráfico desde la instancia de DMS:
     + **Tipo**: el puerto específico de la base de datos.
     + Origen: el bloque de CIDR de la VPC de DMS o el grupo de seguridad de la instancia de RDS.

**nota**  
También debe asegurarse de lo siguiente:  
**Conexión de emparejamiento activa**: asegúrese de que la conexión de emparejamiento de VPC tenga el estado **Activa** antes de continuar.
**Mapa de recursos**: utilice la pestaña **Mapa de recursos** de la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/) para identificar qué tablas de enrutamiento deben actualizarse.
**Sin bloques de CIDR superpuestos: VPCs deben tener bloques** de CIDR que no se superpongan.
**Prácticas recomendadas de seguridad**: restrinja las reglas del grupo de seguridad a los puertos y orígenes necesarios.  
Para obtener más información, consulte [Conexiones de emparejamiento de VPC](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html) en la *Guía del usuario de Amazon Virtual Private Cloud*.

# Configuración de grupos de seguridad para AWS DMS
<a name="CHAP_Advanced.Endpoints.securitygroup"></a>

El grupo de seguridad AWS DMS debe permitir las conexiones entrantes y salientes para las instancias de replicación en el puerto de base de datos correspondiente. Si utiliza Amazon RDS, debe configurar el grupo de seguridad entre DMS y RDS para sus instancias.

Debe realizar los pasos siguientes:

**Configuración del grupo de seguridad de la instancia de RDS**

1. Vaya a la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/).

1. En el panel de navegación izquierdo, en **Seguridad**, seleccione **Grupos de seguridad**.

1. Seleccione el grupo de seguridad asociado a su instancia de RDS.

1. Edición de las reglas entrantes:

   1. Haga clic en **Acciones** y seleccione **Editar reglas de entrada**.

   1. Haga clic en **Añadir regla** para crear una nueva regla.

   1. Configure la regla del modo siguiente:
      + **Tipo**: seleccione el tipo de base de datos (por ejemplo: MySQL/Aurora para el puerto 3306, PostgreSQL para el puerto 5432).
      + **Protocolo**: se rellena automáticamente en función del tipo de base de datos.
      + **Rango de puertos**: se rellena automáticamente en función del tipo de base de datos.
      + **Origen**: elija **Personalizado** y pegue el ID del grupo de seguridad asociado a su instancia de DMS. Esto permite el tráfico desde cualquier recurso dentro de ese grupo de seguridad. También puede especificar el rango de IP (bloque de CIDR) de su instancia de DMS.

   1. Haga clic en **Guardar reglas**.

**Configuración del grupo de seguridad de instancia de replicación de DMS**

1. Vaya a la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/).

1. En el panel de navegación izquierdo, en **Seguridad**, seleccione **Grupos de seguridad**.

1. En la lista **Grupos de seguridad**, busque y seleccione el grupo de seguridad asociado a su instancia de replicación de DMS.

1. Edición de las reglas entrantes:

   1. Seleccione **Acciones** y **Editar reglas de salida**.

   1. Haga clic en **Añadir regla** para crear una nueva regla.

   1. Configure la regla del modo siguiente:
      + Tipo: seleccione el tipo de base de datos (por ejemplo, MySQL/Aurora o PostgreSQL).
      + Protocolo: se rellena automáticamente en función del tipo de base de datos.
      + Rango de puertos: se rellena automáticamente en función del tipo de base de datos.
      + Origen: elija **Personalizado** y pegue el ID del grupo de seguridad asociado a su instancia de RDS. Esto permite el tráfico desde cualquier recurso dentro de ese grupo de seguridad. También puede especificar el rango de IP (bloque de CIDR) de su instancia de RDS.

   1. Haga clic en **Guardar reglas**.

## Consideraciones adicionales
<a name="CHAP_securitygroup_additional_considerations"></a>

Debe tener en cuenta la siguiente información de configuración adicional:
+ **Uso de referencias a grupos de seguridad**: hacer referencia a los grupos de seguridad en las instancias de origen o destino permite administrar de forma dinámica y es más seguro que usar direcciones IP, ya que incluye automáticamente todos los recursos del grupo.
+ **Puertos de base de datos**: asegúrese de utilizar el puerto correcto para su base de datos.
+ **Prácticas recomendadas de seguridad**: abra únicamente los puertos necesarios para minimizar los riesgos de seguridad. También debe revisar periódicamente las reglas de su grupo de seguridad para asegurarse de que cumplen con sus estándares y requisitos de seguridad.

# Configuración de la lista de control de acceso a la red (NACL) para AWS DMS
<a name="CHAP_Advanced.Ednpoints.NACL"></a>

Cuando utilice Amazon RDS como fuente de replicación, debe actualizar las listas de control de acceso a la red (NACLs) de su instancia de DMS y RDS. Asegúrese de que NACLs estén asociadas a las subredes en las que residen estas instancias. Esto permite el tráfico entrante y saliente en el puerto de base de datos específico.

Para actualizar las listas de control de acceso a la red, debe realizar estos pasos:

**nota**  
Si las instancias de DMS y RDS están en la misma subred, solo necesita actualizar la NACL de esa subred.

**Identifique las relevantes NACLs**

1. Vaya a la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/).

1. En el panel de navegación de la izquierda, en **Seguridad**, selecciona **Red ACLs**.

1. Seleccione la correspondiente NACLs asociada a las subredes en las que residen sus instancias de DMS y RDS.

**Actualice la subred de la NACLs instancia de DMS**

1. Identifique la NACL asociada a la subred de la instancia de DMS. Para ello, puede navegar por las subredes de la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/), buscar la subred de DMS y anotar el ID de NACL asociado.

1. Edición de las reglas entrantes:

   1. Haga clic en la pestaña **Reglas de entrada** de la NACL seleccionada.

   1. A continuación, seleccione **Editar reglas de entrada**.

   1. Agregue una nueva regla:
      + **Regla n.º**: elija un número unívoco (por ejemplo, 100).
      + **Tipo**: seleccione una **Regla TCP personalizada**.
      + **Protocolo**: TCP
      + **Rango de puertos**: introduzca el puerto de su base de datos (por ejemplo, 3306 para MySQL).
      + **Origen**: indique el bloque de CIDR de la subred de RDS (por ejemplo, 10.1.0.0/16).
      + **Permitir/denegar**: seleccione **Permitir**.

1. Edición de las reglas entrantes:

   1. Haga clic en la pestaña **Reglas de salida** de la NACL seleccionada.

   1. Haga clic en **Editar reglas de salida**.

   1. Agregue una nueva regla:
      + **Regla n.º**: utilice el mismo número que en las reglas de entrada.
      + **Tipo**: todo el tráfico
      + **Destino**: 0.0.0.0/0
      + **Permitir/denegar**: seleccione **Permitir**.

1. Haga clic en **Guardar cambios**.

1. Realice los mismos pasos para actualizar la subred NACLs asociada a la instancia de RDS.

## Verificación de las reglas de NACL
<a name="CHAP_NACL.verify.NACL.Rules"></a>

Debe garantizar que se cumplen los siguientes criterios para aplicar las reglas de la NACL:
+ **Orden de las reglas**: NACLs procesa las reglas en orden ascendente en función del número de la regla. Asegúrese de que todas las reglas que estén definidas como **Permitir** tengan números de regla más bajos que todas las reglas configuradas como **Denegar**, ya que eso podría bloquear el tráfico.
+ **Carácter apátrida: son apátridas.** NACLs Debe permitir de forma explícita tanto el tráfico entrante como el saliente.
+ **Bloques de CIDR**: debe asegurarse de que los bloques de CIDR que utilice representen con precisión las subredes de sus instancias de DMS y RDS.

# Configuración del punto AWS DMS final de VPC del administrador de secretos
<a name="CHAP_Advanced.Endpoints.secretsmanager"></a>

Debe crear un punto final de VPC para acceder a AWS Secrets Manager desde una instancia de replicación en una subred privada. Esto permite que la instancia de replicación acceda a Secrets Manager directamente a través de la red privada sin enviar tráfico a través de la Internet pública.

Para la configuración, siga estos pasos:

**Cree un grupo de seguridad para el punto de conexión de VPC.**

1. Vaya a la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/).

1. En el panel de navegación izquierdo, elija **Grupos de seguridad** y **Crear grupo de seguridad**.

1. Configuración de la información de los grupos de seguridad:
   + **Nombre del grupo de seguridad**: Ejemplo: `SecretsManagerEndpointSG`
   + **Descripción**: introduzca una descripción adecuada. (Por ejemplo, el grupo de seguridad para el punto de conexión de VPC de Secrets Manager).
   + **VPC:** seleccione la VPC en la que residen la instancia de replicación y los puntos de conexión.

1. Haga clic en **Agregar regla** para establecer las reglas de entrada y configurar lo siguiente:
   + Tipo: HTTPS (puesto que Secrets Manager usa HTTPS en el puerto 443).
   + Fuente: elija **Personalizado** e introduzca el ID del grupo de seguridad de su instancia de replicación. Esto garantiza que cualquier instancia asociada a ese grupo de seguridad pueda acceder al punto de conexión de VPC.

1. Revise los cambios y haga clic en **Crear grupo de seguridad**.

**Creación de un punto de conexión de VPC para Secrets Manager**
**nota**  
Cree un punto de conexión de VPC de interfaz tal y como se describe en la documentación [Creación de un punto de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) de la *guía del usuario de Amazon Virtual Private Cloud*. Al seguir este procedimiento, asegúrese de lo siguiente:  
En **Categoría de servicio**, seleccione **Servicios de AWS **.
En **Nombre del servicio**, busque `seretsmanager` y seleccione el servicio de Secrets Manager.

1. Seleccione **VPC y subredes** y configure lo siguiente:
   + **VPC**: asegúrese de que sea la misma VPC que la instancia de replicación.
   + **Subredes**: seleccione las subredes en las que reside la instancia de replicación.

1. En **Configuración adicional**, asegúrese de que **Habilitar nombre de DNS** esté habilitado de forma predeterminada para los puntos de conexión de la interfaz.

1. En **Grupo de seguridad**, seleccione el nombre del grupo de seguridad adecuado. Ejemplo: `SecretsManagerEndpointSG`, tal como se ha creado anteriormente.

1. Revise todos los ajustes y haga clic en **Crear punto de conexión**.

**Obtención del nombre de DNS del punto de conexión de VPC**

1. Acceda a los detalles del punto de conexión de VPC:

   1. Vaya a la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/) y elija **Puntos de conexión**.

   1. Seleccione el punto de conexión que ha creado.

1. Copie el nombre de DNS:

   1. En la pestaña **Detalles**, vaya a la sección **Nombres de DNS**.

   1. Copie el primer nombre de DNS de la lista. (Ejemplo: `vpce-0abc123def456789g-secretsmanager.us-east-1.vpce.amazonaws.com`). Este es el nombre de DNS regional.

**Actualización de su punto de conexión de DMS**

1. Vaya a la consola de [AWS DMS](https://console.aws.amazon.com/dms/v2).

1. Modifique el punto de conexión de DMS:

   1. En el panel de navegación de la izquierda, elija **Puntos de conexión**.

   1. Elija el punto de conexión adecuado que desee configurar.

   1. Haga clic en **Acciones** y seleccione **Modificar**.

1. Configure el punto de conexión:

   1. Vaya a la **Configuración de puntos de conexión** y seleccione la casilla **Usar los atributos de conexión del punto de conexión**.

   1. En el campo **Atributos de conexión**, añada `secretsManagerEndpointOverride=<copied DNS name>`.
**nota**  
Si tiene varios atributos de conexión, puede separarlos con un punto y coma “;”. Por ejemplo: `datePartitionEnabled=false;secretsManagerEndpointOverride=vpce-0abc123def456789g-secretsmanager.us-east-1.vpce.amazonaws.com`

1. Haga clic en **Modificar punto de conexión** para guardar los cambios.

## Consideraciones adicionales
<a name="CHAP_secretsmanager.additionalconsiderations"></a>

Debe tener en cuenta la siguiente información de configuración adicional:

**Grupo de seguridad de instancias de replicación:**
+ Asegúrese de que el grupo de seguridad asociado con la instancia de replicación permita el tráfico saliente al punto de conexión de VPC en el puerto 443 (HTTPS).

**Configuración de DNS de VPC:**
+ Confirme que **Resolución de DNS** y **Nombres de host de DNS** estén habilitados en su VPC. Esto permite que las instancias resuelvan los nombres de DNS de los puntos de conexión de VPC. ****Para confirmarlo, vaya a VPCs la consola de [Amazon VPC y seleccione su VPC](https://console.aws.amazon.com/vpc/) para comprobar **que la resolución de DNS y los nombres de acceso de DNS** estén configurados en «Sí».****

**Prueba de conectividad:**
+ Desde la instancia de replicación, puede realizar una búsqueda de DNS para asegurarse de que resuelva el punto de conexión de VPC `nslookup secretsmanager.<region>amazonaws.com`. Debe devolver la dirección IP asociada a su punto de conexión de VPC.