Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Importieren mit Oracle Data Pump
Oracle Data Pump ist ein Dienstprogramm, mit dem Sie Oracle-Daten in eine Dump-Datei exportieren und in eine andere Oracle-Datenbank importieren können. Das ist ein langfristiger Ersatz für die Oracle-Export/-Import-Dienstprogramme. Oracle Data Pump ist die empfohlene Methode, um große Datenmengen von einer Oracle-Datenbank in eine RDS Amazon-DB-Instance zu verschieben.
Die Beispiele in diesem Abschnitt zeigen eine Möglichkeit, Daten in eine Oracle-Datenbank zu importieren. Oracle Data Pump unterstützt jedoch weitere Methoden. Weitere Informationen finden Sie in der Oracle Database-Dokumentation
Für die Beispiele in diesem Abschnitt wird das DBMS_DATAPUMP
-Paket verwendet. Dieselben Aufgaben können mithilfe der Befehlszeilendienstprogramme impdp
und expdp
von Oracle Data Pump ausgeführt werden. Sie können diese Dienstprogramme, einschließlich Oracle Instant Client, auf einem Remote-Host als Teil einer Oracle Client-Installation installieren. Weitere Informationen finden Sie unter Wie verwende ich Oracle Instant Client, um Data Pump Import oder Export für meine Amazon RDS for Oracle DB-Instance auszuführen?
Themen
Übersicht über Oracle Data Pump
Oracle Data Pump besteht aus den folgenden Komponenten:
-
Befehlszeilenclients
expdp
undimpdp
-
Das
DBMS_DATAPUMP
PL/-Paket SQL -
Das
DBMS_METADATA
PL/-Paket SQL
Sie können Oracle Data Pump für die folgenden Szenarien verwenden:
-
Importieren Sie Daten aus einer Oracle-Datenbank, entweder vor Ort oder auf einer EC2 Amazon-Instance, in eine RDS Oracle-DB-Instance.
-
Importieren Sie Daten aus einer RDS Oracle-DB-Instance in eine Oracle-Datenbank, entweder lokal oder auf einer EC2 Amazon-Instance.
-
Importieren Sie Daten zwischen vier RDS Oracle-DB-Instances, um beispielsweise Daten von EC2 -Classic zu zu migrieren. VPC
Sie können Oracle Data Pump-Dienstprogramme unter Oracle Database Software Downloads
Oracle Data-Pump-Workflow
In der Regel verwenden Sie Oracle Data Pump in den folgenden Phasen:
-
Exportieren Sie Ihre Daten in eine Dump-Datei in der Quelldatenbank.
-
Laden Sie Ihre Dump-Datei auf Ihr Ziel RDS für die Oracle-DB-Instance hoch. Sie können die Übertragung mithilfe eines Amazon-S3-Buckets oder über eine Datenbankverbindung zwischen zwei Datenbanken vornehmen.
-
Importieren Sie die Daten aus Ihrer Dump-Datei in Ihre RDS Oracle-DB-Instance.
Bewährte Methoden für Oracle Data Pump
Wenn Sie Oracle Data Pump verwenden, um Daten in eine RDS Oracle-Instance zu importieren, empfehlen wir die folgenden bewährten Methoden:
-
Führen Sie Importe im Modus
schema
odertable
durch, damit bestimmte Schemata und Objekte importiert werden. -
Beschränken Sie die Schemata, die Sie importieren, auf solche, die von Ihrer Anwendung benötigt werden.
-
Importieren Sie nicht im
full
-Modus oder keine Importschemas für vom System verwaltete Komponenten.Da RDS Oracle weder Benutzern noch
SYSDBA
administrativen Benutzern ZugriffSYS
gewährt, können diese Aktionen das Oracle-Datenwörterbuch beschädigen und die Stabilität Ihrer Datenbank beeinträchtigen. -
Beim Laden großer Datenmengen gehen Sie folgendermaßen vor:
-
Übertragen Sie die Dump-Datei auf das Ziel RDS für die Oracle-DB-Instance.
-
Erstellen Sie einen DB-Snapshot Ihrer Instance.
-
Testen Sie den Importvorgang, um zu prüfen, ob er erfolgreich ist.
Wenn Datenbankkomponenten unwirksam sind, können Sie die DB-Instance löschen und sie über den DB-Snapshot neu erstellen. Die wiederhergestellte DB-Instance enthält alle Dumpdateien, die auf der DB-Instance bereitgestellt wurden, als Sie den DB-Snapshot erstellt haben.
-
-
Importieren Sie keine Dump-Dateien, die mit den Exportparametern von Oracle Data Pump
TRANSPORT_TABLESPACES
,TRANSPORTABLE
, oderTRANSPORT_FULL_CHECK
erstellt wurden. RDSfür Oracle-DB-Instances wird der Import dieser Dump-Dateien nicht unterstützt. -
Importieren Sie keine Speicherabbilddateien, die Oracle Scheduler-Objekte in
SYS
,SYSTEM
,RDSADMIN
,RDSSEC
undRDS_DATAGUARD
enthalten und zu den folgenden Kategorien gehören:-
Aufträge
-
Programme
-
Schedules
-
Ketten
-
Regeln
-
Auswertungskontexte
-
Regelsätze
RDSfür Oracle-DB-Instances wird der Import dieser Dump-Dateien nicht unterstützt.
-
-
Um nicht unterstützte Oracle-Scheduler-Objekte auszuschließen, verwenden Sie zusätzliche Anweisungen während des Data Pump-Exports. Wenn Sie
DBMS_DATAPUMP
verwenden, fügen Sie einen zusätzlichenMETADATA_FILTER
vor demDBMS_METADATA.START_JOB
hinzu:DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' );
Wenn Sie
expdp
verwenden, erstellen Sie eine Parameterdatei, die die im folgenden Beispiel dargestellteexclude
-Anweisung enthält. Dann benutze esPARFILE=
mit deinemparameter_file
expdp
Kommando.exclude=procobj:"IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) )"
Importieren von Daten mit Oracle Data Pump und einem Amazon S3-Bucket
Der folgende Importvorgang verwendet Oracle Data Pump und einen Amazon S3-Bucket. Die Schritte sind wie folgt:
-
Exportieren Sie Daten in der Quelldatenbank mit dem DATAPUMP Paket Oracle DBMS_
. -
Platzieren Sie die Dump-Datei in einem Amazon-S3-Bucket.
-
Laden Sie die Dump-Datei aus dem Amazon S3 S3-Bucket in das
DATA_PUMP_DIR
Verzeichnis auf dem Ziel RDS für die Oracle-DB-Instance herunter. -
Importieren Sie die Daten aus der kopierten Dump-Datei mithilfe des Pakets in die RDS Oracle-DB-Instance.
DBMS_DATAPUMP
Themen
- Anforderungen zum Importieren von Daten mit Oracle Data Pump und einem Amazon-S3-Bucket
- Schritt 1: Erteilen Sie dem Datenbankbenutzer Berechtigungen RDS für die Oracle-Ziel-DB-Instance
- Schritt 2: Exportieren Sie Daten mithilfe DBMS von _ in eine Dump-Datei DATAPUMP
- Schritt 3: Hochladen der Dumpdatei in Ihren Amazon S3-Bucket
- Schritt 4: Herunterladen der Dump-Datei aus Ihrem Amazon-S3-Bucket in Ihre DB-Instance.
- Schritt 5: Importieren Sie Ihre Dump-Datei mithilfe von _ in Ihre Ziel-DB-Instance DBMS DATAPUMP
- Schritt 6: Bereinigen
Anforderungen zum Importieren von Daten mit Oracle Data Pump und einem Amazon-S3-Bucket
Der Vorgang hat folgende Anforderungen:
-
Stellen Sie sicher, dass ein Amazon S3 S3-Bucket für Dateiübertragungen verfügbar ist und dass sich der Amazon S3 S3-Bucket in derselben Datenbank AWS-Region wie die DB-Instance befindet. Weitere Anleitungen finden Sie unter Erstellen eines Buckets im Amazon Simple Storage Service Handbuch "Erste Schritte".
-
Die Größe des Objekts, das Sie zum Amazon S3-Bucket hochladen, darf höchstens 5 TB betragen. Weitere Informationen zur Arbeit mit Objekten in Amazon S3 finden Sie im Amazon Simple Storage Service User Guide.
Anmerkung
Wenn die Größe der Speicherabbilddatei 5 TB überschreitet, können Sie den Oracle Data Pump-Export mit Paralleloption ausführen. Diese Operation verteilt die Daten auf mehrere Speicherabbilddateien, sodass die Grenze von 5 TB für einzelne Dateien nicht überschritten wird.
-
Sie müssen den Amazon S3 S3-Bucket für die RDS Amazon-Integration vorbereiten, indem Sie die Anweisungen unter befolgenKonfiguration von IAM Berechtigungen RDS für die Oracle-Integration mit Amazon S3.
-
Sie müssen sicherstellen, dass Sie über ausreichend Speicherplatz verfügen, um die Dump-Datei in der Quell-Instance und der Ziel-DB-Instance zu speichern.
Anmerkung
Dieser Vorgang importiert Dump-Dateien in das Verzeichnis DATA_PUMP_DIR
, ein vorkonfiguriertes Verzeichnis auf allen Oracle-DB-Instances. Das Verzeichnis befindet sich im selben Speicher-Volume wie Ihre Datendateien. When Sie die Dump-Datei importieren, belegen die vorhandenen Oracle-Datendateien mehr Speicherplatz. Sie sollten daher sicherstellen, dass Ihre DB-Instance diesen zusätzlichen Platzbedarf erfüllen kann. Die importierte Dump-Datei wird nicht automatisch aus dem Verzeichnis DATA_PUMP_DIR
gelöscht oder bereinigt. Verwenden Sie UTL_FILE, um die importierte Dump-Datei zu entfernen. FREMOVE
Schritt 1: Erteilen Sie dem Datenbankbenutzer Berechtigungen RDS für die Oracle-Ziel-DB-Instance
In diesem Schritt erstellen Sie Schemas, in die Sie Daten importieren möchten, und erteilen den Benutzern die erforderlichen Berechtigungen.
Um Benutzer zu erstellen und die erforderlichen Rechte RDS für die Oracle-Ziel-Instance zu gewähren
-
Verwenden Sie SQL *Plus oder Oracle SQL Developer, um sich als Master-Benutzer bei der RDS Oracle-DB-Instance anzumelden, in die die Daten importiert werden. Weitere Information über das Verbinden mit der DB-Instance finden Sie unter Herstellen der Verbindung mit Ihrer DB-Instance von RDS für Oracle.
-
Erstellen Sie die erforderlichen Tabellenräume, bevor Sie Daten importieren. Weitere Informationen finden Sie unter Erstellen und Größenfestlegung von Tabellenräumen.
-
Wenn das Benutzerkonto, in das die Daten importiert werden sollen, nicht vorhanden ist, erstellen Sie das Benutzerkonto und erteilen Sie die erforderlichen Berechtigungen und Rollen. Wenn Sie Daten in mehrere Benutzerkonten importieren möchten, erstellen Sie alle Benutzerkonten und Rollen und erteilen Sie die erforderlichen Berechtigungen.
Die folgenden SQL Anweisungen erstellen beispielsweise einen neuen Benutzer und gewähren die erforderlichen Berechtigungen und Rollen, um die Daten in das Schema zu importieren, das diesem Benutzer gehört. Ersetzen Sie
durch den Namen Ihres Schemas in diesem Schritt und in den folgenden Schritten.schema_1
CREATE USER
schema_1
IDENTIFIED BYmy_password
; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;Anmerkung
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.
Die vorangegangenen Anweisungen gewähren dem neuen Benutzer die
CREATE SESSION
-Berechtigung und dieRESOURCE
-Rolle. Je nach den Datenbankobjekten, die Sie importieren, benötigen Sie möglicherweise zusätzliche Berechtigungen und Rollen.
Schritt 2: Exportieren Sie Daten mithilfe DBMS von _ in eine Dump-Datei DATAPUMP
Um eine Dump-Datei zu erstellen, verwenden Sie das DBMS_DATAPUMP
-Paket.
Exportieren von Oracle-Daten in eine Dump-Datei
-
Verwenden Sie SQL Plus oder Oracle SQL Developer, um mit einem Administratorbenutzer eine Verbindung RDS zur Quelle für die Oracle-DB-Instance herzustellen. Wenn es sich bei der Quelldatenbank um eine RDS Oracle-DB-Instance handelt, stellen Sie eine Verbindung mit dem RDS Amazon-Masterbenutzer her.
-
Exportieren Sie die Daten durch einen Aufruf der
DBMS_DATAPUMP
-Verfahren.Das folgende Skript exportiert das
-Schema in eine Dump-Datei mit dem NamenSCHEMA_1
sample.dmp
imDATA_PUMP_DIR
-Verzeichnis. Ersetzen Sie
durch den Namen des Schemas, das Sie exportieren möchten.SCHEMA_1
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_exp.log', directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''
SCHEMA_1
'')'); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /Anmerkung
Data Pump startet Jobs asynchron. Weitere Informationen über die Überwachung einer Data Pump-Aufgabe finden Sie unter Überwachung des Aufgabenstatus
in der Oracle-Dokumentation. -
(Optional) Sie können den Inhalt des Exportprotokolls mithilfe des
rdsadmin.rds_file_util.read_text_file
-Verfahrens anzeigen. Weitere Informationen finden Sie unter Lesen von Dateien in einem DB-Instance-Verzeichnis.
Schritt 3: Hochladen der Dumpdatei in Ihren Amazon S3-Bucket
Verwenden Sie das RDS Amazon-Verfahrenrdsadmin.rdsadmin_s3_tasks.upload_to_s3
, um die Dump-Datei in den Amazon S3-Bucket zu kopieren. Das folgende Beispiel lädt alle Dateien aus dem Verzeichnis DATA_PUMP_DIR
in einen Amazon S3-Bucket namens
hoch.amzn-s3-demo-bucket
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;
Die Anweisung SELECT
gibt die ID der Aufgabe in einem VARCHAR2
-Datentyp zurück. Weitere Informationen finden Sie unter Dateien von Ihrer RDS Oracle-DB-Instance in einen Amazon S3 S3-Bucket hochladen.
Schritt 4: Herunterladen der Dump-Datei aus Ihrem Amazon-S3-Bucket in Ihre DB-Instance.
Führen Sie diesen Schritt mit dem RDS Amazon-Verfahren ausrdsadmin.rdsadmin_s3_tasks.download_from_s3
. Wenn Sie eine Datei in ein Verzeichnis herunterladen, wird der Download durch download_from_s3
übersprungen, falls bereits eine gleichnamige Datei in dem Verzeichnis vorhanden ist. Um eine Datei aus dem Download-Verzeichnis zu entfernen, verwenden Sie UTL_FILE. FREMOVE
So laden Sie die Dump-Datei herunter
-
Starten Sie SQL *Plus oder Oracle SQL Developer und melden Sie sich als Master auf Ihrer RDS Amazon-Ziel-Oracle-DB-Instance an
-
Laden Sie die Dump-Datei mithilfe des RDS Amazon-Verfahrens
rdsadmin.rdsadmin_s3_tasks.download_from_s3
herunter.Das folgende Beispiel lädt alle Dateien von einem Amazon-S3-Bucket mit dem Namen
in das Verzeichnisamzn-s3-demo-bucket
DATA_PUMP_DIR
herunter.SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => '
amzn-s3-demo-bucket
', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;Die Anweisung
SELECT
gibt die ID der Aufgabe in einemVARCHAR2
-Datentyp zurück. Weitere Informationen finden Sie unter Hochladen von Dateien aus einem Amazon S3-Bucket zu einer Oracle-DB-Instance.
Schritt 5: Importieren Sie Ihre Dump-Datei mithilfe von _ in Ihre Ziel-DB-Instance DBMS DATAPUMP
Verwenden SieDBMS_DATAPUMP
, um das Schema in Ihre RDS Oracle-DB-Instance zu importieren. Zusätzliche Optionen wie METADATA_REMAP
könnten erforderlich sein.
So importieren Sie Daten in Ihre Ziel-DB-Instance
-
Starten Sie SQL *Plus oder SQL Developer und melden Sie sich als Masterbenutzer bei Ihrer RDS Oracle-DB-Instance an.
-
Importieren Sie die Daten, indem Sie
DBMS_DATAPUMP
Prozeduren aufrufen.Das folgende Beispiel importiert die
SCHEMA_1
Daten aussample_copied.dmp
Ihrer Ziel-DB-Instance.DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_copied.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_imp.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''
SCHEMA_1
'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /Anmerkung
Data Pump-Aufträge werden asynchron gestartet. Weitere Informationen über die Überwachung einer Data Pump-Aufgabe finden Sie unter Überwachung des Aufgabenstatus
in der Oracle-Dokumentation. Sie können den Inhalt des Importprotokolls mithilfe des Verfahrens rdsadmin.rds_file_util.read_text_file
anzeigen. Weitere Informationen finden Sie unter Lesen von Dateien in einem DB-Instance-Verzeichnis. -
Überprüfen Sie den Datenimport, indem Sie die Schematabellen Ihrer Ziel-DB-Instance auflisten.
Beispiel: Die folgende Abfrage gibt die Anzahl der Tabellen für zurüc
.SCHEMA_1
SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='
SCHEMA_1
';
Schritt 6: Bereinigen
Nachdem die Daten importiert wurden, können Sie die Dateien, die Sie nicht länger benötigen, löschen.
So entfernen Sie nicht benötigte Dateien
-
Starten Sie SQL *Plus oder SQL Developer und melden Sie sich als Masterbenutzer bei Ihrer RDS Oracle-DB-Instance an.
-
Listen Sie die Dateien in
DATA_PUMP_DIR
mit dem folgenden Befehl auf.SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
-
Um Dateien in
DATA_PUMP_DIR
zu löschen, die nicht länger benötigt werden, verwenden Sie den folgenden Befehl.EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','
filename
');So wird mit dem folgenden Befehl beispielsweise die Datei gelösch
sample_copied.dmp
.EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');
Importieren von Daten mit Oracle Data Pump und einer Datenbankverbindung
Der folgende Importvorgang verwendet Oracle Data Pump und das Oracle DBMS_ FILE _ TRANSFER
-
Stellen Sie eine Connect zu einer Oracle-Quelldatenbank her, bei der es sich um eine lokale Datenbank, eine EC2 Amazon-Instance oder eine RDS Oracle-DB-Instance handeln kann.
-
Exportieren Sie Daten mit dem DATAPUMP Paket DBMS_
. -
Wird verwendet
DBMS_FILE_TRANSFER.PUT_FILE
, um die Dump-Datei aus der Oracle-Datenbank in dasDATA_PUMP_DIR
Verzeichnis auf dem Ziel RDS für die Oracle-DB-Instance zu kopieren, das über einen Datenbank-Link verbunden ist. -
Importieren Sie die Daten aus der kopierten Dump-Datei mithilfe des Pakets in die RDS Oracle-DB-Instance.
DBMS_DATAPUMP
Der Importvorgang mittels Oracle Data Pump und des DBMS_FILE_TRANSFER
-Pakets besteht aus den folgenden Schritten.
Themen
- Anforderungen zm Importieren von Daten mit Oracle Data Pump und einer Datenbankverbindung
- Schritt 1: Erteilen Sie dem Benutzer Berechtigungen RDS für die Oracle-Ziel-DB-Instance
- Schritt 2: Erteilen von Berechtigungen für Benutzer in der Quell-Datenbank
- Schritt 3: Erstellen Sie eine Dump-Datei mit _ DBMS DATAPUMP
- Schritt 4: Einen Datenbank-Link zur Ziel-DB-Instance erstellen
- Schritt 5: Kopieren Sie die exportierte Dump-Datei mit DBMS _ _ FILE in die Ziel-DB-Instance TRANSFER
- Schritt 6: Importieren Sie die Datendatei mit DBMS _ in die Ziel-DB-Instance DATAPUMP
- Schritt 7: Bereinigen
Anforderungen zm Importieren von Daten mit Oracle Data Pump und einer Datenbankverbindung
Der Vorgang hat folgende Anforderungen:
-
Sie müssen über Ausführungsberechtigungen für die Pakete
DBMS_FILE_TRANSFER
undDBMS_DATAPUMP
verfügen. -
Sie müssen über Schreibrechte für das Verzeichnis
DATA_PUMP_DIR
auf der Quell-DB-Instance verfügen. -
Sie müssen sicherstellen, dass Sie über ausreichend Speicherplatz verfügen, um die Dump-Datei in der Quell-Instance und der Ziel-DB-Instance zu speichern.
Anmerkung
Dieser Vorgang importiert Dump-Dateien in das Verzeichnis DATA_PUMP_DIR
, ein vorkonfiguriertes Verzeichnis auf allen Oracle-DB-Instances. Das Verzeichnis befindet sich im selben Speicher-Volume wie Ihre Datendateien. When Sie die Dump-Datei importieren, belegen die vorhandenen Oracle-Datendateien mehr Speicherplatz. Sie sollten daher sicherstellen, dass Ihre DB-Instance diesen zusätzlichen Platzbedarf erfüllen kann. Die importierte Dump-Datei wird nicht automatisch aus dem Verzeichnis DATA_PUMP_DIR
gelöscht oder bereinigt. Um die importierte Dump-Datei zu entfernen, verwenden Sie UTL _. FILE FREMOVE
Schritt 1: Erteilen Sie dem Benutzer Berechtigungen RDS für die Oracle-Ziel-DB-Instance
Gehen Sie wie folgt vor, um dem Benutzer Berechtigungen RDS für die Oracle-Ziel-DB-Instance zu gewähren:
-
Verwenden Sie SQL Plus oder Oracle SQL Developer, um eine Verbindung RDS zu der Oracle-DB-Instance herzustellen, in die Sie die Daten importieren möchten. Connect als RDS Amazon-Masterbenutzer her. Weitere Information über das Verbinden mit der DB-Instance finden Sie unter Herstellen der Verbindung mit Ihrer DB-Instance von RDS für Oracle.
-
Erstellen Sie die erforderlichen Tabellenräume, bevor Sie Daten importieren. Weitere Informationen finden Sie unter Erstellen und Größenfestlegung von Tabellenräumen.
-
Wenn das Benutzerkonto, in das die Daten importiert werden sollen, nicht vorhanden ist, erstellen Sie das Benutzerkonto und die Rollen und erteilen Sie die erforderlichen Berechtigungen. Wenn Sie Daten in mehrere Benutzerkonten importieren möchten, erstellen Sie alle Benutzerkonten und Rollen und erteilen Sie die erforderlichen Berechtigungen.
Mit den folgenden Befehlen wird beispielsweise ein neuer Benutzer mit dem Namen erstellt
schema_1
und gewähren Sie diesem Benutzer die erforderlichen Berechtigungen und Rollen, um die Daten in das Schema zu importieren.CREATE USER
schema_1
IDENTIFIED BYmy-password
; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;Anmerkung
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.
Im vorherigen Beispiel wird dem neuen Benutzer die Berechtigung
CREATE SESSION
und die RolleRESOURCE
erteilt. Möglicherweise sind je nach zu importierenden Datenbankobjekten zusätzliche Berechtigungen und Rollen erforderlich.Anmerkung
Ersetzen Sie
durch den Namen Ihres Schemas in diesem Schritt und in den folgenden Schritten.schema_1
Schritt 2: Erteilen von Berechtigungen für Benutzer in der Quell-Datenbank
Verwenden Sie SQL *Plus oder Oracle SQL Developer, um eine Verbindung zu der RDS Oracle-DB-Instance herzustellen, die die zu importierenden Daten enthält. Falls nötig, erstellen Sie ein Benutzerkonto und gewähren die notwendigen Berechtigungen.
Anmerkung
Wenn es sich bei der Quelldatenbank um eine RDS Amazon-Instance handelt, können Sie diesen Schritt überspringen. Sie verwenden Ihr RDS Amazon-Hauptbenutzerkonto, um den Export durchzuführen.
Die folgenden Befehle erstellen einen neuen Benutzer und gewähren die notwendigen Berechtigungen.
CREATE USER export_user IDENTIFIED BY
my-password
; GRANT CREATE SESSION, CREATE TABLE, CREATE DATABASE LINK TO export_user; ALTER USER export_user QUOTA 100M ON users; GRANT READ, WRITE ON DIRECTORY data_pump_dir TO export_user; GRANT SELECT_CATALOG_ROLE TO export_user; GRANT EXECUTE ON DBMS_DATAPUMP TO export_user; GRANT EXECUTE ON DBMS_FILE_TRANSFER TO export_user;
Anmerkung
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.
Schritt 3: Erstellen Sie eine Dump-Datei mit _ DBMS DATAPUMP
Gehen Sie folgendermaßen vor, um eine Dump-Datei zu erstellen:
-
Verwenden Sie SQL *Plus oder Oracle SQL Developer, um mit einem Administratorbenutzer oder mit dem Benutzer, den Sie in Schritt 2 erstellt haben, eine Verbindung zur Oracle-Quellinstanz herzustellen. Wenn es sich bei der Quelldatenbank um eine Amazon RDS for Oracle-DB-Instance handelt, stellen Sie eine Verbindung mit dem RDS Amazon-Masterbenutzer her.
-
Erstellen Sie eine Dump-Datei mithilfe des Oracle Data Pump-Dienstprogramms.
Das folgende Skript erstellt im Verzeichnis
DATA_PUMP_DIR
eine Dump-Datei mit dem Namen sample.dmp.DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT' , job_mode => 'SCHEMA' , job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample_exp.log' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl , 'SCHEMA_EXPR' , 'IN (''SCHEMA_1'')' ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Anmerkung
Data Pump-Aufträge werden asynchron gestartet. Weitere Informationen über die Überwachung einer Data Pump-Aufgabe finden Sie unter Überwachung des Aufgabenstatus
in der Oracle-Dokumentation. Sie können den Inhalt des Exportprotokolls mithilfe des Verfahrens rdsadmin.rds_file_util.read_text_file
anzeigen. Weitere Informationen finden Sie unter Lesen von Dateien in einem DB-Instance-Verzeichnis.
Schritt 4: Einen Datenbank-Link zur Ziel-DB-Instance erstellen
Erstellen Sie einen Datenbank-Link zwischen Ihrer Quell-DB-Instance und Ihrer Ziel-DB-Instance. Ihre lokale Oracle-Instance muss über eine Netzwerkverbindung mit der DB-Instance verfügen, damit eine Datenbankverbindung erstellt und Ihre Dumpdatei übermittelt werden kann.
Führen Sie diesen Schritt mit demselben Benutzerkonto wie im vorherigen Schritt aus.
Wenn Sie einen Datenbank-Link zwischen zwei DB-Instances innerhalb derselben VPC oder einer Peer-Instance erstellenVPCs, sollten die beiden DB-Instances über eine gültige Route zwischen ihnen verfügen. Die Sicherheitsgruppe jeder DB-Instance muss den Eintritt und den Austritt von einer zur anderen DB-Instance erlauben. Die Regeln für eingehende und ausgehende Sicherheitsgruppen können sich auf Sicherheitsgruppen derselben Gruppe VPC oder einer Peering-Gruppe beziehen. VPC Weitere Informationen finden Sie unter Anpassen von Datenbank-Links für die Verwendung mit DB-Instances in einem VPC.
Der folgende Befehl erstellt einen Datenbank-Link mit dem Namento_rds
, der eine Verbindung zum RDS Amazon-Master-Benutzer auf der Ziel-DB-Instance herstellt.
CREATE DATABASE LINK to_rds CONNECT TO
<master_user_account>
IDENTIFIED BY<password>
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>
) (PORT=<listener port>
))(CONNECT_DATA=(SID=<remote SID>
)))';
Schritt 5: Kopieren Sie die exportierte Dump-Datei mit DBMS _ _ FILE in die Ziel-DB-Instance TRANSFER
Verwenden Sie DBMS_FILE_TRANSFER
, um die Dump-Datei aus der Datenbank der Quell-Instance zur Ziel-DB-Instance zu kopieren. Mit dem folgenden Skript wird eine Dumpdatei mit dem Namen sample.dmp aus der Quell-Instance zu einer Ziel-Datenbankverbindung mit dem Namen to_rds (im vorherigen Schritt erstellt) kopiert.
BEGIN DBMS_FILE_TRANSFER.PUT_FILE( source_directory_object => 'DATA_PUMP_DIR', source_file_name => 'sample.dmp', destination_directory_object => 'DATA_PUMP_DIR', destination_file_name => 'sample_copied.dmp', destination_database => 'to_rds' ); END; /
Schritt 6: Importieren Sie die Datendatei mit DBMS _ in die Ziel-DB-Instance DATAPUMP
Verwenden Sie Oracle Data Pump, um das Schema in die DB-Instance zu kopieren. Zusätzliche Optionen wie METADATA _ sind REMAP möglicherweise erforderlich.
Stellen Sie mit dem RDS Amazon-Master-Benutzerkonto eine Connect zur DB-Instance her, um den Import durchzuführen.
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_copied.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_imp.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''
SCHEMA_1
'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Anmerkung
Data Pump-Aufträge werden asynchron gestartet. Weitere Informationen über die Überwachung einer Data Pump-Aufgabe finden Sie unter Überwachung des Aufgabenstatusrdsadmin.rds_file_util.read_text_file
anzeigen. Weitere Informationen finden Sie unter Lesen von Dateien in einem DB-Instance-Verzeichnis.
Sie können den Datenimport überprüfen, indem Sie die Tabelle des Benutzers zur DB-Instance aufrufen. Beispiel: Die folgende Abfrage gibt die Anzahl der Tabellen für zurüc
. schema_1
SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='
SCHEMA_1
';
Schritt 7: Bereinigen
Nachdem die Daten importiert wurden, können Sie die Dateien, die Sie nicht länger benötigen, löschen. Sie können die Dateien in DATA_PUMP_DIR
mit dem folgenden Befehl auflisten.
SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
Um Dateien in DATA_PUMP_DIR
zu löschen, die nicht länger benötigt werden, verwenden Sie den folgenden Befehl:
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','
<file name>
');
So wird mit dem folgenden Befehl beispielsweise die Datei "sample_copied.dmp"
gelöscht.
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');