Wie wird Oracle Instant Client verwendet, um den Import oder Export von Data Pump für meine Amazon-RDS-für-Oracle-DB-Instance auszuführen?

Lesedauer: 10 Minute
0

Ich möchte impdp- und expdp-Hilfsprogramme verwenden, um den Export und Import in meine Amazon-Relational-Database-Service-für-Oracle-DB-Instance (Amazon RDS) durchzuführen.

Kurzbeschreibung

Es gibt mehrere Möglichkeiten, einen Export oder Import in eine Amazon-RDS-für-Oracle-DB-Instance durchzuführen.

Nach dem Einrichten der Umgebung können Sie:

  • Importieren Sie Tabellen aus einer Oracle-RDS-Quell-Instance in eine Oracle-RDS-Ziel-Instance.
  • Exportieren Sie Daten aus einer Oracle-RDS-Instance und erstellen Sie eine Speicherauszugsdatei lokal auf einer EC2-Instance (Amazon Elastic Compute Cloud) oder einem Remote-Host.
  • Exportieren Sie Daten aus einer Oracle-RDS-Instance, und speichern Sie die Speicherauszugsdatei auf dem RDS-Host.
  • Importiert eine Dump-Datei, die sich auf einem RDS-Host befindet.
  • Übertragen Sie Dump-Dateien zwischen Ihrer RDS-für-Oracle-DB-Instance und einem Amazon-S3-Bucket (Amazon Simple Storage Service) mithilfe der S3-Integrationsoption.

Lösung

Um ein Managed-Service-Erlebnis zu bieten, ist der Zugriff auf Host-Ebene zur Nutzung der impdp- und expdp-Hilfsprogramme auf dem RDS-Host nicht zulässig. Eine alternative Option ist die Verwendung der Data Pump API (DBMS_DATAPUMP), um die Importe oder Exporte durchzuführen. Sie können diese Aufgabe jedoch mithilfe der Data-Pump-Hilfsprogramme auf einem Remote-Host ausführen.

Oracle Instant Client ist ein leichten Client, den Sie auf Ihrem Computer oder auf einer Amazon-EC2-Instance installieren können. Oracle Instant Client enthält die Hilfsprogramme impdp und expdp, mit denen Sie die Export- und Importvorgänge über die Befehlszeile ausführen können.

Voraussetzungen

Gehen Sie vor der Verwendung von Oracle Instant Client wie folgt vor:

  • Überprüfen Sie die Dokument-ID 553337.1, um zu prüfen, ob die heruntergeladene Binärdatei mit der Quell- und Zielversion kompatibel ist. Der Export von einem Client mit einer gleichen oder einer höheren Version wird normalerweise unterstützt. Der Import mit einer Client-Version, die mit der Amazon-RDS-Zielversion identisch ist, wird unterstützt. Wenn die Version der Quell-Instance beispielsweise 12.2 und die Version der Ziel-Instance 19c ist, können Sie die neueste 19c-Version des Oracle Instant Client installieren.
  • Um Data Pump zu verwenden, installieren Sie das Tools-Paket zusätzlich zum Basispaket. Informationen zur Installation der Pakete finden Sie in der Oracle-Instant-Client-Dokumentation.
  • Stellen Sie sicher, dass die Sommerzeitversion (Daylight Saving Time, DST) der Ziel-RDS-Instance gleich oder später ist als die der Quell-Instance. Andernfalls erhalten Sie beim Ausführen des Imports die folgende Fehlermeldung: ORA-39405. Mit der folgenden Abfrage können Sie die aktuelle DST-Version Ihrer Instance überprüfen. Um die DST-Version auf die neueste verfügbare Version in einer Oracle-RDS-Instance zu aktualisieren, verwenden Sie die Option TIMEZONE_FILE_AUTOUPGRADE.
SELECT * FROM V$TIMEZONE_FILE;

Gehen Sie wie folgt vor, um den Data-Pump-Import oder -Export aus einer Datenbank mithilfe eines Oracle Instant Client zu testen:

1.    Erstellen Sie eine Amazon-EC2-Test-Instance mit dem Amazon-Linux-2-Betriebssystem.

2.    Laden Sie das Basispaket (RPM), das Tools-Paket (RPM) und das SQL*Plus-Paket (RPM) herunter. In diesem Artikel sind die folgenden RPMs die neuesten verfügbaren Downloads:

  • 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.    Übertragen Sie die Binärdateien auf die EC2-Instance. Weitere Informationen finden Sie unter Übertragen von Dateien auf Linux-Instances mithilfe eines SCP-Clients.

4.    Befolgen Sie die Anweisungen in der Oracle-Dokumentation für das Installieren der Oracle Instant Client auf Linux mit RPM. Durch diesen Prozess werden die Binärdateien im Standardspeicherort /usr/lib/oracle/example-client-version/client64 installiert. Wenn Sie beispielsweise die Binärdateien für Version 19.16 herunterladen, lautet der standardmäßige binäre Speicherort für die Installation /usr/lib/oracle/19.16/client64/bin.

5.    Installieren Sie das SQL*Plus-Paket (RPM). SQL*Plus wird verwendet, um die Konnektivität zwischen der EC2-Instance und der RDS-Instance zu testen.

Beispiel:

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

6.    Legen Sie die folgenden Umgebungsvariablen fest oder aktualisieren Sie sie, wie in diesem Beispiel zu sehen ist:

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

7.    Erstellen Sie Ihre Konfigurationsdateien, wie tnsnames.ora und sqlnet.ora, am folgenden Speicherort: /usr/lib/oracle/ example-client-version/client64/lib/network/admin. In diesem Beispiel lautet der Speicherort: /usr/lib/oracle/19.16/client64/lib/network/admin.

Einrichten der Umgebung

