Importación mediante Oracle Data Pump - Amazon Relational Database Service

Importación mediante Oracle Data Pump

Oracle Data Pump es una utilidad que le permite exportar datos de Oracle a un archivo de volcado e importarlos a otra base de datos de Oracle. Es un reemplazo a largo plazo de las utilidades de exportación e importación de Oracle. Oracle Data Pump es la forma preferida de trasladar grandes cantidades de datos desde una base de datos Oracle a una instancia de base de datos de Amazon RDS.

Los ejemplos de esta sección muestran una forma de importar datos a una base de datos Oracle, pero Oracle Data Pump admite otras técnicas. Para obtener más información, consulte la documentación de Oracle Database.

En los ejemplos de esta sección se utiliza el paquete DBMS_DATAPUMP. Puede realizar las mismas tareas con las utilidades de línea de comandos de Oracle Data Pump impdp y expdp. Puede instalar estas utilidades en un host remoto como parte de una instalación de Oracle Client, incluido Oracle Instant Client. Para obtener más información, consulte How do I use Oracle Instant Client to run Data Pump Import or Export for my Amazon RDS for Oracle DB instance? (¿Cómo utilizo Oracle Instant Client para ejecutar la importación o exportación de Data Pump para mi instancia de base de datos de Amazon RDS para Oracle?)

Información general sobre Oracle Data Pump

Oracle Data Pump consta de los siguientes componentes:

  • Clientes de línea de comandos expdp y impdp

  • El paquete PL/SQL DBMS_DATAPUMP

  • El paquete PL/SQL DBMS_METADATA

Puede utilizar Oracle Data Pump en los siguientes casos:

  • Importación de datos desde una base de datos de Oracle (en las instalaciones o en una instancia de Amazon EC2) a una instancia de base de datos de Amazon RDS para Oracle

  • Importación de datos desde una instancia de base de datos de RDS para Oracle a una base de datos Oracle, ya sea en las instalaciones o en una instancia de Amazon EC2

  • Importación de datos entre instancias de base de datos de RDS para Oracle (por ejemplo, para migrar datos desde EC2-Classic a una VPC).

Para descargar utilidades de Oracle Data Pump, consulte Oracle Database Software Downloads (Descargas de software de base de datos de Oracle) en el sitio web de Oracle Technology Network. Para conocer aspectos sobre compatibilidad al migrar entre versiones de Oracle Database, consulte la documentación de Oracle Database.

Flujo de trabajo de Oracle Data Pump

Por lo general, se utiliza Oracle Data Pump en las siguientes etapas:

  1. Exporte sus datos a un archivo de volcado en la base de datos de origen.

  2. Cargue el archivo de volcado en la instancia de base de datos de RDS para Oracle Puede transferirlo mediante un bucket de Amazon S3 o mediante un enlace de base de datos entre dos bases de datos.

  3. Importe los datos desde el archivo de volcado a la instancia de base de RDS para Oracle.

Prácticas recomendadas de Oracle Data Pump

