Migre una base de datos Oracle local a Amazon RDS for Oracle mediante la importación directa de Oracle Data Pump a través de un enlace de base de datos - Recomendaciones de AWS

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.

Migre una base de datos Oracle local a Amazon RDS for Oracle mediante la importación directa de Oracle Data Pump a través de un enlace de base de datos

Creado por Rizwan Wangde () AWS

Entorno: producción

Origen: Base de datos de Oracle en las instalaciones

Objetivo: Amazon RDS para Oracle

Tipo R: redefinir la plataforma

Carga de trabajo: Oracle

Tecnologías: Migración; bases de datos

AWSservicios: AWS DMS AWS Direct Connect; Amazon RDS

Numerosos patrones cubren la migración de bases de datos Oracle locales a Amazon RDS for Oracle mediante Oracle Data Pump, una utilidad nativa de Oracle que es la forma preferida de migrar grandes cargas de trabajo de Oracle. Estos patrones suelen implicar la exportación de esquemas o tablas de aplicaciones a archivos de volcado, la transferencia de los archivos de volcado a un directorio de base de datos en Amazon RDS for Oracle y, a continuación, la importación de los esquemas de aplicación y los datos de los archivos de volcado.

Con este enfoque, la migración puede tardar más en función del tamaño de los datos y del tiempo que se tarde en transferir los archivos de volcado a la RDS instancia de Amazon. Además, los archivos de volcado residen en el volumen Amazon Elastic Block Store (AmazonEBS) de la RDS instancia de Amazon, que debe ser lo suficientemente grande para la base de datos y los archivos de volcado. Si los archivos volcados se eliminan tras la importación, no se puede recuperar el espacio vacío, por lo que tendrá que pagar por el espacio no utilizado.

Este patrón mitiga estos problemas al realizar una importación directa en la RDS instancia de Amazon mediante Oracle Data Pump API (DBMS_DATAPUMP) a través de un enlace de base de datos. El patrón inicia una canalización de exportación e importación simultánea entre las bases de datos de origen y destino. Este patrón no requiere ajustar el tamaño de un EBS volumen para los archivos de volcado porque no se crea ni almacena ningún archivo de volcado en el volumen. Este enfoque ahorra el costo mensual del espacio en disco no utilizado.

Requisitos previos 

  • Una cuenta de Amazon Web Services (AWS) activa.

  • Una nube privada virtual (VPC) configurada con subredes privadas en al menos dos zonas de disponibilidad, para proporcionar la infraestructura de red para la RDS instancia de Amazon.

  • Una base de datos de Oracle en un centro de datos en las instalaciones.

  • Una instancia de Amazon RDS Oracle existente en una única zona de disponibilidad. El uso de una única zona de disponibilidad mejora el rendimiento de escritura durante la migración. Se puede habilitar una implementación Multi-AZ entre 24 y 48 horas antes de la transición.

  • AWSDirect Connect (recomendado para bases de datos de gran tamaño).

  • Reglas de firewall y conectividad de red locales configuradas para permitir una conexión entrante desde la RDS instancia de Amazon a la base de datos Oracle local.

Limitaciones

  • El límite de tamaño de la base de datos en Amazon RDS para Oracle es de 64 TiB (a partir de diciembre de 2022).

Versiones de producto

  • Base de datos de origen: base de datos de Oracle 10g, versión 1 y posteriores.

  • Base de datos de destino: para obtener la lista más reciente de versiones y ediciones compatibles en AmazonRDS, consulte Amazon RDS for Oracle en la AWS documentación.

Pila de tecnología de origen

  • Base de datos de Oracle autoadministrada en las instalaciones o en la nube

Pila de tecnología de destino

  • Amazon RDS para Oracle

Arquitectura de destino

El siguiente diagrama muestra la arquitectura para migrar de una base de datos Oracle local a Amazon RDS for Oracle en un entorno Single-AZ. Las direcciones de las flechas representan el flujo de datos en la arquitectura. El diagrama no muestra qué componente está iniciando la conexión.

Migración completa para una base de datos Oracle local.
  1. La instancia de Amazon RDS for Oracle se conecta a la base de datos Oracle de origen local para realizar una migración a toda carga a través del enlace de la base de datos.

  2. AWSDMSse conecta a la base de datos Oracle de origen local para realizar una replicación continua mediante la captura de datos de cambios (). CDC

  3. CDClos cambios se aplican a la base de datos RDS de Amazon for Oracle.

AWSservicios

  • AWSDatabase Migration Service (AWSDMS) le ayuda a migrar los almacenes de datos a la AWS nube o entre combinaciones de configuraciones locales y en la nube. Este patrón utiliza CDC y la configuración Replicar datos solo cambia.

  • AWSDirect Connect conecta su red interna a una ubicación de Direct Connect a través de un cable Ethernet de fibra óptica estándar. Con esta conexión, puede crear interfaces virtuales directamente con los AWS servicios públicos y, al mismo tiempo, omitir a los proveedores de servicios de Internet en su ruta de red.

  • Amazon Relational Database Service (RDSAmazon) para Oracle le ayuda a configurar, operar y escalar una base de datos relacional de Oracle en AWS la nube.

Otras herramientas

  • Oracle Data Pump le ayuda a trasladar datos y metadatos de una base de datos a otra a altas velocidades.

  • Las herramientas de cliente, como Oracle Instant Client o SQLDeveloper, se utilizan para conectar y ejecutar SQL consultas en la base de datos.

Si bien AWSDirect Connect utiliza conexiones de red privadas y dedicadas entre la red localAWS, tenga en cuenta las siguientes opciones para aumentar la seguridad y el cifrado de datos de los datos en tránsito:

TareaDescripciónHabilidades requeridas

Configurar la conectividad de red desde la base de datos de destino a la base de datos de origen.

Configure la red local y el firewall para permitir la conexión entrante desde la RDS instancia de Amazon de destino a la base de datos Oracle de origen local.

Administrador de redes, ingeniero de seguridad

Crear un usuario de base de datos con los privilegios adecuados.

Cree un usuario de base de datos en la base de datos de Oracle de origen en las instalaciones con privilegios para migrar datos entre el origen y el destino mediante Oracle Data Pump.

GRANT CONNECT to <migration_user>; GRANT DATAPUMP_EXP_FULL_DATABASE to <migration_user>; GRANT SELECT ANY TABLE to <migration_user>;
DBA

Prepare la base de datos de origen local para la migración. AWS DMS CDC

(Opcional) Prepare la base de datos Oracle de origen local para la AWS DMS CDC migración una vez finalizada la carga completa de Oracle Data Pump:

  1. Configure los privilegios adicionales necesarios para la gestión FLASHBACK durante la migración de Oracle Data Pump.

    GRANT FLASHBACK ANY TABLE to <migration_user>; GRANT FLASHBACK ARCHIVE ADMINISTER to <migration_user>;
  2. Para configurar los privilegios de las cuentas de usuario necesarios en una fuente de Oracle autogestionada AWSDMS, consulte la AWSDMSdocumentación.

  3. Para preparar una base de datos fuente autogestionada de Oracle para su CDC uso AWSDMS, consulte la AWS DMS documentación.

DBA

Instale y configure SQL Developer.

Instale y configure SQLDeveloper para conectar y ejecutar SQL consultas en las bases de datos de origen y destino.

DBA, ingeniero de migraciones

Generar un script para crear los espacios de tabla.

Utilice la siguiente SQL consulta de ejemplo para generar el script en la base de datos de origen.

SELECT 'CREATE TABLESPACE ' tablespace_name ' DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE UNLIMITED;' from dba_tablespaces where tablespace_name not in ('SYSTEM', 'SYSAUX','TEMP','UNDOTBS1') order by 1;

El script se aplicará en la base de datos de destino.

DBA

Generar un script para crear usuarios, perfiles, roles y privilegios.

Para generar un script para crear los usuarios, perfiles, roles y privilegios de la base de datos, utilice los scripts del documento de Oracle Support How to Extract DDL for User, incluidos los privilegios y roles mediante dbms_metadata.get_ddl (ID de documento 2739952.1) (se requiere una cuenta de Oracle).

El script se aplicará en la base de datos de destino.

DBA
TareaDescripciónHabilidades requeridas

Crear un enlace de base de datos a la base de datos origen y verificar la conectividad.

Para crear un enlace de base de datos a la base de datos en las instalaciones de origen, puede usar el comando de ejemplo siguiente.

CREATE DATABASE LINK link2src CONNECT TO <migration_user_account> IDENTIFIED BY <password> USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>) (PORT=<listener port>))(CONNECT_DATA=(SID=<remote SID>)))';

Para verificar la conectividad, ejecuta el siguiente SQL comando.

select * from dual@link2src;

La conectividad es correcta si la respuesta es X.

DBA

Ejecute los scripts para preparar la instancia de destino.

Ejecute los scripts generados anteriormente para preparar la instancia de Amazon RDS para Oracle de destino:

  1. Espacios de tabla

  2. Perfiles

  3. Roles

Esto ayuda a garantizar que la migración de Oracle Data Pump pueda crear los esquemas y sus objetos.

DBA, ingeniero de migración
TareaDescripciónHabilidades requeridas

Migre los esquemas necesarios.

Para migrar los esquemas necesarios de la base de datos local de origen a la RDS instancia de Amazon de destino, usa el código de la sección de información adicional:

  • Para migrar un único esquema, ejecute el código 1 desde la sección de información adicional.

  • Para migrar múltiples esquemas, ejecute el código 2 desde la sección de información adicional.

Para ajustar el rendimiento de la migración, puede ajustar el número de procesos paralelos ejecutando el siguiente comando.

DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4);
DBA

Recopile estadísticas de esquema para mejorar el rendimiento.