1.    Fügen Sie der Datei tnsnames.ora die erforderlichen TNS-Einträge für den Import oder Export von Data Pump hinzu.

Beispiel für einen Eintrag in der Datei tnsnames.ora:

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

Weitere Informationen finden Sie unter Konfigurieren von SQL*Plus für die Verwendung von SSL mit einer Oracle-DB-Instance.

  1. Aktualisieren Sie die eingehenden Regeln für die Sicherheitsgruppe der Quell- und Ziel-RDS-Instances, um Verbindungen von der EC2-Instance zu ermöglichen.

  2. Erstellen Sie Testtabellen in der RDS-Quell-Instance, um den Export durchzuführen, indem Sie Abfragen ähnlich den folgenden ausführen:

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;

Importieren von Tabellen aus einer Oracle-RDS-Quell-Instance in eine Oracle-RDS-Ziel-Instance

Gehen Sie wie folgt vor, um die Tabellen aus einer Oracle-RDS-Quell-Instance in eine Oracle-RDS-Ziel-Instance zu importieren:

1.    Führen Sie eine Abfrage ähnlich dem Beispiel unten aus, um eine Datenbank-Verknüpfung zwischen der Quell- und Zieldatenbank zu erstellen. Dies wird mit dem Parameter network_link verwendet:

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

Der Datenbank-Link, der die Ziel-Instance mit der Quell-Instance verbindet, verfügt über eingehende Regeln, die Verbindungen der Ziel-Instance zulassen.

2.    Erfüllen Sie die in diesem Artikel beschriebenen Voraussetzungen und Einstellungen, bevor Sie den Befehl impdp ausführen.

3.    Melden Sie sich bei der EC2-Instance an, die den Oracle Instant Client enthält.

4.    Um Daten von der Quell-Instance in die Ziel-Instance zu importieren, führen Sie einen Befehl ähnlich dem folgenden aus:

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

Beispielausgabe:

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

Exportieren von Daten aus einer Oracle-RDS-Instance und Erstellen einer Dump-Datei lokal auf einem Remote-Host

Gehen Sie wie folgt vor, um die Daten aus einer Oracle-RDS-Instance zu exportieren und lokal eine Dump-Datei zu erstellen:

  • Installieren Sie eine Oracle-Datenbank auf einer EC2-Instance oder einem Remote-Host. Im folgenden Beispiel ist Oracle XE auf einer Windows-EC2-Instance installiert. Weitere Informationen zu Oracle XE finden Sie unter Oracle Database XE Quick Start.
  • Aktualisieren Sie die eingehenden Regeln für die Sicherheitsgruppe der Quell-RDS-Instances, um Verbindungen von der EC2-Instance zu ermöglichen.

1.    Melden Sie sich mit einem Oracle-Client wie SQL*Plus bei der XE-Datenbank an. Erstellen Sie dann ein Verzeichnis in der Oracle XE-Datenbank. Dieses Verzeichnis verweist auf das Verzeichnis, in dem Sie die Dump-Datei auf der EC2-Instance erstellen möchten. Führen Sie eine Abfrage ähnlich der folgenden aus:

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

2.    Erstellen Sie in der XE-Datenbank einen Datenbank-Link zu Ihrer Quell-RDS-Datenbank, indem Sie einen Befehl ähnlich dem folgenden Beispiel verwenden:

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.    Testen Sie den Datenbank-Link ähnlich dem folgenden:

select sysdate from dual@exp_rds;

4.    Um die Dump-Datei auf der EC2-Instance zu erstellen, führen Sie einen Befehl ähnlich dem folgenden aus:

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

Beispielausgabe:

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

Exportieren von Daten aus einer Oracle RDS-Instance und Speichern der Dump-Datei auf dem RDS-Host

Gehen Sie wie folgt vor, um Daten aus einer Oracle RDS-Instance zu exportieren und die Dump-Datei auf dem RDS-Host zu speichern:

1.    Erfüllen Sie die in diesem Artikel beschriebenen Voraussetzungen und Einstellungen, bevor Sie den Befehl expdp ausführen.

2.    Melden Sie sich bei der EC2-Instance an, die den Oracle Instant Client enthält.

3.    Erstellen Sie eine Dump-Datei auf der RDS-Instance, indem Sie einen Befehl ähnlich dem folgenden ausführen:

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

Beispielausgabe:

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

Importieren der Dump-Datei, die sich auf dem RDS-Host befindet

Um eine Dump-Datei zu importieren, die auf dem RDS-Host gespeichert ist, gehen Sie wie folgt vor:

Hinweis: In diesem Beispiel sind die Daten in DATA_PUMP_DIR auf dem RDS-Host vorhanden.

1.    Erfüllen Sie die in diesem Artikel beschriebenen Voraussetzungen und Einstellungen, bevor Sie den Befehl impdp ausführen.

2.    Melden Sie sich bei der EC2-Instance an, die den Instant Client enthält.

3.    Führen Sie einen Befehl ähnlich dem folgenden auf der EC2-Instance aus, um die Dump-Datei zu importieren, die sich auf dem RDS-Host befindet.

Hinweis: In diesem Beispiel werden die Tabellen gekürzt, bevor die Daten importiert werden.

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

Beispielausgabe:

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

Übertragen von Dump-Dateien zwischen Ihrer RDS-für-Oracle-DB-Instance und einem Amazon-S3-Bucket

Um Dump-Dateien zwischen einer RDS-Oracle-DB-Instance und einem Amazon-S3-Bucket zu übertragen, können Sie die S3-Integrationsoption verwenden. Weitere Informationen finden Sie unter Übertragen von Dateien zwischen Amazon RDS for Oracle und einem Amazon S3-Bucket.


Ähnliche Informationen

Überblick über Oracle Data Pump

DBMS_DATAPUMP

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren