Como posso usar o Oracle Instant Client para executar a importação ou exportação do Data Pump para a minha instância de banco de dados do Amazon RDS para Oracle?

Data da última atualização: 28/10/2022

Quero usar os utilitários impdp e expdp para realizar a importação e exportação para a minha instância de banco de dados do Amazon Relational Database Service (Amazon RDS) para Oracle.

Descrição breve

Há várias maneiras de realizar uma exportação ou importação em uma instância de banco de dados Amazon RDS para Oracle.

Após configurar o ambiente, você poderá:

  • Importar tabelas de uma instância do RDS para Oracle de origem para uma instância do RDS para Oracle de destino.
  • Exportar dados de uma instância do RDS para Oracle e criar um arquivo de despejo localmente em uma instância ou host remoto do Amazon Elastic Compute Cloud (EC2).
  • Exportar dados de uma instância do RDS para Oracle e armazenar o arquivo de despejo no host do RDS.
  • Importar um arquivo de despejo localizado em um host do RDS.
  • Transfira arquivos de despejo entre sua instância de banco de dados do RDS para Oracle e um bucket do Amazon Simple Storage Service (Amazon S3) usando a opção de integração do S3.

Resolução

Para oferecer uma experiência de serviço gerenciado, o acesso em nível de host para usar os utilitários impdp e expdp no host do RDS não é permitido. Uma opção alternativa é usar a API Data Pump (DBMS_DATAPUMP) para realizar as importações ou exportações. No entanto, você pode fazer isso usando os utilitários do Data Pump em um host remoto.

O Oracle Instant Client é um cliente leve que pode ser instalado no seu computador ou em uma instância do Amazon EC2. O Oracle Instant Client inclui os utilitários impdp e expdp que você pode usar para executar as operações de exportação e importação via linha de comando.

Pré-requisitos

Antes de usar o Oracle Instant Client, faça o seguinte:

  • Revise o ID de documento 553337.1 para conferir se o binário que está baixando é compatível com a exportação de versões de origem e destino. Em geral, a exportação de um cliente com uma versão igual ou posterior é permitida. Importar com uma versão de cliente igual à versão principal do Amazon RDS de destino é permitido. Por exemplo, se a versão da instância de origem for 12.2 e a versão da instância de destino for 19c, a versão mais recente do Oracle Instant 19c Client poderá ser instalada.
  • Para usar o Data Pump, instale o pacote Tools (Ferramentas) na parte superior do pacote Basic (Básico). Para instalar os pacotes, consulte a documentação do Oracle Instant Client.
  • Certifique-se de que a versão do horário de verão (DST) da instância do RDS de destino seja igual ou posterior à da instância de origem. Caso contrário, você receberá o seguinte erro ao executar a importação: ORA-39405. Use a consulta a seguir para conferir a versão atual do DST da sua instância. Para atualizar a versão do DST para a versão mais recente disponível em uma instância do RDS para Oracle, use a opção TIMEZONE_FILE_AUTOUPGRADE.
SELECT * FROM V$TIMEZONE_FILE;

Para testar a importação ou exportação do Data Pump via link de banco de dados usando o Oracle Instant Client, faça o seguinte:

1.    Crie uma instância de teste do Amazon EC2 usando o sistema operacional Amazon Linux 2.

2.    Baixe o pacote Basic (RPM), o pacote Tools (RPM) e o pacote SQL*Plus (RPM). Neste artigo, os seguintes RPM são os downloads mais recentes disponíveis:

  • 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.    Transfira os binários para a instância do EC2. Para obter mais informações, consulte Transfira arquivos para instâncias do Linux usando um cliente SCP.

4.    Siga as instruções na documentação da Oracle Install Oracle Instant Client Using RPM (Instalar o Oracle Instant Client usando RPM). Esse processo instala os binários no local padrão /usr/lib/oracle/example-client-version/client64. Por exemplo, se você baixar os binários para a versão 19.16, o local padrão para a instalação do binário será /usr/lib/oracle/19.16/client64/bin.

5.    Instale o pacote SQL*Plus Package (RPM). O SQL*Plus é usado para testar a conectividade entre a instância do EC2 e a instância do RDS.

Exemplo:

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

6.    Defina ou atualize as seguintes variáveis de ambiente, conforme mostrado neste exemplo:

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

7.    Crie seus arquivos de configuração, como tnsnames.ora e sqlnet.ora, no seguinte local: /usr/lib/oracle/example-client-version/client64/lib/network/admin. Neste exemplo, o local será: /usr/lib/oracle/19.16/client64/lib/network/admin.

