Uso de una base de datos de Oracle como destino para AWS Database Migration Service - AWS Database Migration Service

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.

Uso de una base de datos de Oracle como destino para AWS Database Migration Service

Puede migrar datos a bases de datos de destino de Oracle mediante AWS DMS, ya sea desde otra base de datos de Oracle o desde una de las otras bases de datos admitidas. 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 Uso de SSL con AWS Database Migration Service. AWS DMS también admite el uso del cifrado transparente de datos (TDE) de Oracle para cifrar datos en reposo en la base de datos de destino porque Oracle TDE no requiere una clave de cifrado o una contraseña para escribir en la base de datos.

Para obtener información sobre las versiones de Oracle que AWS DMS admite como destino, consulte Objetivos para AWS DMS.

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" }

Cuando se utiliza Oracle como destino, AWS DMS migra todas las tablas e índices a los espacios de tabla de índice y de tabla 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.

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, consultar Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS

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

Restricciones en Oracle como destino para AWS Database Migration Service

Las restricciones al utilizar Oracle como destino para la migración de datos son las siguientes:

  • AWS DMS no crea ningún esquema en la base de datos de 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 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 de esquemas en las asignaciones de las tablas de AWS DMS.

  • AWS DMS no admite la opción Use direct path full load 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 dar lugar a que la validación de AWS DMS informe 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 uno por uno.

  • AWS DMS no es compatible con una base de datos autónoma en Oracle Cloud Infrastructure (OCI).

Privilegios de la cuenta de usuario necesarios para utilizar Oracle como destino

Para utilizar un destino de Oracle en una tarea de AWS Database Migration Service, conceda los siguientes privilegios en la base de datos 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$NLS_PARAMETERS

  • SELECT on V$TIMEZONE_NAMES

  • SELECT on ALL_INDEXES

  • SELECT on ALL_OBJECTS

  • SELECT on DBA_OBJECTS

  • SELECT on ALL_TABLES

  • SELECT on ALL_USERS

  • SELECT on ALL_CATALOG

  • SELECT on ALL_CONSTRAINTS

  • SELECT on ALL_CONS_COLUMNS

  • SELECT on ALL_TAB_COLS

  • SELECT on ALL_IND_COLUMNS

  • 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.

Privilegios de lectura necesarios para AWS Database Migration Service en la base de datos de destino

La cuenta de usuario de AWS DMS debe tener permisos de lectura para las siguientes tablas de administradores de bases de datos:

  • SELECT on DBA_USERS

  • SELECT on DBA_TAB_PRIVS

  • SELECT on DBA_OBJECTS

  • SELECT on DBA_SYNONYMS

  • SELECT on DBA_SEQUENCES

  • SELECT on DBA_TYPES

  • SELECT on DBA_INDEXES

  • SELECT on DBA_TABLES

  • SELECT en DBA_TRIGGERS

  • SELECT on SYS.DBA_REGISTRY

Si alguno de los privilegios necesarios no se puede conceder a V$xxx, concédalos a V_$xxx.

Configuración de una base de datos de Oracle como destino para AWS Database Migration Service

Antes de utilizar una base de datos de Oracle como destino de migración de datos, debe proporcionar una cuenta de usuario de Oracle a AWS DMS. La cuenta de usuario debe disponer de privilegios de lectura y escritura en la base de datos de Oracle, según se especifica en Privilegios de la cuenta de usuario necesarios para utilizar Oracle como destino.

Configuración de puntos de conexión al utilizar Oracle como destino para AWS DMS

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. Se especifican los ajustes cuando se crea el punto de conexión de destino mediante la consola de AWS DMS o mediante el comando create-endpoint en la AWS CLI, con la sintaxis JSON --oracle-settings '{"EndpointSetting": "value", ...}'.

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

Nombre Descripción

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.

Valor predeterminado: nulo

Valores válidos: cualquier carácter que no sea un carácter comodín

Ejemplo: --oracle-settings '{"EscapeCharacter": "#"}'

UseDirectPathFullLoad

Cuando se establece en Y, AWS DMS utiliza una carga completa de ruta directa. Especifique este valor para habilitar el protocolo de ruta directa en Oracle Call Interface (OCI). Este protocolo de OCI habilita la carga masiva de tablas de destino de Oracle durante una carga completa.

Valor predeterminado: true

Valores válidos: true/false

Ejemplo: --oracle-settings '{"UseDirectPathFullLoad": false}'

