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

11 minutos de lectura
0

Quiero utilizar las utilidades impdp y expdp para realizar una exportación e importación a mi instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para Oracle DB.

Descripción breve

Hay varias formas de realizar una exportación o importación a una instancia de base de datos de Amazon RDS para Oracle.

Después de configurar el entorno, puede:

  • Importar tablas de una instancia de Oracle RDS de origen a una instancia de Oracle RDS de destino.
  • Exportar datos de una instancia de Oracle RDS y crear un archivo de volcado localmente en una instancia o host remoto de Amazon Elastic Compute Cloud (EC2).
  • Exportar datos de una instancia de Oracle RDS y almacenar el archivo de volcado en el host de RDS.
  • Importar un archivo de volcado ubicado en un host de RDS.
  • Transferir archivos de volcado entre su instancia de base de datos de RDS para Oracle y un bucket de Amazon Simple Storage Service (Amazon S3) mediante la opción de integración de S3.

Resolución

Para ofrecer una experiencia de servicio administrado, no se permite el acceso a nivel de host para utilizar las utilidades impdp y expdp en el host de RDS. Una opción alternativa es utilizar la Data Pump API (DBMS_DATAPUMP) para realizar las importaciones o exportaciones. Sin embargo, puede realizar esta tarea mediante las utilidades de Data Pump en un host remoto.

Oracle Instant Client es un cliente ligero que puede instalar en su computadora o en una instancia de Amazon EC2. Oracle Instant Client incluye las utilidades impdp y expdp que puede utilizar para realizar las operaciones de exportación e importación desde la línea de comandos.

Requisitos previos

Haga lo siguiente antes de utilizar el Oracle Instant Client:

  • Revise el Doc ID 553337.1 para comprobar si el binario que está descargando es compatible con las versiones de origen y destino. Normalmente se puede exportar desde un cliente con una versión igual o posterior. Se admite la importación mediante una versión de cliente que es la misma que la versión principal de Amazon RDS de destino. Por ejemplo, si la versión de la instancia fuente es 12.2 y la versión de la instancia de destino es 19c, entonces puede instalar la última versión 19c del Oracle Instant Client.
  • Para utilizar Data Pump, instale el paquete Tools sobre el paquete Basic. Para instalar los paquetes, consulte la documentación 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, aparece el siguiente error al ejecutar la importación: ORA-39405. Utilice la siguiente consulta para comprobar la versión del DST actual de la instancia. Para actualizar la versión de DST a la última versión disponible en una instancia de Oracle RDS, utilice la opciónTIMEZONE_FILE_AUTOUPGRADE.
SELECT * FROM V$TIMEZONE_FILE;

Para probar la Importación o Exportación de Data Pump desde un enlace de base de datos mediante un Oracle Instant Client, haga lo siguiente:

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

2.    Descargue el paquete Basic (RPM), el paquete Tools (RPM) y el paquete SQL*Plus (RPM). En este artículo, las siguientes RPM son las últimas descargas disponibles:

  • oracle-instantclient19.16-basic-19.16.0.0.0-1.x86_64.rpm
  • oracle-instantclient19.16-tools-19.16.0.0.0-1.x86_64.rpm
  • oracle-instantclient19.16-sqlplus-19.16.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 mediante 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 para la versión 19.16, la ubicación binaria predeterminada para la instalación es /usr/lib/oracle/19.16/client64/bin.

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

Ejemplo:

sudo yum install oracle-instantclient19.16-sqlplus-19.16.0.0.0-1.x86_64.rpm

6.    Establezca o actualice las siguientes variables de entorno, como se ve en este ejemplo:

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

7.    Cree sus archivos de configuración, como tnsnames.ora y sqlnet.ora, en la siguiente ubicación: /usr/lib/oracle/ example-client-version /client64/lib/network/admin. En este ejemplo, la ubicación será: /usr/lib/oracle/19.16/client64/lib/network/admin.

Configuración del entorno

1.    Agregue las entradas TNS necesarias para la importación o exportación de Data Pump al archivo tnsnames.ora.

Ejemplo de una entrada en el archivo tnsnames.ora:

target = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) 
   (HOST = xxxx.rxrxrmwt1x471wi.eu-central-1.rds.amazonaws.com) (PORT = 1521)))(CONNECT_DATA = (SID = orcl)))

Para obtener más información, consulte Configurar SQL*Plus para usar SSL con una instancia de Oracle DB.

  1. 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.

  2. 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;

Importe tablas de una instancia de Oracle RDS de origen a una instancia de Oracle RDS de destino

Para importar las tablas de una instancia de Oracle RDS de origen a una instancia de Oracle RDS de destino, haga lo siguiente:

1.    Ejecute una consulta similar a la del ejemplo siguiente para crear un enlace de base de datos entre las bases de datos de origen y destino. Esto se usa 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)))';

El enlace de la base de datos que conecta la instancia de destino con la instancia fuente tiene reglas de entrada que permiten las conexiones de la instancia de destino.

2.    Complete los requisitos previos y la configuración descritos en este artículo antes de ejecutar el comando impdp.

3.    Inicie sesión en la instancia EC2 que contiene el cliente instantáneo de Oracle.

4.    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

Resultado de ejemplo:

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

Exporte datos de una instancia de Oracle RDS y cree un archivo de volcado localmente en un host remoto

Para exportar los datos de una instancia de Oracle RDS y crear un archivo de volcado localmente, haga lo siguiente:

  • Instale una base de datos de Oracle en una instancia EC2 o un host remoto. En el siguiente ejemplo, Oracle XE se instala en una instancia EC2 de Windows. Para obtener más información sobre Oracle XE, consulte Oracle Database XE Quick Start.
  • Actualice las reglas de entrada para el grupo de seguridad de las instancias RDS fuente para permitir las conexiones desde la instancia EC2.

