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.
Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle mediante Oracle Data Pump
Creado por Rizwan Wangde (AWS)
Entorno: producción | Origen: Base de datos de Oracle en las instalaciones | Destino: Amazon RDS para Oracle |
Tipo R: redefinir la plataforma | Carga de trabajo: Oracle | Tecnologías: Migración; bases de datos |
Servicios de AWS: AWS DMS; AWS Direct Connect; Amazon RDS |
Resumen
Numerosos patrones cubren la migración de bases de datos de Oracle en las instalaciones a Amazon RDS para 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 tablas o esquemas de aplicaciones a archivos de volcado, la transferencia de los archivos de volcado a un directorio de base de datos en Amazon RDS para 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 instancia de Amazon RDS. Además, los archivos de volcado residen en el volumen Amazon Elastic Block Store (Amazon EBS) de la instancia de Amazon RDS, 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 instancia de Amazon RDS mediante la API de Oracle Data Pump (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 volumen de EBS 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 y limitaciones
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 instancia de Amazon RDS.
Una base de datos de Oracle en un centro de datos en las instalaciones.
Una instancia de Oracle de Amazon RDS
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. AWS Direct Connect
(recomendado para bases de datos de gran tamaño). La conectividad de red y las reglas de firewall locales están configuradas para permitir una conexión entrante desde la instancia de Amazon RDS a la base de datos de Oracle en las instalaciones.
Limitaciones
El límite de tamaño de la base de datos en Amazon RDS para Oracle es de 64 TiB (en 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 Amazon RDS, consulte Amazon RDS para Oracle en la documentación de AWS.
Arquitectura
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 de Oracle en las instalaciones a Amazon RDS para 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.
![""](images/pattern-img/d54e7777-dcd2-4039-9b76-97e1019ef112/images/78429a29-e110-485a-a501-9764decd7e92.png)
La instancia de Amazon RDS para Oracle se conecta a la base de datos de Oracle de origen en las instalaciones para realizar una migración a plena carga a través del enlace de la base de datos.
AWS DMS se conecta a la base de datos de Oracle de origen en las instalaciones para realizar una replicación continua mediante la captura de datos de cambios (CDC).
Los cambios de los CDC se aplican a la base de datos de Amazon RDS para Oracle.
Herramientas
Servicios de AWS
AWS Database Migration Service (AWS DMS) le permite migrar los almacenes de datos a la nube de AWS o entre combinaciones de configuraciones en la nube y en las instalaciones. Este patrón usa CDC y la configuración Replicar solo cambios de datos.
AWS Direct Connect vincula su red interna con una ubicación de Direct Connect a través de un cable estándar Ethernet de fibra óptica. Con esta conexión, puede crear interfaces virtuales directamente en servicios públicos de AWS omitiendo a los proveedores de servicios de Internet en su ruta de acceso a la red.
Amazon Relational Database Service (Amazon RDS) para Oracle le ayuda a configurar, utilizar y escalar una base de datos relacional de Oracle en la nube de AWS.
Otras herramientas
Oracle Data Pump
le ayuda a trasladar datos y metadatos de una base de datos a otra a altas velocidades. Se utilizan herramientas de cliente como Oracle Instant Client
o SQL Developer para conectar y ejecutar consultas SQL en la base de datos.
Prácticas recomendadas
Si bien AWS Direct Connect
Una red privada virtual (VPN) con Amazon Site-to-Site VPN o una conexión de IPSec VPN desde la red en las instalaciones a la red de AWS
El cifrado de red nativo de la base de datos de Oracle
configurado en la base de datos de Oracle en las instalaciones Cifrado con TLS
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Configurar la conectividad de red desde la base de datos de destino a la base de datos de origen. | Configure el firewall y la red en las instalaciones para permitir la conexión entrante desde la instancia de Amazon RDS de destino a la base de datos de Oracle de origen en las instalaciones. | 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.
| Administrador de base de datos |
Prepare la base de datos en las instalaciones de origen para la migración a AWS DMS CDC. | (Opcional) Prepare la base de datos de Oracle de origen en las instalaciones para la migración a AWS DMS CDC tras finalizar la carga completa de Oracle Data Pump:
| Administrador de base de datos |
Instalar y configurar SQL Developer. | Instale y configure SQL Developer | Administrador de base de datos, ingeniero de migraciones |
Generar un script para crear los espacios de tabla. | Utilice el siguiente ejemplo de consulta SQL para generar el script en la base de datos de origen.
El script se aplicará en la base de datos de destino. | Administrador de base de datos |
Generar un script para crear usuarios, perfiles, roles y privilegios. | Para generar un script para crear los usuarios, perfiles, funciones y privilegios de la base de datos, utilice los scripts del documento de Oracle Support Cómo extraer DDL para usuario, incluidos los privilegios y roles mediante dbms_metadata.get_ddl (ID de documento 2739952.1) El script se aplicará en la base de datos de destino. | Administrador de base de datos |
Tarea | Descripción | Habilidades 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.
Para comprobar la conectividad, ejecute el comando de SQL siguiente.
La conectividad es correcta si la respuesta es | Administrador de base de datos |
Ejecute los scripts para preparar la instancia de destino. | Ejecute los scripts generados anteriormente para preparar la instancia de Amazon RDS para Oracle:
Esto ayuda a garantizar que la migración de Oracle Data Pump pueda crear los esquemas y sus objetos. | Administrador de base de datos, ingeniero de migraciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Migre los esquemas necesarios. | Para migrar los esquemas necesarios de la base de datos en las instalaciones de origen a la instancia de Amazon RDS de destino, utilice el código de 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.
| Administrador de base de datos |
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.
| Administrador de base de datos |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Capturar el SCN en la base de datos en las instalaciones de origen de Oracle. | Capture el número de cambio del sistema (SCN) en Para generar el SCN actual de la base de datos de origen, introduzca la siguiente instrucción SQL.
| Administrador de base de datos |
Realizar la migración a plena carga de los esquemas. | Para migrar los esquemas necesarios (
En el código, sustituya
Para ajustar el rendimiento de la migración, puede configurar el número de procesos paralelos ejecutando el siguiente comando.
| Administrador de base de datos |
Deshabilitar los desencadenadores en los esquemas migrados. | Antes de comenzar la tarea AWS DMS solo de CDC, desactive los | Administrador de base de datos |
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.
| Administrador de base de datos |
Utilizar AWS DMS para realizar una replicación continua desde el origen hasta el destino. | Utilice AWS DMS para realizar una replicación continua desde la base de datos de Oracle de origen a la instancia de Amazon RDS para Oracle de destino. Para obtener más información, consulte Cómo crear tareas de replicación continua mediante AWS DMS y la entrada del blog Cómo trabajar con el soporte nativo para CDC en AWS DMS | Administrador de base de datos, ingeniero de migraciones |
Tarea | Descripción | Habilidades 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 instancia de Amazon RDS para ofrecer las ventajas de la alta disponibilidad (HA) y la recuperación de desastres (DR). | Administrador de base de datos, ingeniero de migraciones |
Detenga la tarea AWS DMS solo de CDC (si CDC estaba activado). |
| Administrador de base de datos |
Habilitar los desencadenadores. | Habilite los DESENCADENADORES que desactivó antes de crear la tarea de los CDC. | Administrador de base de datos |
Recursos relacionados
AWS
Documentación de Oracle
Información adicional
Código 1: migración a plena carga solo, 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: migración a plena solo, esquemas de aplicación 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 plena carga antes de una tarea solo de CDC, 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 (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 plena carga antes de una tarea solo de CDC, esquemas de aplicación 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 columnas LOBSEGMENT de gran tamaño, este patrón ralentizará la migración. Oracle migra los LOBSEGMENTs a través del enlace de red de uno en uno. Extrae una sola fila (junto con los datos de la columna LOB) 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 directa para LobSegments.
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'')');
Utilizar una tarea de AWS DMS (migración a plena carga, con replicación de CDC si es necesaria) para migrar las tablas identificadas. AWS DMS extraerá varias filas de la base de datos de Oracle de origen y las insertará en un lote en la instancia de Amazon RDS de destino, lo que mejora el rendimiento.