Come faccio a utilizzare Oracle Instant Client per eseguire l'importazione o l'esportazione di Data Pump per la mia istanza database di Amazon RDS per Oracle?

10 minuti di lettura
0

Desidero utilizzare le utility impdp ed expdp per eseguire l’esportazione e l'importazione nella mia istanza database di Amazon Relational Database Service (Amazon RDS) per Oracle.

Breve descrizione

Esistono diversi modi per eseguire un'esportazione o un'importazione in un'istanza database Amazon RDS per Oracle.

Dopo aver configurato l'ambiente, puoi:

  • Importare tabelle da un'istanza Oracle RDS di origine in un'istanza Oracle RDS di destinazione.
  • Esportare dati da un'istanza Oracle RDS e creare un file dump localmente su un'istanza Amazon Elastic Compute Cloud (EC2) o su un host remoto.
  • Esportare i dati da un'istanza Oracle RDS e archiviare il file dump sull'host RDS.
  • Importare un file dump che si trova su un host RDS.
  • Trasferire i file dump tra l'istanza database RDS per Oracle e un bucket Amazon Simple Storage Service (Amazon S3) utilizzando l'opzione di integrazione S3.

Risoluzione

Per offrire un'esperienza di servizio gestito, non è consentito l'accesso a livello di host per utilizzare le utility impdp ed expdp sull'host RDS. Un'opzione alternativa consiste nell'utilizzare l'API Data Pump (DBMS_DATAPUMP) per eseguire le importazioni o le esportazioni. Tuttavia, è possibile eseguire questa operazione utilizzando le utilità Data Pump su un host remoto.

Oracle Instant Client è un client leggero che puoi installare sul tuo computer o su un'istanza Amazon EC2. Oracle Instant Client include le utility impdp ed expdp che è possibile utilizzarle per eseguire le operazioni di esportazione e importazione dalla riga di comando.

Prerequisiti

Prima di utilizzare Oracle Instant Client, effettua le seguenti operazioni:

  • Verifica l'ID documento 553337.1 per accertarti che il file binario che stai scaricando supporti l'esportazione delle versioni di origine e di destinazione. In genere è supportata l'esportazione da un client con una versione identica o successiva. È supportata l'importazione con la versione client identica alla versione principale di Amazon RDS di destinazione. Ad esempio, se la versione dell'istanza di origine è la 12.2 e la versione dell'istanza di destinazione è la 19c, puoi installare la versione più recente di Oracle Instant 19c Client.
  • Per utilizzare Data Pump, installa il pacchetto Tools sopra il pacchetto Basic. Per installare i pacchetti, consulta la documentazione Oracle Instant Client.
  • Assicurati che la versione dell’ora legale (DST) dell'istanza RDS di destinazione sia uguale o successiva a quella dell'istanza di origine. In caso contrario, viene visualizzato il seguente errore durante l'esecuzione dell'importazione:ORA-39405. Utilizza la seguente query per verificare la versione DST corrente dell'istanza. Per aggiornare la versione DST all'ultima versione disponibile in un’istanza Oracle RDS, utilizza l'opzione TIMEZONE_FILE_AUTOUPGRADE.
SELECT * FROM V$TIMEZONE_FILE;

Per testare l'importazione o l'esportazione di Data Pump tramite un link di database utilizzando Oracle Instant Client, effettua le seguenti operazioni:

1.    Crea un'istanza Amazon EC2 di prova utilizzando il sistema operativo Amazon Linux 2.

2.    Scarica il pacchetto Basic (RPM), il pacchetto Tools (RPM) e il pacchetto SQL*Plus (RPM). In questo articolo, i seguenti RPM sono gli ultimi download disponibili:

  • oracle-instantclient 19.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.    Trasferisci i file binari all'istanza EC2. Per ulteriori informazioni, consulta Trasferire file su istanze Linux utilizzando un client SCP.

4.    Segui le istruzioni contenute nella documentazione Oracle per l'installazione di Oracle Instant Client su Linux dagli RPM. Questo processo installa i file binari nella posizione predefinita /usr/lib/oracle/example-client-version/client64. Ad esempio, se scarichi i file binari per la versione 19.16, la posizione predefinita dei file binari per l'installazione è /usr/lib/oracle/19.16/client64.

5.    Installa il pacchetto SQL*Plus Package (RPM). SQL*Plus viene utilizzato per testare la connettività tra l'istanza EC2 e l'istanza RDS.

Esempio:

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

6.    Imposta o aggiorna le seguenti variabili ambientali, come mostrato in questo esempio:

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