DirectPathParallelLoad

Cuando se establece en true, este atributo especifica una carga paralela cuando UseDirectPathFullLoad se establece en Y. Este atributo también se aplica solo cuando se utiliza la característica de carga paralela de AWS DMS. Para obtener más información, consulte la descripción de la operación parallel-load en Reglas y operaciones de configuración de tablas y recopilaciones.

Una restricción en la especificación de esta configuración de carga paralela es que la tabla de destino no puede tener restricciones ni índices. Para obtener más información sobre esta restricción, consulte Habilitación de restricciones después de una carga de ruta directa paralela. Si las restricciones o los índices están habilitados, establecer este atributo en true no tiene ningún efecto.

Valor predeterminado: false

Valores válidos: true/false

Ejemplo: --oracle-settings '{"DirectPathParallelLoad": true}'

DirectPathNoLog

Cuando se establece en true, este atributo ayuda a aumentar la tasa de confirmación en la base de datos de destino de Oracle escribiendo directamente en las tablas y no escribiendo un registro de seguimiento en los registros de la base de datos. Para obtener más información, consulte Direct-Load INSERT. Este atributo también se aplica solo cuando se establece UseDirectPathFullLoad en Y.

Valor predeterminado: false

Valores válidos: true/false

Ejemplo: --oracle-settings '{"DirectPathNoLog": true}'

CharLengthSemantics

Especifica si la longitud de una columna de caracteres está expresada en bytes o en caracteres. Para indicar que la longitud de la columna de caracteres está en caracteres, establezca este atributo en CHAR. De lo contrario, la longitud de la columna de caracteres está en bytes.

Valor predeterminado: no establecido en CHAR

Valores válidos: CHAR

Ejemplo: --oracle-settings '{"CharLengthSemantics": "CHAR"}'

AlwaysReplaceEmptyString

AWS DMS agrega un espacio adicional para replicar una cadena vacía al migrar a un destino de Oracle. En general, Oracle no tiene una notación para una cadena vacía. Al insertar una cadena vacía en varchar2, las cadenas vacías se cargan como NULL. Si desea insertar los datos como NULL en Oracle, establezca este atributo en FALSO.

Valor predeterminado: true

Valores válidos: true/false

Ejemplo: --oracle-settings '{"AlwaysReplaceEmptyString": false}'

Tipos de datos de destino para Oracle

Las bases de datos Oracle que se utilizan con AWS DMS admiten 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 utiliza AWS DMS y la asignación predeterminada desde los tipos de datos de AWS DMS. 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.

Tipos de datos de AWS DMS

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_with_timezone: TIMESTAMP WITH TIMEZONE

Con indicación de timestamp_with_local_timezone: TIMESTAMP WITH LOCAL TIMEZONE Con indicación de interval_year_to_month: INTERVAL YEAR TO MONTH

Con indicación de interval_day_to_second: INTERVAL DAY TO SECOND

Si longitud > 4000: CLOB

En el resto de casos: VARCHAR2 (longitud)

UINT1

NUMBER (3)

UINT2

NUMBER (5)

UINT4

NUMBER (10)

UINT8

NUMBER (19)

WSTRING

Si longitud > 2000: NCLOB

En el resto de casos: NVARCHAR2 (longitud)

BLOB

BLOB

Para utilizar este tipo de datos con AWS DMS, será preciso habilitar el uso de BLOB para una tarea en particular. Los tipos de datos BLOB se admiten únicamente en las tablas que incluyen una clave principal

CLOB

CLOB

Para utilizar este tipo de datos con AWS DMS, será preciso habilitar el uso de CLOB para una tarea concreta. 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 datos de Oracle VARCHAR2 en el origen con un tamaño declarado superior a 4000 bytes se asigna a través de CLOB de AWS DMS a STRING en el destino de Oracle.

NCLOB

NCLOB

Para utilizar este tipo de datos con AWS DMS, será preciso habilitar el uso de NCLOB para una tarea en particular. En la CDC, los tipos de datos NCLOB se admiten únicamente en las tablas que incluyen una clave principal.

WSTRING

Un tipo de datos de Oracle VARCHAR2 en el origen con un tamaño declarado superior a 4000 bytes se asigna a través de NCLOB de AWS DMS a WSTRING en el destino de Oracle.

XMLTYPE

El tipo de datos de destino XMLTYPE solo es pertinente en tareas de replicación de Oracle a 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.