Cuando utiliza Oracle Data Pump para importar datos en una instancia de RDS para Oracle, se recomiendan las siguientes prácticas recomendadas:

  • Realice importaciones en el modo schema o table para importar esquemas y objetos específicos.

  • Limite los esquemas que importe a los que necesita su aplicación.

  • No los importe en el modo full ni en esquemas de importación para componentes mantenidos por el sistema.

    Puesto que RDS para Oracle no permite el acceso a usuarios administrativos SYS o SYSDBA, estas acciones pueden dañar el diccionario de datos de Oracle y afectar a la estabilidad de su base de datos.

  • Al cargar grandes cantidades de datos, haga lo siguiente:

    1. Transfiera el archivo de volcado a la instancia de base de datos de RDS para Oracle.

    2. Cree una instantánea de base de datos de su instancia.

    3. Pruebe la importación para comprobar que se realiza correctamente.

    Si se invalidan los componentes de la base de datos, puede eliminar la instancia de base de datos y volver a crearla a partir de la instantánea de base de datos. La instancia de base de datos restaurada incluye los archivos de volcado preparados en la instancia de base de datos cuando realice una instantánea de base de datos.

  • No importe archivos de volcado creados con parámetros TRANSPORT_TABLESPACES, TRANSPORTABLE o TRANSPORT_FULL_CHECK de exportación de Oracle Data Pump. Las instancias de bases de datos de RDS para Oracle no admiten la importación de estos archivos de volcado.

  • No importe archivos de volcado que contengan objetos del programador de Oracle en SYS, SYSTEM, RDSADMIN, RDSSEC y RDS_DATAGUARD y que pertenezcan a las categorías siguientes:

    • Jobs

    • Programas

    • Schedules

    • Cadenas

    • Reglas

    • Contextos de evaluación

    • Conjunto de reglas

    Las instancias de bases de datos de RDS para Oracle no admiten la importación de estos archivos de volcado.

  • Para excluir objetos de Oracle Scheduler no admitidos, utilice directivas adicionales durante la exportación de Data Pump. Si utiliza DBMS_DATAPUMP, añada un METADATA_FILTER adicional antes de DBMS_METADATA.START_JOB:

    DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' );

    Si utiliza expdp, cree un archivo de parámetros que contenga la directiva exclude que se muestra en el siguiente ejemplo. Luego PARFILE=parameter_file utilícelo con su expdp comando.

    exclude=procobj:"IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) )"

Importación de datos con Oracle Data Pump y un bucket de Amazon S3

El siguiente proceso de importación utiliza Oracle Data Pump y un bucket de Amazon S3. Los pasos son los siguientes:

  1. Exporte datos en la base de datos de origen mediante el paquete DBMS_DATAPUMP de Oracle.

  2. Coloque el archivo de volcado en un bucket de Amazon S3.

  3. A continuación, descargue el archivo de volcado del bucket de Amazon S3 al directorio DATA_PUMP_DIR en la instancia de base de datos de RDS para Oracle de destino.

  4. Importe los datos del archivo de volcado copiado a la instancia de base de datos de RDS para Oracle utilizando el paquete DBMS_DATAPUMP.

Requisitos para la importación de datos con Oracle Data Pump y un bucket de Amazon S3

El proceso tiene los siguientes requisitos:

  • Asegúrese de que hay un bucket de Amazon S3 disponible para las transferencias de archivos, y que el bucket de Amazon S3 está en la misma Región de AWS que la instancia de base de datos. Para ver las instrucciones, consulte Crear un bucket en la Guía de introducción de Amazon Simple Storage Service.

  • El objeto que cargue en el bucket de Amazon S3 debe ser de 5 TB o menos. Para obtener más información acerca de cómo trabajar con objetos en Amazon S3, consulte Guía del usuario de Amazon Simple Storage Service.

    nota

    Si el archivo de volcado supera los 5 TB, puede ejecutar la exportación de Oracle Data Pump con la opción paralela. Esta operación distribuye los datos en varios archivos de volcado para que no supere el límite de 5 TB para archivos individuales.

  • Debe preparar el bucket de Amazon S3 para la integración de Amazon RDS siguiendo las instrucciones en Configuración de permisos IAM para la integración de RDS para Oracle con Amazon S3.

  • Debe asegurarse de que tiene suficiente espacio de almacenamiento para almacenar el archivo de volcado en la instancia de origen y en la instancia de base de datos de destino.

nota

Este proceso importa un archivo de volcado en el directorio DATA_PUMP_DIR, un directorio preconfigurado en todas las instancias de bases de datos de Oracle. Este directorio se encuentra en el mismo volumen de almacenamiento que los archivos de datos. Cuando importe el archivo de volcado, los archivos de datos de Oracle existentes utilizarán más espacio. Por lo tanto, debe asegurarse de que su instancia de base de datos pueda dar cabida a ese uso de espacio adicional. El archivo de volcado importado no se elimina ni se purga automáticamente del directorio DATA_PUMP_DIR. Para quitar el archivo de volcado importado, utilice UTL_FILE.FREMOVE, que se encuentra en el sitio web de Oracle.

Paso 1: Conceda privilegios al usuario de la base de datos en la instancia de base de datos de destino de RDS para Oracle

En este paso, debe crear los esquemas en los que tiene pensado importar datos y conceder a los usuarios los privilegios necesarios.

Para crear usuarios y conceder los privilegios necesarios en la instancia de destino de RDS para Oracle
  1. Utilice SQL*Plus u Oracle SQL Developer para iniciar sesión como usuario maestro en la instancia de base de datos de RDS para Oracle en la que se importarán los datos. Para obtener más información acerca de la conexión a una instancia de base de datos, consulte Conexión a la instancia de base de datos de RDS para Oracle.

  2. Cree el espacio de tabla necesario antes de importar los datos. Para obtener más información, consulte Creación y especificación del tamaño de los espacios de tablas.

  3. Cree la cuenta de usuario y conceda los permisos y roles necesarios si la cuenta de usuario a la que se importan los datos no existe. Si piensa importar datos en varios esquemas de usuario, cree cada cuenta de usuario y otórguele los permisos y roles necesarios.

    Por ejemplo, las siguientes instrucciones SQL crean un nuevo usuario y conceden los permisos y roles necesarios para importar los datos en el esquema propiedad de este usuario. Reemplace schema_1 por el nombre de su esquema en este paso y en los siguientes.

    CREATE USER schema_1 IDENTIFIED BY my_password; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;
    nota

    Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

    Las instrucciones anteriores conceden al nuevo usuario el privilegio CREATE SESSION y el rol RESOURCE. Es probable que necesite más privilegios y roles en función de los objetos de base de datos que importe.

Paso 2: Exporte datos a un archivo de volcado mediante DBMS_DATAPUMP

Para crear un archivo de volcado, utilice el paquete DBMS_DATAPUMP.

Para exportar datos de Oracle a un archivo de volcado
  1. Utilice SQL Plus u Oracle SQL Developer para conectarse a la instancia de base de datos de RDS para Oracle de origen con un usuario administrativo. Si la base de datos de origen es una instancia de base de datos de RDS para Oracle, conéctese con el usuario maestro de Amazon RDS.

  2. Exporte los datos llamando a los procedimientos DBMS_DATAPUMP.

    El siguiente script exporta el esquema SCHEMA_1 a un archivo de volcado denominado sample.dmp en el directorio DATA_PUMP_DIR. Reemplace SCHEMA_1 por el nombre del esquema que desea exportar.

    DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_exp.log', directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')'); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
    nota

    Data Pump inicia los trabajos de forma asíncrona Para obtener información sobre la supervisión de un trabajo de Data Pump, consulte Monitoring job status (Supervisión del estado del trabajo) en la documentación de Oracle.

  3. (Opcional) Puede ver el contenido del registro de exportación llamando al procedimiento rdsadmin.rds_file_util.read_text_file. Para obtener más información, consulte Lectura de archivos de un directorio de instancia de base de datos.

Paso 3: carga del archivo de volcado a su bucket de Amazon S3

Utilice el procedimiento de Amazon RDS rdsadmin.rdsadmin_s3_tasks.upload_to_s3 para copiar el archivo de volcado en el bucket de Amazon S3. En el siguiente ejemplo se cargan todos los archivos del directorio DATA_PUMP_DIR en un bucket de Amazon S3 denominado myS3bucket.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'myS3bucket', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

La instrucción SELECT devuelve el identificador de la tarea en un tipo de datos VARCHAR2. Para obtener más información, consulte Carga de archivos desde la instancia de base de datos de RDS para Oracle en un bucket de Amazon S3.

Paso 4: Descargue el archivo de volcado desde su bucket de Amazon S3 a la instancia de base de datos de destino.

Realice este paso mediante el procedimiento de Amazon RDS rdsadmin.rdsadmin_s3_tasks.download_from_s3. Al descargar un archivo en un directorio, el procedimiento download_from_s3 omite la descarga si ya existe un archivo con el mismo nombre en el directorio. Para quitar el archivo del directorio de descarga, utilice UTL_FILE.FREMOVE, que se encuentra en el sitio web de Oracle.