7.    Crea i tuoi file di configurazione, cometnsnames.ora esqlnet.ora, nella seguente posizione: /usr/lib/oracle/example-client-version /client64/lib/network/admin. In questo esempio, la posizione sarà: /usr/lib/oracle/19.16/client64/lib/network/admin.

Configurazione dell'ambiente

1.    Includi le voci TNS richieste per l'importazione o l’esportazione di Data Pump nel file tnsnames.ora.

Esempio di una voce nel file tnsnames.ora:

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

Per ulteriori informazioni, consulta Configurazione di SQL*Plus per l'utilizzo di SSL con un'istanza database Oracle.

  1. Aggiorna le regole in ingresso per il gruppo di sicurezza delle istanze RDS di origine e di destinazione per consentire la presenza di connessioni dall'istanza EC2.

  2. Crea tabelle di test nell'istanza RDS di origine per eseguire l'esportazione eseguendo query simili alle seguenti:

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;

Importa tabelle da un'istanza Oracle RDS di origine in un'istanza Oracle RDS di destinazione

Per importare le tabelle da un'istanza Oracle RDS di origine in un'istanza Oracle RDS di destinazione, effettua le seguenti operazioni:

1.    Esegui una query simile all'esempio seguente per creare un collegamento al database tra i database di origine e di destinazione. Viene utilizzato con il parametro 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)))';

Il collegamento al database che collega l'istanza di destinazione all'istanza di origine dispone di regole in entrata che consentono le connessioni dell'istanza di destinazione.

2.    Completa i prerequisiti e la configurazione descritti in questo articolo prima di eseguire il comando impdp.

3.    Accedi all'istanza EC2 che contiene il client istantaneo Oracle.

4.    Per importare dati dall'istanza di origine all'istanza di destinazione, esegui un comando simile al seguente:

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

Output di esempio:

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

Esporta dati da un'istanza Oracle RDS e crea un file dump localmente su un host remoto

Per esportare i dati da un'istanza Oracle RDS e creare un file dump localmente, procedi come segue:

  • Installa un database Oracle su un'istanza EC2 o su un host remoto. Nell'esempio seguente, Oracle XE è installato su un'istanza Windows EC2. Per ulteriori informazioni su Oracle XE, consultaOracle Database XE Quick Start.
  • Aggiorna le regole in ingresso per il gruppo di sicurezza delle istanze RDS di origine per consentire connessioni dall'istanza EC2.

1.    Accedi al database XE con un client Oracle, come SQL*Plus. Quindi, crea una directory sul database Oracle XE. Questa directory farà riferimento alla directory desideri creare il file dump sull'istanza EC2. Esegui una query simile alla seguente:

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

2.    Nel database XE, crea un collegamento al database RDS di origine utilizzando un comando simile al seguente esempio:

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.    Testa il collegamento al database in modo simile al seguente:

select sysdate from dual@exp_rds;

4.    Per creare il file dump sull'istanza EC2, esegui un comando simile al seguente:

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

Output di esempio:

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

Esporta i dati da un'istanza Oracle RDS e archivia il file dump sull'host RDS

Per esportare i dati da un'istanza Oracle RDS e archiviare il file dump sull'host RDS, procedi come segue:

1.    Completa i prerequisiti e la configurazione descritti in questo articolo prima di eseguire il comando expdp.

2.    Accedi all'istanza EC2 che contiene il client istantaneo Oracle.

3.    Crea un file dump sull'istanza RDS eseguendo un comando simile al seguente:

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

Output di esempio:

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

Importa il file dump che si trova sull'host RDS

Per importare un file dump archiviato sull'host RDS, procedi come segue:

Nota: in questo esempio, i dati si trovano nel DATA_PUMP_DIR sull'host RDS.

1.    Completa i prerequisiti e la configurazione descritti in questo articolo prima di eseguire il comando impdp.

2.    Accedi all'istanza EC2 che contiene il client istantaneo.

3.    Esegui un comando simile al seguente sull'istanza EC2 per importare il file dump che si trova sull'host RDS.

Nota: in questo esempio, le tabelle vengono troncate prima dell'importazione dei dati.

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

Output di esempio:

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

Trasferimento di file dump tra un'istanza database RDS per Oracle e un bucket Amazon S3

Per trasferire i file dump tra un'istanza database RDS Oracle e un bucket Amazon S3, puoi utilizzare l'opzione di integrazione S3. Per ulteriori informazioni, consulta Trasferire file tra Amazon RDS per Oracle e un bucket Amazon S3.


Informazioni correlate

Panoramica di Oracle Data Pump

DBMS_DATAPUMP

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa