Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle mediante Oracle Data Pump - 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.

Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle mediante Oracle Data Pump

Creado por Mohan Annam (AWS) y Brian Motzer (AWS)

Entorno: PoC o piloto

Origen: bases de datos: relacionales

Destino: Amazon RDS para Oracle

Tipo R: redefinir la plataforma

Carga de trabajo: Oracle

Tecnologías: migración; bases de datos

Servicios de AWS: Amazon RDS

Resumen

Este patrón describe cómo migrar una base de datos de Oracle de un centro de datos en las instalaciones a una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para Oracle mediante Oracle Data Pump. 

El patrón implica crear un archivo de volcado de datos a partir de la base de datos de origen, almacenar el archivo en un bucket de Amazon Simple Storage Service (Amazon S3) y, a continuación, restaurar los datos en una instancia de base de datos de Amazon RDS para Oracle. Este patrón resulta útil cuando se encuentra con limitaciones al utilizar AWS Database Migration Service (AWS DMS) para la migración.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta de AWS activa

  • Los permisos necesarios para crear roles en AWS Identity and Access Management (IAM) y para la carga multiparte a Amazon S3

  • Los permisos necesarios para exportar datos desde la base de datos de origen

  • Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada

Versiones de producto

  • Oracle Data Pump solo está disponible para Oracle Database 10g, versión 1 (10.1) y versiones posteriores.

Arquitectura

Pila de tecnología de origen

  • Bases de datos de Oracle en las instalaciones

Pila de tecnología de destino

  • Amazon RDS para Oracle

  • Cliente SQL (desarrollador de Oracle SQL)

  • Un bucket de S3

Arquitectura de origen y destino

Carga multiparte de Amazon S3 desde una base de datos Oracle local a Amazon RDS mediante Oracle Data Pump.

Herramientas

Servicios de AWS

Otras herramientas

  • Oracle Data Pump le ayuda a trasladar datos y metadatos de una base de datos a otra a altas velocidades. En este patrón, Oracle Data Pump se utiliza para exportar el archivo de volcado de datos (.dmp) al servidor de Oracle e importarlo a Amazon RDS para Oracle. Para obtener más información, consulte Importación de datos a Oracle en Amazon RDS en la documentación de Amazon RDS.

  • Oracle SQL Developer es un entorno de desarrollo integrado que simplifica el desarrollo y la administración de bases de datos de Oracle, tanto en implementaciones tradicionales como en implementaciones basadas en la nube. Interactúa con la base de datos de Oracle en las instalaciones y con Amazon RDS para Oracle para ejecutar los comandos SQL necesarios para exportar e importar datos.

Epics

TareaDescripciónHabilidades requeridas

Crear el bucket.

Para crear el bucket de S3, siga las instrucciones que figuran en la Documentación de AWS.

Administrador de sistemas de AWS
TareaDescripciónHabilidades requeridas

Configurar los permisos de IAM.

Para configurar los permisos, siga las instrucciones que figuran en la Documentación de AWS.

Administrador de sistemas de AWS
TareaDescripciónHabilidades requeridas

Crear la instancia de la base de datos de destino de Amazon RDS para Oracle.

Para crear la instancia de Amazon RDS para Oracle, siga las instrucciones que figuran en la Documentación de AWS.

Administrador de sistemas de AWS

Asociar el rol con la instancia de base de datos.

Para asociar el rol a la instancia, siga las instrucciones que figuran en la Documentación de AWS.

Administrador de base de datos
TareaDescripciónHabilidades requeridas

Cree el usuario.

Conectarse a la base de datos de destino de Amazon RDS para Oracle desde Oracle SQL Developer o SQL*Plus y ejecutar el siguiente comando SQL para crear el usuario al que importar el esquema.

create user SAMPLE_SCHEMA identified by <PASSWORD>; grant create session, resource to <USER NAME>; alter user <USER NAME> quota 100M on users;
Administrador de base de datos
TareaDescripciónHabilidades requeridas

Crear un archivo de volcado de datos.

Para crear un archivo de volcado con el nombre sample.dmp indicado en el directorio DATA_PUMP_DIR para exportar al usuario SAMPLE_SCHEMA, utilice el siguiente script.

DECLARE hdnl NUMBER; BEGIN hdnl := dbms_datapump.open(operation => 'EXPORT', job_mode => 'SCHEMA', job_name => NULL); dbms_datapump.add_file( handle => hdnl, filename => 'sample.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); dbms_datapump.add_file(handle => hdnl, filename => 'export.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); dbms_datapump.metadata_filter(hdnl, 'SCHEMA_EXPR', 'IN (''SAMPLE_SCHEMA'')'); dbms_datapump.start_job(hdnl); END; /

Revise los detalles de la exportación revisando el archivo export.log en su directorio DATA_PUMP_DIR local.

Administrador de base de datos
TareaDescripciónHabilidades requeridas

Cargar el archivo de volcado de datos desde el origen hasta el bucket de S3.

Ejecute el siguiente comando utilizando AWS CLI.

aws s3 cp sample.dmp s3://<bucket_created_epic_1>/
Administrador de base de datos
TareaDescripciónHabilidades requeridas

Descargar el archivo de volcado de datos en Amazon RDS

Para copiar el archivo de volcado sample.dmp desde el bucket de S3 hasta la base de datos de Amazon RDS para Oracle, ejecute el siguiente comando SQL. En este ejemplo, el archivo sample.dmp se descarga del bucket de S3 my-s3-integration1 al directorio de Oracle DATA_PUMP_DIR. Asegúrese de tener suficiente espacio en el disco asignado a la instancia de RDS para alojar tanto la base de datos como el archivo de exportación.

-- If you want to download all the files in the S3 bucket remove the p_s3_prefix line. SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'my-s3-integration', p_s3_prefix => 'sample.dmp', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

El comando anterior genera un ID de tarea. Para revisar el estado de la descarga mediante la revisión de los datos en el ID de tarea, ejecute el siguiente comando.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-<task_id>.log'));

Para ver los archivos en el directorio DATA_PUMP_DIR, ejecute el comando siguiente en el directorio.

SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;
Administrador de sistemas de AWS
TareaDescripciónHabilidades requeridas

Restaurar el esquema y los datos en Amazon RDS.

Para importar el archivo de volcado al esquema de la base de datos sample_schema, ejecute el siguiente comando SQL desde SQL Developer o SQL*Plus.

DECLARE hdnl NUMBER; BEGIN hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null); DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'sample.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'import.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''SAMPLE_SCHEMA'')'); DBMS_DATAPUMP.START_JOB(hdnl); END; /

Para ver el archivo de registro de la importación, ejecute el siguiente comando.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR','import.log'));
Administrador de base de datos
TareaDescripciónHabilidades requeridas

Enumerar y limpiar los archivos de exportación.

Para enumerar y eliminar los archivos de exportación en el directorio DATA_PUMP_DIR, ejecute los siguientes comandos.

-- List the files SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;
-- Remove the files EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample.dmp'); EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','import.log');
Administrador de sistemas de AWS

Recursos relacionados