¿Cómo utilizo Oracle Instant Client para ejecutar importaciones o exportaciones de Data Pump en mi instancia de base de datos de Amazon RDS for Oracle?

Última actualización: 10/11/2021

Quiero utilizar los clientes impdp y expdp para realizar exportaciones e importaciones en mi instancia de base de datos de Amazon Relational Database Service (Amazon RDS) for Oracle.

Resolución

Dado que Amazon RDS for Oracle es una base de datos administrada, no es posible acceder al host para utilizar los clientes impdp o expdp. Si se utiliza la API de Data Pump para realizar importaciones o exportaciones, se necesita el paquete PL/SQL. Oracle Instant Client es un cliente ligero que puede instalar en su ordenador o en una instancia de Amazon Elastic Compute Cloud (Amazon EC2). Oracle Instant Client incluye los clientes impdp y expdp que se pueden utilizar para realizar exportaciones e importaciones desde la línea de comandos.

Haga lo siguiente antes de utilizar Oracle Instant Client:

  • Compruebe en el documento con ID 553337.1 si el archivo binario que va a descargar admite la exportación de las versiones fuente y de destino. Normalmente, se admite la exportación desde un cliente con una versión igual o posterior. Se admite la importación mediante una versión del cliente que sea la misma que la versión principal de Amazon RDS de destino. Por ejemplo, si la versión de la instancia fuente es la 12.2 y la versión de la instancia de destino es la 18c, se puede instalar la última versión de Oracle Instant Client 18c.
  • Para utilizar Data Pump, instale el paquete Tools sobre el paquete Basic. Para instalar los paquetes, consulte la documentación de Oracle para Oracle Instant Client.
  • Asegúrese de que la versión del horario de verano (DST) de la instancia de RDS de destino sea igual o posterior a la de la instancia fuente. De lo contrario, recibirá el error ORA-39405. Utilice la siguiente consulta para comprobar la versión del DST actual de la instancia. Para actualizar la versión del DST a la última disponible, utilice la opción TIMEZONE_FILE_AUTOUPGRADE.
SELECT * FROM V$TIMEZONE_FILE;

Para probar la importación o exportación de Data Pump a través de un enlace de base de datos mediante Oracle Instant Client, haga lo siguiente:

1.    Cree una instancia de Amazon EC2 de prueba mediante el sistema operativo Amazon Linux 2.

2.    Descargue el paquete Basic (RPM) y el paquete Tools (RPM). En este artículo, se hace referencia a las siguientes descargas de RPM:

        oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm

        oracle-instantclient19.8-tools-19.8.0.0.0-1.x86_64.rpm

3.    Transfiera los archivos binarios a la instancia EC2. Para obtener más información, consulte Transferencia de archivos a instancias de Linux mediante un cliente SCP.

4.    Siga las instrucciones de la documentación de Oracle para instalar Oracle Instant Client en Linux desde RPM.
Este proceso instala los archivos binarios en la ubicación predeterminada /usr/lib/oracle/example-client-version/client64. Por ejemplo, si descarga los archivos binarios de la versión 19.8, la ubicación binaria predeterminada para la instalación es /usr/lib/oracle/19.8/client64.

5.    Instale el paquete SQL*Plus Package (RPM) para probar la conectividad entre la instancia EC2 y la instancia RDS.

6.    Configure o actualice las siguientes variables de entorno:

export PATH=$PATH:/usr/lib/oracle/19.8/client64/bin
export LD_LIBRARY_PATH=/usr/lib/oracle/19.8/client64/lib

7.    Cree un directorio personalizado para almacenar tnsnames.ora ejecutando un comando similar al siguiente. Configure la variable de entorno TNS_ADMIN para que apunte al directorio.

mkdir -p /root/tnsentries

Asegúrese de que tiene el archivo tnsnames.ora en este directorio.

Ejecute el siguiente comando para asegurarse de que la variable de entorno TNS_ADMIN apunta al directorio.

export TNS_ADMIN=/root/tnsentries

8.    Incluya las entradas TNS necesarias para la importación de Data Pump en el archivo tnsnames.ora.

9.    Actualice las reglas de entrada del grupo de seguridad de las instancias RDS fuente y de destino para permitir las conexiones desde la instancia EC2.

10.    Cree tablas de prueba en la instancia RDS fuente para realizar la exportación ejecutando consultas similares a las siguientes:

CREATE TABLE TEST1 AS SELECT * FROM DBA_TABLES;
CREATE TABLE TEST2 AS SELECT * FROM DBA_OBJECTS;
CREATE TABLE TEST3 AS SELECT * FROM DBA_DATA_FILES;

11.    Ejecute una consulta similar a la siguiente para crear el enlace de base de datos entre las bases de datos fuente y de destino que se deben utilizar con el parámetro network_link:

CREATE DATABASE LINK sample_conn CONNECT TO example-username IDENTIFIED BY example-password USING '(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = example-hostname)(PORT = example-port)))(CONNECT_DATA =(SERVICE_NAME = example-service-name)))';

Dado que el enlace de base de datos se utiliza para conectarse desde la instancia de destino a la instancia fuente, las reglas de entrada de la base de datos fuente se configuran para permitir las conexiones de la instancia de destino.

12.    Para importar datos desde la instancia fuente en la instancia de destino, ejecute un comando similar al siguiente:

impdp admin@target directory=data_pump_dir logfile=imp_test_tables_using_nw_link.log tables=admin.test1,admin.test2,admin.test3 network_link=sample_conn

Es posible que obtenga un resultado similar al siguiente:

Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "ADMIN"."SYS_IMPORT_TABLE_01":  admin/********@target directory=data_pump_dir logfile=imp_test_tables_using_nw_link.log tables=admin.test1,admin.test2,admin.test3 network_link=sample_conn
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 3.625 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . imported "ADMIN"."TEST2"                              20634 rows
. . imported "ADMIN"."TEST1"                               1537 rows
. . imported "ADMIN"."TEST3"                                  6 rows
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Job "ADMIN"."SYS_IMPORT_TABLE_01" successfully completed at Wed Oct 14 23:57:28 2020 elapsed 0 00:01:06

Documentación de Oracle para Información general sobre Oracle Data Pump

Documentación de Oracle para DBMS_DATAPUMP

¿Le ha resultado útil este artículo?


¿Necesita asistencia técnica o con la facturación?