Para descargar el archivo de volcado
  1. Inicie SQL*Plus u Oracle SQL Developer e inicie sesión como usuario maestro en su instancia de base de datos de destino de Amazon RDS

  2. Descargue el archivo de volcado mediante el procedimiento de Amazon RDS rdsadmin.rdsadmin_s3_tasks.download_from_s3.

    En el siguiente ejemplo, se descargan todos los archivos de un bucket de Amazon S3 denominado myS3bucket en el directorio DATA_PUMP_DIR.

    SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'myS3bucket', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

    La instrucción SELECT devuelve el identificador de la tarea en un tipo de datos VARCHAR2. Para obtener más información, consulte Descarga de archivos desde un bucket de Amazon S3 en una instancia de base de datos de Oracle.

Paso 5: Importe el archivo de volcado a la instancia de base de datos de destino mediante DBMS_DATAPUMP

Utilice DBMS_DATAPUMP para importar el esquema a la instancia de base de datos de RDS para Oracle. Podrían ser necesarias opciones adicionales, como METADATA_REMAP.

Para importar datos a la instancia de base de datos de destino
  1. Inicie SQL*Plus u Oracle SQL Developer e inicie sesión como usuario maestro en su instancia de base de datos de destino de RDS para Oracle.

  2. Importe los datos llamando a los procedimientos DBMS_DATAPUMP.

    En el siguiente ejemplo se importan los datos de SCHEMA_1 de sample_copied.dmp en la instancia de base de datos de destino.

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

    Los trabajos de Data Pump se inician de modo asincrónico. Para obtener información sobre el monitoreo de un trabajo de Data Pump, consulte Monitorización del estado del trabajo en la documentación de Oracle. Puede ver el contenido del registro de importación mediante el procedimiento rdsadmin.rds_file_util.read_text_file. Para obtener más información, consulte Lectura de archivos de un directorio de instancia de base de datos.

  3. Para comprobar la importación de datos, enumere las tablas de esquemas de la instancia de base de datos de destino.

    Por ejemplo, la siguiente consulta devuelve el número de tablas de SCHEMA_1.

    SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1';

Paso 6: Limpieza

Después de importar los datos, puede eliminar los archivos que no desee conservar.

Para eliminar archivos innecesarios
  1. Inicie SQL*Plus u Oracle SQL Developer e inicie sesión como usuario maestro en su instancia de base de datos de destino de RDS para Oracle.

  2. Enumere los archivos en DATA_PUMP_DIR mediante el siguiente comando.

    SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
  3. Elimine los archivos de DATA_PUMP_DIR que ya no sean necesarios con el siguiente comando.

    EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','filename');

    Por ejemplo, el siguiente comando elimina el archivo denominado sample_copied.dmp.

    EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');

El siguiente proceso de importación utiliza Oracle Data Pump y el paquete DBMS_FILE_TRANSFER de Oracle. Los pasos son los siguientes:

  1. Conéctese a una base de datos Oracle de origen, que puede ser una base de datos en las instalaciones, una instancia de Amazon EC2 o una instancia de base de datos de RDS para Oracle.

  2. Exporte los datos mediante el paquete DBMS_DATAPUMP.

  3. Utilice DBMS_FILE_TRANSFER.PUT_FILE para copiar el archivo de volcado desde la base de datos Oracle al directorio DATA_PUMP_DIR de la instancia de base de datos de RDS para Oracle de destino que está conectada mediante un enlace de base de datos.

  4. Importe los datos del archivo de volcado copiado a la instancia de base de datos de RDS para Oracle utilizando el paquete DBMS_DATAPUMP.

El proceso de importación mediante Oracle Data Pump y un paquete de DBMS_FILE_TRANSFER tiene los siguientes pasos.

Requisitos de importación de datos con Oracle Data Pump y un enlace de base de datos

El proceso tiene los siguientes requisitos:

  • Debe tener privilegios de ejecución en los paquetes DBMS_FILE_TRANSFER y DBMS_DATAPUMP.

  • Debe tener privilegios de escritura en el directorio DATA_PUMP_DIR de la instancia de base de datos de origen.

  • Debe asegurarse de que tiene suficiente espacio de almacenamiento para almacenar el archivo de volcado en la instancia de origen y en la instancia de base de datos de destino.

nota

Este proceso importa un archivo de volcado en el directorio DATA_PUMP_DIR, un directorio preconfigurado en todas las instancias de bases de datos de Oracle. Este directorio se encuentra en el mismo volumen de almacenamiento que los archivos de datos. Cuando importe el archivo de volcado, los archivos de datos de Oracle existentes utilizarán más espacio. Por lo tanto, debe asegurarse de que su instancia de base de datos pueda dar cabida a ese uso de espacio adicional. El archivo de volcado importado no se elimina ni se purga automáticamente del directorio DATA_PUMP_DIR. Para quitar el archivo de volcado importado, utilice UTL_FILE.FREMOVE, que se encuentra en el sitio web de Oracle.

Paso 1: Conceda privilegios al usuario en la instancia de base de datos de destino de RDS para Oracle

Para conceder privilegios al usuario en la instancia de base de datos de destino de RDS para Oracle, realice los siguientes pasos:

  1. Utilice SQL Plus u Oracle SQL Developer para conectarse a la instancia de base de datos de RDS para Oracle a la que desea importar los datos. Conéctese con el usuario maestro de Amazon RDS. Para obtener más información acerca de la conexión a la instancia de base de datos, consulte Conexión a la instancia de base de datos de RDS para Oracle.

  2. Cree el espacio de tabla necesario antes de importar los datos. Para obtener más información, consulte Creación y especificación del tamaño de los espacios de tablas.

  3. Si la cuenta de usuario a la que se van a importar los datos no existe, cree la cuenta y otórguele los permisos y roles necesarios. Si piensa importar datos en varios esquemas de usuario, cree cada cuenta de usuario y otórguele los permisos y roles necesarios.

    Por ejemplo, los siguientes comandos crean un nuevo usuario denominado schema_1 y otorgan los permisos y roles necesarios para importar los datos al esquema de este usuario.

    CREATE USER schema_1 IDENTIFIED BY my-password; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;
    nota

    Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

    En el ejemplo anterior, se otorga el privilegio CREATE SESSION y el rol RESOURCE al nuevo usuario. Es probable que necesite más privilegios y roles en función de los objetos de base de datos que importe.

    nota

    Reemplace schema_1 por el nombre de su esquema en este paso y en los siguientes.

Paso 2: concesión de privilegios al usuario en la base de datos de origen

Utilice SQL*Plus u Oracle SQL Developer para conectarse a la instancia de base de datos de RDS para Oracle que contiene los datos que va a importar. Si es necesario, cree una cuenta de usuario con los permisos necesarios.

nota

Si la base de datos de origen es una instancia de Amazon RDS, puede omitir este paso. Para realizar la exportación utilizará la cuenta de usuario maestra de Amazon RDS.

Los siguientes comandos crean un usuario y le conceden los permisos necesarios.

CREATE USER export_user IDENTIFIED BY my-password; GRANT CREATE SESSION, CREATE TABLE, CREATE DATABASE LINK TO export_user; ALTER USER export_user QUOTA 100M ON users; GRANT READ, WRITE ON DIRECTORY data_pump_dir TO export_user; GRANT SELECT_CATALOG_ROLE TO export_user; GRANT EXECUTE ON DBMS_DATAPUMP TO export_user; GRANT EXECUTE ON DBMS_FILE_TRANSFER TO export_user;
nota

Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

Paso 3: Cree un archivo de volcado utilizando DBMS_DATAPUMP