1.    Inicie sesión en la base de datos XE con un cliente de Oracle, como SQL*Plus. A continuación, cree un directorio en la base de datos Oracle XE. Este directorio hará referencia al directorio en el que desea crear el archivo de volcado en la instancia EC2. Ejecute una consulta similar a la siguiente:

create directory exp_dir as 'C:\TEMP\';

2.    En la base de datos XE, cree un enlace de base de datos a la base de datos RDS fuente mediante un comando similar al siguiente ejemplo:

CREATE DATABASE LINK exp_rds CONNECT TO admin identified by example_password USING '(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = example-hostname)(PORT=example-port)))(CONNECT_DATA =(SERVICE_NAME = example-service-name)))';

3.    Pruebe el enlace a la base de datos similar al siguiente:

select sysdate from dual@exp_rds;

4.    Para crear el archivo de volcado en la instancia EC2, ejecute un comando similar al siguiente:

expdp system network_link=exp_rds directory=exp_dir dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3

Resultado de ejemplo:

Connected to: Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production Warning: Oracle Data Pump operations are not typically needed when connected to the root or seed of a container database. Starting "SYSTEM"."SYS_EXPORT_TABLE_01": system/********
    network_link=exp_rds directory=exp_dir dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Processing object type TABLE_EXPORT/TABLE/TABLE . . exported "ADMIN"."TEST2" 2.713 MB  23814 rows. . exported "ADMIN"."TEST1"  677.1 KB  1814 rows. . exported "ADMIN"."TEST3"  15.98 KB  5 rows Master table "SYSTEM"."SYS_EXPORT_TABLE_01"
    successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is:   C:\TEMP\TABLE_DUMP.DMP
Job "SYSTEM"."SYS_EXPORT_TABLE_01" successfully completed at Wed Aug 24 18:15:25 2022 elapsed 0 00:00:18

Exporte datos de una instancia de Oracle RDS y almacene el archivo de volcado en el host de RDS

Para exportar datos de una instancia de Oracle RDS y almacenar el archivo de volcado en el host de RDS, haga lo siguiente:

1.    Complete los requisitos previos y la configuración descritos en este artículo antes de ejecutar el comando expdp.

2.    Inicie sesión en la instancia EC2 que contiene el cliente instantáneo de Oracle.

3.    Cree un archivo de volcado en la instancia de RDS mediante la ejecución de un comando similar al siguiente:

expdp admin@target dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3

Resultado de ejemplo:

Export: Release 19.0.0.0.0 - Production on Wed Aug 24 16:18:58 2022
Version 19.16.0.0.0
Copyright (c) 1982, 2022, Oracle and/or its affiliates.  All rights reserved.
Password:
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "ADMIN"."SYS_EXPORT_TABLE_01":  admin/********@target dumpfile=table_dump.dmp logfile=expdp_table_dump.log tables=admin.test1,admin.test2,admin.test3
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "ADMIN"."TEST2"                             2.713 MB   23814 rows
. . exported "ADMIN"."TEST1"                             677.1 KB    1814 rows
. . exported "ADMIN"."TEST3"                             15.98 KB       5 rows
Master table "ADMIN"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ADMIN.SYS_EXPORT_TABLE_01 is:
  /rdsdbdata/datapump/table_dump.dmp
Job "ADMIN"."SYS_EXPORT_TABLE_01" successfully completed at Wed Aug 24 16:19:20 2022 elapsed 0 00:00:15

Importe el archivo de volcado ubicado en el host de RDS

Para importar un archivo de volcado almacenado en el host de RDS, haga lo siguiente:

Nota: En este ejemplo, los datos existen en el DATA_PUMP_DIR del host de RDS.

1.    Complete los requisitos previos y la configuración descritos en este artículo antes de ejecutar el comando impdp.

2.    Inicie sesión en la instancia EC2 que contiene el cliente instantáneo.

3.    Ejecute un comando similar al siguiente en la instancia EC2 para importar el archivo de volcado ubicado en el host de RDS.

Nota: En este ejemplo, las tablas se truncan antes de importar los datos.

impdp admin@target directory=DATA_PUMP_DIR dumpfile=table_dump.dmp logfile=impdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 table_exists_action=truncate

Resultado de ejemplo:

import: Release 19.0.0.0.0 - Production on Thu Sep 8 13:24:44 2022
Version 19.16.0.0.0
Copyright (c) 1982, 2022, Oracle and/or its affiliates.  All rights reserved.
Password:
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Master table "ADMIN"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "ADMIN"."SYS_IMPORT_TABLE_01":  admin/********@target directory=DATA_PUMP_DIR dumpfile=table_dump.dmp logfile=impdp_table_dump.log tables=admin.test1,admin.test2,admin.test3 table_exists_action=truncate
Processing object type TABLE_EXPORT/TABLE/TABLE
Table "ADMIN"."TEST2" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate
Table "ADMIN"."TEST3" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate
Table "ADMIN"."TEST1" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "ADMIN"."TEST2"                             2.749 MB   24059 rows
. . imported "ADMIN"."TEST1"                             677.2 KB    1814 rows
. . imported "ADMIN"."TEST3"                             15.98 KB       5 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 Thu Sep 8 13:24:54 2022 elapsed 0 00:00:06

Transferencia de archivos de volcado entre su instancia de RDS para Oracle DB y un bucket de Amazon S3

Para transferir archivos de volcado entre una instancia RDS Oracle DB y un bucket Amazon S3, puede utilizar la opción S3 Integration. Para obtener más información, consulte Transferencia de archivos entre Amazon RDS para Oracle y un bucket de Amazon S3.


Información relacionada

Descripción general de Oracle Data Pump

DBMS_DATAPUMP

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años