El comando Recopilar estadísticas del esquema devuelve las estadísticas del optimizador de consultas de Oracle recopiladas para los objetos de la base de datos. Con esta información, el optimizador puede seleccionar el mejor plan de ejecución para cualquier consulta relacionada con estos objetos.

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => '<schema_name>');
DBA
TareaDescripciónHabilidades requeridas

Capture la SCN base de datos Oracle local de origen.

Capture el número de cambio del sistema (SCN) en la base de datos Oracle local de origen. Lo utilizará SCN para la importación a plena carga y como punto de partida para CDC la replicación.

Para generar la corriente SCN en la base de datos de origen, ejecute la siguiente SQL instrucción.

SELECT current_scn FROM V$DATABASE;
DBA

Realizar la migración a plena carga de los esquemas.

Para migrar los esquemas necesarios (FULL LOAD) de la base de datos local de origen a la RDS instancia de Amazon de destino, haga lo siguiente:

  • Para migrar un único esquema, ejecute el código 3 desde la sección de información adicional.

  • Para migrar múltiples esquemas, ejecute el código 4 desde la sección de información adicional.

En el código, <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE> sustitúyalo por el SCN que capturaste de la base de datos de origen.

DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>);

Para ajustar el rendimiento de la migración, puede configurar el número de procesos paralelos ejecutando el siguiente comando.

DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4);
DBA

Deshabilitar los desencadenadores en los esquemas migrados.

Antes de comenzar la tarea AWS DMS CDC exclusiva, deshabilite la que aparece TRIGGERS debajo de los esquemas migrados.

DBA

Recopile estadísticas de esquema para mejorar el rendimiento.

El comando Recopilar estadísticas del esquema devuelve las estadísticas del optimizador de consultas de Oracle recopiladas para los objetos de la base de datos. Con esta información, el optimizador puede seleccionar el mejor plan de ejecución para cualquier consulta relacionada con estos objetos.

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => '<schema_name>');
DBA

Se utiliza AWS DMS para realizar una replicación continua desde el origen al destino.

Se utiliza AWS DMS para realizar una replicación continua desde la base de datos de Oracle de origen a la instancia de Amazon RDS for Oracle de destino.

Para obtener más información, consulte Creación de tareas para la replicación continua utilizando AWS DMS y la entrada del blog Cómo trabajar con CDC soporte nativo en AWS DMS.

DBA, ingeniero de migración
TareaDescripciónHabilidades requeridas

Habilitar la opción Multi-AZ en la instancia 48 horas antes de la transición.

Si se trata de una instancia de producción, recomendamos habilitar la implementación Multi-AZ en la RDS instancia de Amazon para ofrecer las ventajas de la alta disponibilidad (HA) y la recuperación ante desastres (DR).

DBA, ingeniero de migración

Detenga la tarea AWS DMS CDC exclusiva (si CDC estaba activada).

  1. Asegúrese de que la latencia de origen y la latencia de destino en las CloudWatch métricas de Amazon de la AWS DMS tarea muestren 0 segundos.

  2. Detenga la tarea AWS DMS CDC exclusiva.

DBA

Habilitar los desencadenadores.

Habilite lo TRIGGERS que deshabilitó antes de crear la CDC tarea.

DBA

AWS

Documentación de Oracle

Código 1: solo migración a carga completa, esquema de aplicación única

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

Código 2: solo migración a carga completa, esquemas de aplicaciones múltiples

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

Código 3: migración a carga completa antes de una sola tarea, CDC esquema de una sola aplicación

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

Código 4: migración a carga completa antes de la tarea CDC exclusiva, esquemas de aplicaciones múltiples

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN (operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE (handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /

Escenario en el que un enfoque de migración mixto puede funcionar mejor

En raras ocasiones, en las que la base de datos de origen contiene tablas con millones de filas y LOBSEGMENT columnas de gran tamaño, este patrón ralentizará la migración. Oracle migra a LOBSEGMENTs través del enlace de red de uno en uno. Extrae una sola fila (junto con los datos de la LOB columna) de la tabla de origen e inserta la fila en la tabla de destino, repitiendo el proceso hasta que se migren todas las filas. Oracle Data Pump a través del enlace de la base de datos no admite los mecanismos de carga masiva o de carga por ruta directaLOBSEGMENTs.

En las siguientes situaciones, se recomienda:

  • Omitir las tablas identificadas durante la migración de Oracle Data Pump añadiendo el siguiente filtro de metadatos.

    dbms_datapump.metadata_filter(handle =>h1, name=>'NAME_EXPR', value => 'NOT IN (''TABLE_1'',''TABLE_2'')');
  • Utilice una AWS DMS tarea (migración a carga completa, con CDC replicación si es necesaria) para migrar las tablas identificadas. AWSDMSextraerá varias filas de la base de datos Oracle de origen y las insertará en un lote en la RDS instancia de Amazon de destino, lo que mejora el rendimiento.