Configurar o ambiente

1.    Adicione as entradas de TNS necessárias para a importação ou exportação do Data Pump ao arquivo tnsnames.ora.

Exemplo de uma entrada no arquivo 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 obter mais informações, consulte Configurar o SQL*Plus para usar SSL com uma instância de banco de dados Oracle.

2. Atualize as regras de entrada para o grupo de segurança das instâncias do RDS de origem e destino para permitir conexões na instância do EC2.

3. Crie tabelas de teste na instância do RDS de origem para realizar a exportação executando consultas como as seguintes:

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;

Importar tabelas de uma instância do RDS para Oracle de origem para uma instância do Oracle RDS de destino

Para importar as tabelas de uma instância do RDS para Oracle de origem para uma instância do Oracle RDS de destino, faça o seguinte:

1.    Execute uma consulta semelhante ao exemplo abaixo para criar um link de banco de dados entre os bancos de dados de origem e de destino. O parâmetro network_link é usado:

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)))';

O link do banco de dados que conecta a instância de destino à instância de origem tem regras de entrada que permitem conexões da instância de destino.

2.    Conclua os pré-requisitos e a configuração descritos neste artigo antes de executar o comando impdp.

3.    Faça login na instância do EC2 que contém o Oracle Instant Client.

4.    Para importar dados da instância de origem para a de destino, execute um comando semelhante ao seguinte:

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

Exemplo de saída:

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 dados de uma instância do RDS para Oracle e crie um arquivo de despejo localmente em um host remoto

Para exportar os dados de uma instância do RDS para Oracle e criar um arquivo de despejo localmente, faça o seguinte:

  • Instale um banco de dados Oracle em uma instância do EC2 ou em um host remoto. No exemplo a seguir, o Oracle XE está instalado em uma instância do Windows EC2. Para obter mais informações sobre o Oracle XE, consulte o Oracle Database XE Quick Start (Início rápido do Oracle Database XE).
  • Atualize as regras de entrada para o grupo de segurança das instâncias do RDS de origem para permitir conexões na instância do EC2.

1.    Faça login no banco de dados XE com um cliente Oracle, como o SQL*Plus. Em seguida, crie um diretório no banco de dados Oracle XE. Esse diretório fará referência ao diretório em que você deseja criar o arquivo de despejo na instância do EC2. Execute uma consulta semelhante à seguinte:

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

2.    No banco de dados XE, crie um link de banco de dados para seu banco de dados do RDS de origem usando um comando semelhante a este exemplo:

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.    Teste o link do banco de dados semelhante ao seguinte:

select sysdate from dual@exp_rds;

4.    Para criar o arquivo de despejo na instância do EC2, execute um comando semelhante ao seguinte:

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

Exemplo de saída:

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 dados de uma instância do RDS para Oracle e armazene o arquivo de despejo no host do RDS

Para exportar dados de uma instância do RDS para Oracle e armazenar o arquivo de despejo no host do RDS, faça o seguinte:

1.    Conclua os pré-requisitos e a configuração descritos neste artigo antes de executar o comando expdp.

2.    Faça login na instância do EC2 que contém o Oracle Instant Client.

3.    Crie um arquivo de despejo na instância do RDS executando um comando semelhante ao seguinte:

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

Exemplo de saída:

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

Importar arquivo de despejo localizado no host do RDS

Para importar um arquivo de despejo armazenado no host do RDS, faça o seguinte:

Nota: neste exemplo, os dados existem no DATA_PUMP_DIR no host do RDS.

1.    Conclua os pré-requisitos e a configuração descritos neste artigo antes de executar o comando impdp.

2.    Faça login na instância do EC2 que contém o cliente instantâneo.

3.    Execute um comando semelhante ao seguinte na instância do EC2 para importar o arquivo de despejo localizado no host do RDS.

Nota: neste exemplo, as tabelas são truncadas antes da importação dos dados.

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

Exemplo de saída:

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

Transferir arquivos de despejo entre sua instância de banco de dados do RDS para Oracle e um bucket di Amazon S3

Para transferir arquivos de despejo entre uma instância de banco de dados do RDS para Oracle e um bucket do Amazon S3, é possível usar a opção de integração do S3. Para obter mais informações, consulte Transferir arquivos entre o Amazon RDS para Oracle e um bucket do Amazon S3.


Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?