Para crear el archivo de volcado, haga lo siguiente:

  1. Utilice SQL*Plus u Oracle SQL Developer para conectarse a la instancia de Oracle de origen con un usuario administrativo o con el usuario creado en el paso 2. Si la base de datos de origen es una instancia de base de datos de Amazon RDS for Oracle, conéctese con el usuario maestro de Amazon RDS.

  2. Cree un archivo de volcado mediante la utilidad Oracle Data Pump.

    El siguiente script crea un archivo de volcado denominado sample.dmp en el directorio DATA_PUMP_DIR.

    DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT' , job_mode => 'SCHEMA' , job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample_exp.log' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl , 'SCHEMA_EXPR' , 'IN (''SCHEMA_1'')' ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
    nota

    Los trabajos de Data Pump se inician de modo asincrónico. Para obtener información sobre la supervisión de un trabajo de Data Pump, consulte Monitoring job status (Supervisión del estado del trabajo) en la documentación de Oracle. Puede ver el contenido del registro de exportación mediante el procedimiento rdsadmin.rds_file_util.read_text_file. Para obtener más información, consulte Lectura de archivos de un directorio de instancia de base de datos.

Paso 4: Crear un enlace de base de datos a la instancia de base de datos de destino

Cree un enlace de base de datos entre la instancia de base de datos de origen y la instancia de base de datos de destino. La instancia local de Oracle debe tener conectividad de red con la instancia de base de datos para poder crear un enlace de base de datos y transferir el archivo de volcado de exportación.

Para realizar este paso, conéctese con la misma cuenta de usuario del paso anterior.

Si está creando un enlace de base de datos entre dos instancias de bases de datos dentro de la misma VPC o en VPC interconectadas, debe existir una ruta válida entre las dos instancias de bases de datos. El grupo de seguridad de cada instancia de base de datos debe permitir la entrada y la salida desde la otra instancia de base de datos. Las reglas de entrada y salida del grupo de seguridad pueden referirse a grupos de seguridad de la misma VPC o de una VPC interconectada. Para obtener más información, consulte Ajuste de los enlaces de base de datos para usarlos con las instancias de bases de datos de una VPC.

El siguiente comando crea un enlace de base de datos denominado to_rds que se conecta con un usuario maestro de Amazon RDS de la instancia de base de datos de destino.

CREATE DATABASE LINK to_rds CONNECT TO <master_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>)))';

Paso 5: Copie el archivo de volcado exportado a la instancia de base de datos de destino utilizando DBMS_FILE_TRANSFER

Utilice DBMS_FILE_TRANSFER para copiar el archivo de volcado desde la instancia de base de datos de origen en la instancia de base de datos de destino. El siguiente script copia un archivo de volcado denominado sample.dmp desde la instancia de origen en un enlace de la base de datos de destino denominado to_rds (creado en el paso anterior).

BEGIN DBMS_FILE_TRANSFER.PUT_FILE( source_directory_object => 'DATA_PUMP_DIR', source_file_name => 'sample.dmp', destination_directory_object => 'DATA_PUMP_DIR', destination_file_name => 'sample_copied.dmp', destination_database => 'to_rds' ); END; /

Paso 6: Importe el archivo de datos a la instancia de base de datos de destino utilizando DBMS_DATAPUMP

Utilice Oracle Data Pump para importar el esquema en la instancia de base de datos. Pueden ser necesarias opciones adicionales, como METADATA_REMAP.

Para llevar a cabo la importación, conéctese a la instancia de base de datos con la cuenta de usuario maestro de Amazon RDS.

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

Los trabajos de Data Pump se inician de modo asincrónico. Para obtener información sobre el monitoreo de un trabajo de Data Pump, consulte Monitorización del estado del trabajo en la documentación de Oracle. Puede ver el contenido del registro de importación mediante el procedimiento rdsadmin.rds_file_util.read_text_file. Para obtener más información, consulte Lectura de archivos de un directorio de instancia de base de datos.

Puede verificar la importación de datos viendo las tablas de usuario en la instancia de base de datos. Por ejemplo, la siguiente consulta devuelve el número de tablas de schema_1.

SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1';

Paso 7: Limpieza

Después de importar los datos, puede eliminar los archivos que no desee conservar. Puede enumerar los archivos en DATA_PUMP_DIR mediante el siguiente comando.

SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;

Para eliminar archivos de DATA_PUMP_DIR que ya no sean necesarios, utilice el siguiente comando.

EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','<file name>');

Por ejemplo, el siguiente comando elimina el archivo denominado "sample_copied.dmp".

EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');