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?
Temas
Información general sobre Oracle Data Pump
Oracle Data Pump consta de los siguientes componentes:
-
Clientes de línea de comandos
expdp
yimpdp
-
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)
Flujo de trabajo de Oracle Data Pump
Por lo general, se utiliza Oracle Data Pump en las siguientes etapas:
-
Exporte sus datos a un archivo de volcado en la base de datos de origen.
-
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.
-
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
otable
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
oSYSDBA
, 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:
-
Transfiera el archivo de volcado a la instancia de base de datos de RDS para Oracle.
-
Cree una instantánea de base de datos de su instancia.
-
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
oTRANSPORT_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
yRDS_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 unMETADATA_FILTER
adicional antes deDBMS_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 directivaexclude
que se muestra en el siguiente ejemplo. LuegoPARFILE=
utilícelo con suparameter_file
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:
-
Exporte datos en la base de datos de origen mediante el paquete DBMS_DATAPUMP
de Oracle. -
Coloque el archivo de volcado en un bucket de Amazon S3.
-
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. -
Importe los datos del archivo de volcado copiado a la instancia de base de datos de RDS para Oracle utilizando el paquete
DBMS_DATAPUMP
.
Temas
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
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
-
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 una instancia de base de datos de Oracle.
-
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.
-
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
por el nombre de su esquema en este paso y en los siguientes.schema_1
CREATE USER
schema_1
IDENTIFIED BYmy_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 rolRESOURCE
. 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
-
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.
-
Exporte los datos llamando a los procedimientos
DBMS_DATAPUMP
.El siguiente script exporta el esquema
a un archivo de volcado denominadoSCHEMA_1
sample.dmp
en el directorioDATA_PUMP_DIR
. Reemplace
por el nombre del esquema que desea exportar.SCHEMA_1
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. -
(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
.amzn-s3-demo-bucket
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
amzn-s3-demo-bucket
', 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
Para descargar el archivo de volcado
-
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
-
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
en el directorioamzn-s3-demo-bucket
DATA_PUMP_DIR
.SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
amzn-s3-demo-bucket
', 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 datosVARCHAR2
. 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
-
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.
-
Importe los datos llamando a los procedimientos
DBMS_DATAPUMP
.En el siguiente ejemplo se importan los datos de
SCHEMA_1
desample_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. -
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
-
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.
-
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;
-
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');
Importación de datos con Oracle Data Pump y un enlace de base de datos
El siguiente proceso de importación utiliza Oracle Data Pump y el paquete DBMS_FILE_TRANSFER
-
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.
-
Exporte los datos mediante el paquete DBMS_DATAPUMP
. -
Utilice
DBMS_FILE_TRANSFER.PUT_FILE
para copiar el archivo de volcado desde la base de datos Oracle al directorioDATA_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. -
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.
Temas
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
yDBMS_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
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:
-
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 una instancia de base de datos de Oracle.
-
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.
-
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 BYmy-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 rolRESOURCE
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
por el nombre de su esquema en este paso y en los siguientes.schema_1
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:
-
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.
-
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 trabajordsadmin.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');