

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 von Daten zu Oracle in Amazon RDS
<a name="Oracle.Procedural.Importing"></a>

Wie Sie Daten in eine DB-Instance von Amazon RDS für Oracle importieren, hängt von folgendem ab: 
+ Die Menge an Daten, die Sie haben
+ Die Anzahl der Datenbankobjekte in Ihrer Datenbank
+ Die Vielfalt der Datenbankobjekte in Ihrer Datenbank

Sie können beispielsweise das folgende Tool verwenden, je nach den Anforderungen:
+ Oracle SQL Developer — Importieren Sie eine einfache 20-MB-Datenbank.
+ Oracle Data Pump – Importieren Sie komplexe Datenbanken oder Datenbanken, die mehrere hundert Megabyte oder mehrere Terabyte groß sind. Sie können beispielsweise Tabellenbereiche von einer On-Premises-Datenbank in Ihre DB-Instance von RDS für Oracle transportieren. Sie können Amazon S3 oder Amazon EFS verwenden, um die Datendateien und Metadaten zu übertragen. Weitere Informationen finden Sie unter [Migrieren mithilfe von Oracle Transportable Tablespaces](oracle-migrating-tts.md), [Amazon-EFS-Integration](oracle-efs-integration.md) und [Amazon S3-Integration](oracle-s3-integration.md).
+ AWS Database Migration Service (AWS DMS) – Datenbanken ohne Ausfallzeiten migrieren. Weitere Informationen zu AWS DMS finden Sie unter [Was ist AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)und dem Blogbeitrag [Migrieren von Oracle-Datenbanken mit nahezu null Ausfallzeiten mit AWS-DMS](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/).

**Wichtig**  
Bevor Sie die vorherigen Migrationstechniken verwenden, empfehlen wir Ihnen, Ihre Datenbank zu sichern. Nach dem Importieren der Daten können Sie Ihre DB-Instances von RDS für Oracle sichern, indem Sie Snapshots erstellen. Später können Sie die Schnappschüsse wiederherstellen. Weitere Informationen finden Sie unter [Sichern, Wiederherstellen und Exportieren von Daten](CHAP_CommonTasks.BackupRestore.md).

Bei vielen Datenbank-Engines kann die laufende Replikation fortgesetzt werden, bis Sie bereit sind, zur Zieldatenbank zu wechseln. Mithilfe von AWS DMS können Sie Daten, die aus derselben oder einer anderen Datenbank-Engine stammen, nach RDS für Oracle migrieren. Wenn Sie Daten aus einer anderen Datenbank-Engine migrieren, können Sie AWS Schema Conversion Tool verwenden, um Schemaobjekte zu migrieren, die nicht über AWS DMS migriert werden.

**Topics**
+ [Importieren mit Oracle SQL Developer](Oracle.Procedural.Importing.SQLDeveloper.md)
+ [Migrieren mithilfe von Oracle Transportable Tablespaces](oracle-migrating-tts.md)
+ [Importieren mit Oracle Data Pump](Oracle.Procedural.Importing.DataPump.md)
+ [Import unter Verwendung von Oracle-Export/-Import](Oracle.Procedural.Importing.ExportImport.md)
+ [Importieren mit Oracle SQL\$1Loader](Oracle.Procedural.Importing.SQLLoader.md)
+ [Migrieren mit materialisierten Oracle-Ansichten](Oracle.Procedural.Importing.Materialized.md)

# Importieren mit Oracle SQL Developer
<a name="Oracle.Procedural.Importing.SQLDeveloper"></a>

Bei Oracle SQL Developer handelt es sich um ein Grafik-Java-Tool, das Oracle kostenfrei zur Verfügung stellt. SQL Developer bietet Optionen für das Migrieren von Daten zwischen Oracle-Datenbanken oder für Daten von anderen Datenbanken, wie zum Beispiel von MySQL zu einer Oracle-Datenbank. Dieses Tool ist am besten zum Migrieren kleiner Datenbanken geeignet. 

Sie können dieses Tool auf Ihrem Desktop-Computer (Windows, Linux oder Mac) oder auf einem Ihrer Server installieren. Nach der Installation von SQL Developer können Sie diesen verwenden, um eine Verbindung mit Ihrer Quell- und Ihrer Ziel-Datenbank herzustellen. Verwenden Sie den Befehl **Datenbank kopieren** im Tools-Menü, um die Daten in die DB-Instance von RDS für Oracle zu kopieren. 

Sie können SQL Developer unter [http://www.oracle.com/technetwork/developer-tools/sql-developer](http://www.oracle.com/technetwork/developer-tools/sql-developer) herunterladen. 

Wir empfehlen Ihnen, die Oracle SQL Developer Produkt-Dokumentation durchzulesen, bevor Sie mit dem Migrieren Ihrer Daten beginnen. Oracle biete auch eine Dokumentation über das Migrieren von anderen Datenbanken, einschließlich MySQL und SQL Server. Weitere Informationen finden Sie unter [http://www.oracle.com/technetwork/database/migration](http://www.oracle.com/technetwork/database/migration) in der Oracle-Dokumentation. 

# Migrieren mithilfe von Oracle Transportable Tablespaces
<a name="oracle-migrating-tts"></a>

Sie können die Oracle-Funktion Transportable Tablespaces verwenden, um eine Reihe von Tabellenbereichen aus einer On-Premises-Oracle-Datenbank in eine DB-Instance von RDS für Oracle zu kopieren. Auf physischer Ebene übertragen Sie Quell- und Metadatendateien mithilfe von Amazon EFS oder Amazon S3 auf Ihre Ziel-DB-Instance. Die Funktion „Transportable Tablespaces“ verwendet das Paket `rdsadmin.rdsadmin_transport_util`. Informationen zur Syntax und Semantik dieses Pakets finden Sie unter [Transport von Tabellenbereichen](rdsadmin_transport_util.md).

Blogbeiträge, in denen erklärt wird, wie Tablespaces transportiert werden, finden Sie unter [Migrieren von Oracle-Datenbanken zur AWS Verwendung von transportierbarem Tablespace und [Amazon RDS for Oracle Transportable](https://aws.amazon.com/blogs/database/amazon-rds-for-oracle-transportable-tablespaces-using-rman/) Tablespaces](https://aws.amazon.com/blogs/database/migrate-oracle-databases-to-aws-using-transportable-tablespace/) mit RMAN.

**Topics**
+ [Überblick über Transportable Tablespaces von Oracle](#oracle-migrating-tts.overview)
+ [Phase 1: Einrichten Ihres Quell-Hosts](#oracle-migrating-tts.setup-phase)
+ [Phase 2: Vorbereiten des vollständigen Tabellenbereich-Backups](#oracle-migrating-tts.initial-br-phase)
+ [Phase 3: Erstellen und Übertragen inkrementeller Backups](#oracle-migrating-tts.roll-forward-phase)
+ [Phase 4: Transportieren der Tabellenbereiche](#oracle-migrating-tts.final-br-phase)
+ [Phase 5: Validieren der transportierten Tabellenbereiche](#oracle-migrating-tts.validate)
+ [Phase 6: Bereinigen übrig gebliebener Dateien](#oracle-migrating-tts.cleanup)

## Überblick über Transportable Tablespaces von Oracle
<a name="oracle-migrating-tts.overview"></a>

Ein Transportable-Tablespace-Set besteht aus Datendateien für den Satz von Tabellenbereichen, der transportiert wird, und einer Export-Dump-Datei, die Metadaten zu den Tabellenbereichen enthält. In einer physischen Migrationslösung wie Transportable Tablespaces übertragen Sie physische Dateien: Datendateien, Konfigurationsdateien und Data-Pump-Dump-Dateien.

**Topics**
+ [Vor- und Nachteile von Transportable Tablespaces](#oracle-migrating-tts.overview.benefits)
+ [Einschränkungen für Transportable Tablespaces](#oracle-migrating-tts.limitations)
+ [Voraussetzungen für Transportable Tablespaces](#oracle-migrating-tts.requirements)

### Vor- und Nachteile von Transportable Tablespaces
<a name="oracle-migrating-tts.overview.benefits"></a>

Wir empfehlen, Transportable Tablespaces zu verwenden, wenn Sie einen oder mehrere große Tabellenbereiche mit minimalen Ausfallzeiten zu RDS migrieren müssen. Transportable Tablespaces bieten gegenüber der logischen Migration die folgenden Vorteile:
+ Die Ausfallzeiten sind geringer als bei den meisten anderen Oracle-Migrationslösungen.
+ Da die Transportable-Tablespaces-Funktion nur physische Dateien kopiert, werden Datenintegritätsfehler und logische Beschädigungen vermieden, die bei der logischen Migration auftreten können.
+ Es ist keine zusätzliche Lizenz erforderlich.
+ Sie können einen Satz Tabellenbereiche zwischen verschiedenen Plattformen und Endianness-Typen migrieren, z. B. von einer Oracle-Solaris-Plattform nach Linux. Der Transport von Tabellenbereichen zu und von Windows-Servern wird jedoch nicht unterstützt.
**Anmerkung**  
Linux wurde vollständig getestet und wird vollständig unterstützt. Nicht alle UNIX-Varianten wurden getestet.

Wenn Sie Transportable Tablespaces verwenden, können Sie Daten entweder mit Amazon S3 oder mit Amazon EFS transportieren:
+ Wenn Sie EFS verwenden, verbleiben Ihre Backups für die Dauer des Imports im EFS-Dateisystem. Sie können die Dateien anschließend entfernen. Bei dieser Methode müssen Sie keinen EBS-Speicher für Ihre DB-Instance bereitstellen. Aus diesem Grund empfehlen wir, Amazon EFS anstelle von S3 zu verwenden. Weitere Informationen finden Sie unter [Amazon-EFS-Integration](oracle-efs-integration.md).
+ Wenn Sie S3 verwenden, laden Sie RMAN-Backups auf den EBS-Speicher herunter, der an Ihre DB-Instance angehängt ist. Die Dateien verbleiben während des Imports in Ihrem EBS-Speicher. Nach dem Import können Sie diesen Speicherplatz freigeben, der Ihrer DB-Instance zugewiesen bleibt.

Der Hauptnachteil von Transportable Tablespaces besteht darin, dass Sie relativ fortgeschrittene Kenntnisse über Oracle Database benötigen. Weitere Informationen finden Sie unter [Transporting Tablespaces Between Databases](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-F7B2B591-AA88-4D16-8DCF-712763923FFB) im *Oracle-Database-Administratorhandbuch*.

### Einschränkungen für Transportable Tablespaces
<a name="oracle-migrating-tts.limitations"></a>

Oracle-Database-Beschränkungen für Transportable Tablespaces gelten, wenn Sie diese Funktion in RDS für Oracle verwenden. Weitere Informationen finden Sie unter [Limitations on Transportable Tablespaces]( https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-DAB51E42-9BBC-4001-B5CB-0ECDBE128787) und [General Limitations on Transporting Data](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-28800719-6CB9-4A71-95DD-4B61AA603173) im *Oracle-Database-Administratorhandbuch*. Beachten Sie die folgenden zusätzlichen Einschränkungen für Transportable Tablespaces in RDS für Oracle:
+ Weder die Quell- noch die Zieldatenbank können Standard Edition 2 () verwenden. SE2 Es wird nur die Enterprise Edition unterstützt.
+ Sie können eine Oracle-Database-11g-Datenbank nicht als Quelle verwenden. Die plattformübergreifende Funktion für Transportable-RMAN-Tablespaces basiert auf dem RMAN-Transportmechanismus, den Oracle Database 11g nicht unterstützt.
+ Mithilfe von Transportable Tablespaces können Sie keine Daten aus einer DB-Instance von RDS für Oracle migrieren. Mit Transportable Tablespaces können Sie nur Daten zu einer DB-Instance von RDS für Oracle migrieren.
+ Das Windows-Betriebssystem wird nicht unterstützt.
+ Sie können Tabellenbereiche nicht in eine Datenbank auf einer niedrigeren Versionsebene transportieren. Die Zieldatenbank muss sich auf der gleichen oder einer höheren Versionsebene wie die Quelldatenbank befinden. Sie können beispielsweise keine Tabellenbereiche von Oracle Database 21c in Oracle Database 19c transportieren.
+ Sie können keine administrativen Tabellenbereiche wie `SYSTEM` und `SYSAUX` transportieren.
+ Sie können keine Objekte transportieren, die keine Daten sind, wie PL/SQL Pakete, Java-Klassen, Ansichten, Trigger, Sequenzen, Benutzer, Rollen und temporäre Tabellen. Um Nicht-Daten-Objekte zu transportieren, erstellen Sie sie manuell oder verwenden Sie den Data-Pump-Metadaten-Export und -Import. Weitere Informationen finden Sie im Supportdokument auf [My Oracle Support Note 1454872.1](https://support.oracle.com/knowledge/Oracle%20Cloud/1454872_1.html).
+ Sie können keine Tabellenbereiche transportieren, die verschlüsselt sind oder verschlüsselte Spalten verwenden.
+ Wenn Sie Dateien mit Amazon S3 übertragen, beträgt die maximal unterstützte Dateigröße 5 TiB.
+ Wenn die Quelldatenbank Oracle-Optionen wie „Spatial“ verwendet, können Sie keine Tabellenbereiche transportieren, es sei denn, in der Zieldatenbank sind dieselben Optionen konfiguriert.
+ In einer Oracle-Replikatkonfiguration können Sie Tabellenbereiche nicht in eine DB-Instance von RDS für Oracle transportieren. Um dieses Problem zu umgehen, können Sie alle Replikate löschen, die Tabellenbereiche transportieren und die Replikate dann neu erstellen.

### Voraussetzungen für Transportable Tablespaces
<a name="oracle-migrating-tts.requirements"></a>

 Führen Sie als Erstes die folgenden Schritte aus:
+ Lesen Sie die Anforderungen für Transportable Tablespaces, die in den folgenden Support-Dokumenten von Oracle beschrieben werden:
  + [Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 2471245.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2471245.1)
  + [Transportable Tablespace (TTS) Restrictions and Limitations: Details, Reference, and Version Where Applicable (Doc ID 1454872.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1454872.1)
  + [Primary Note for Transportable Tablespaces (TTS) - Common Questions and Issues (Doc ID 1166564.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1166564.1)
+ Planen Sie für eine Endianismuskonvertierung. Wenn Sie die Quellplattform-ID angeben, konvertiert RDS für Oracle den Endianismus automatisch. Informationen zur Suche nach einer Plattform IDs finden Sie unter [Data Guard-Unterstützung für heterogene primäre und physische Standbys in derselben Data Guard-Konfiguration (Doc ID](https://support.oracle.com/epmos/faces/DocumentDisplay?id=413484.1) 413484.1). 
+ Stellen Sie sicher, dass die Transportable-Tablespace-Funktion auf Ihrer Ziel-DB-Instance aktiviert ist. Die Funktion ist nur aktiviert, wenn Sie beim Ausführen der folgenden Abfrage keine `ORA-20304`-Fehlermeldung erhalten:

  ```
  SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);
  ```

  Wenn die Transportable-Tablespace-Funktion nicht aktiviert ist, starten Sie Ihre DB-Instance neu. Weitere Informationen finden Sie unter [Eine DB-Instance DB-Cluster neu starten](USER_RebootInstance.md).
+ Vergewissern Sie sich, dass die Zeitzonendatei in den Quell- und Zieldatenbanken identisch ist.
+ Überprüfen Sie, ob die Datenbankzeichensätze der Quell- und Zieldatenbanken die beiden folgenden Anforderungen erfüllen:
  + Die Zeichensätze sind identisch.
  + Die Zeichensätze sind kompatibel. Eine Liste der Kompatibilitätsanforderungen finden Sie in der Oracle-Database-Dokumentation unter [General Limitations on Transporting Data](https://docs.oracle.com/en/database/oracle/oracle-database/19/spmdu/general-limitations-on-transporting-data.html#GUID-28800719-6CB9-4A71-95DD-4B61AA603173).
+ Wenn Sie planen, Dateien mit Amazon S3 zu übertragen, gehen Sie wie folgt vor:
  + 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 AWS Region wie Ihre DB-Instance befindet. Weitere Anleitungen finden Sie unter [Erstellen eines Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) im *Amazon Simple Storage Service Handbuch "Erste Schritte"*.
  + Bereiten Sie den Amazon-S3-Bucket auf die Amazon-RDS-Integration vor, indem Sie die Anleitungen unter [Konfigurieren von IAM-Berechtigungen für die Integration von RDS für Oracle in Amazon S3](oracle-s3-integration.preparing.md) befolgen.
+ Wenn Sie planen, Dateien mit Amazon EFS zu übertragen, stellen Sie sicher, dass Sie EFS gemäß den Anweisungen in [Amazon-EFS-Integration](oracle-efs-integration.md) konfiguriert haben.
+ Wir empfehlen dringend, automatische Backups in Ihrer Ziel-DB-Instance zu aktivieren. Da der [Schritt zum Importieren von Metadaten](#oracle-migrating-tts.transport.import-dmp) potenziell fehlschlagen kann, ist es wichtig, dass Sie Ihre DB-Instance in den Zustand vor dem Import zurückversetzen können, sodass Sie Ihre Tabellenbereiche nicht erneut sichern, übertragen und importieren müssen.

## Phase 1: Einrichten Ihres Quell-Hosts
<a name="oracle-migrating-tts.setup-phase"></a>

In diesem Schritt kopieren Sie die von My Oracle Support bereitgestellten Transportable-Tablespaces-Skripts und richten die erforderlichen Konfigurationsdateien ein. In den folgenden Schritten führt der *Quell-Host* die Datenbank aus, die die Tabellenbereiche enthält, die zu Ihrer *Ziel-Instance* transportiert werden sollen.

**So richten Sie Ihren Quell-Host ein**

1. Melden Sie sich als Eigentümer Ihres Oracle-Basisverzeichnisses bei Ihrem Quell-Host an.

1. Stellen Sie sicher, dass Ihre Umgebungsvariablen `ORACLE_HOME` und `ORACLE_SID` auf Ihre Quelldatenbank verweisen.

1. Melden Sie sich als Administrator bei Ihrer Datenbank an und stellen Sie sicher, dass die Zeitzonenversion, der DB-Zeichensatz und der nationale Zeichensatz mit denen in Ihrer Zieldatenbank übereinstimmen.

   ```
   SELECT * FROM V$TIMEZONE_FILE;
   SELECT * FROM NLS_DATABASE_PARAMETERS 
     WHERE PARAMETER IN ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
   ```

1. Richten Sie das Transportable-Tablespace-Dienstprogramm wie im [Oracle-Support-Hinweis 2471245.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2471245.1) beschrieben ein. 

   Das Setup beinhaltet die Bearbeitung der `xtt.properties`-Datei auf Ihrem Quell-Host. Die folgende `xtt.properties`-Beispieldatei spezifiziert Backups von drei Tabellenbereichen im `/dsk1/backups`-Verzeichnis. Dies sind die Tabellenbereiche, die Sie zu Ihrer Ziel-DB-Instance transportieren möchten. Es gibt auch die Quell-Plattform-ID an, um den Endianismus automatisch zu konvertieren.
**Anmerkung**  
Informationen zu einer gültigen Plattform IDs finden Sie unter [Data Guard-Unterstützung für heterogene primäre und physische Standbys in derselben Data Guard-Konfiguration (Doc ID](https://support.oracle.com/epmos/faces/DocumentDisplay?id=413484.1) 413484.1). 

   ```
   #linux system 
   platformid=13
   #list of tablespaces to transport
   tablespaces=TBS1,TBS2,TBS3
   #location where backup will be generated
   src_scratch_location=/dsk1/backups
   #RMAN command for performing backup
   usermantransport=1
   ```

## Phase 2: Vorbereiten des vollständigen Tabellenbereich-Backups
<a name="oracle-migrating-tts.initial-br-phase"></a>

In dieser Phase sichern Sie Ihre Tabellenbereiche zum ersten Mal, übertragen die Backups auf Ihren Ziel-Host und stellen sie dann mithilfe der Prozedur `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` wieder her. Wenn diese Phase abgeschlossen ist, befinden sich die ersten Tabellenbereich-Backups auf Ihrer Ziel-DB-Instance und können mit inkrementellen Backups aktualisiert werden.

**Topics**
+ [Schritt 1: Sichern der Tabellenbereiche auf Ihrem Quell-Host](#oracle-migrating-tts.backup-full)
+ [Schritt 2: Übertragen der Backup-Dateien auf Ihre Ziel-DB-Instance](#oracle-migrating-tts.transfer-full)
+ [Schritt 3: Importieren der Tabellenbereiche in Ihre Ziel-DB-Instance](#oracle-migrating-tts.initial-tts-import)

### Schritt 1: Sichern der Tabellenbereiche auf Ihrem Quell-Host
<a name="oracle-migrating-tts.backup-full"></a>

In diesem Schritt verwenden Sie das `xttdriver.pl`-Skript, um ein vollständiges Backup Ihrer Tabellenbereiche zu erstellen. Die Ausgabe von `xttdriver.pl` wird in der Umgebungsvariablen `TMPDIR` gespeichert.

**So sichern Sie Ihre Tabellenbereiche**

1. Wenn sich Ihre Tablespaces im schreibgeschützten Modus befinden, melden Sie sich als Benutzer mit der entsprechenden Berechtigung bei Ihrer Quelldatenbank an und versetzen Sie Ihre Tablespaces in den Modus. `ALTER TABLESPACE` read/write Andernfalls überspringen Sie diesen Schritt und gehen Sie direkt zum nächsten.

   Das folgende Beispiel versetzt`tbs1`, und in den Modus. `tbs2` `tbs3` read/write 

   ```
   ALTER TABLESPACE tbs1 READ WRITE;
   ALTER TABLESPACE tbs2 READ WRITE;
   ALTER TABLESPACE tbs3 READ WRITE;
   ```

1. Sichern Sie Ihre Tabellenbereiche mithilfe des `xttdriver.pl`-Skripts. Optional können Sie `--debug` angeben, damit das Skript im Debug-Modus ausgeführt wird.

   ```
   export TMPDIR=location_of_log_files
   cd location_of_xttdriver.pl
   $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup
   ```

### Schritt 2: Übertragen der Backup-Dateien auf Ihre Ziel-DB-Instance
<a name="oracle-migrating-tts.transfer-full"></a>

In diesem Schritt kopieren Sie die Sicherungs- und Konfigurationsdateien von Ihrem Scratch-Speicherort in Ihre Ziel-DB-Instance. Wählen Sie eine der folgenden Optionen:
+ Wenn Quell- und Ziel-Host ein Amazon-EFS-Dateisystem gemeinsam nutzen, verwenden Sie ein Betriebssystem-Dienstprogramm wie `cp`, um Ihre Sicherungsdateien und die `res.txt`-Datei von Ihrem Scratch-Speicherort in ein freigegebenes Verzeichnis zu kopieren. Fahren Sie anschließend fort mit der unter [Schritt 3: Importieren der Tabellenbereiche in Ihre Ziel-DB-Instance](#oracle-migrating-tts.initial-tts-import) beschriebenen Anleitung.
+ Wenn Sie Ihre Backups in einem Amazon-S3-Bucket bereitstellen müssen, führen Sie die folgenden Schritte aus.

![\[Übertragen Sie die Dateien entweder mit Amazon EFS oder mit Amazon S3.\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/oracle-tts.png)


#### Schritt 2.2: Hochladen der Backups in Ihren Amazon-S3-Bucket
<a name="oracle-migrating-tts.upload-full"></a>

Laden Sie Ihre Backups und die `res.txt`-Datei aus Ihrem Scratch-Verzeichnis in Ihren Amazon-S3-Bucket hoch. Weitere Informationen finden Sie unter [Hochladen von Objekten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) im *Benutzerhandbuch von Amazon Simple Storage Service*.

#### Schritt 2.3: Herunterladen der Backups aus Ihrem Amazon-S3-Bucket in Ihre Ziel-DB-Instance
<a name="oracle-migrating-tts.download-full"></a>

In diesem Schritt verwenden Sie die Prozedur `rdsadmin.rdsadmin_s3_tasks.download_from_s3`, um Ihre Backups auf Ihre DB-Instance von RDS für Oracle herunterzuladen.

**So laden Sie Ihre Backups aus Ihrem Amazon-S3-Bucket herunter**

1. Starten Sie SQL\$1Plus oder Oracle SQL Developer und melden Sie sich bei Ihrer DB-Instance von RDS für Oracle an.

1. Laden Sie die Backups aus dem Amazon-S3-Bucket auf Ihre Ziel-DB-Instance herunter, indem Sie die Amazon-RDS-Prozedur `rdsadmin.rdsadmin_s3_tasks.download_from_s3` verwenden. Das folgende Beispiel lädt alle Dateien von einem Amazon S3-Bucket mit dem Namen `amzn-s3-demo-bucket` in das Verzeichnis `DATA_PUMP_DIR` herunter.

   ```
   EXEC UTL_FILE.FREMOVE ('DATA_PUMP_DIR', 'res.txt');
   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 einem `VARCHAR2`-Datentyp zurück. Weitere Informationen finden Sie unter [Hochladen von Dateien aus einem Amazon S3-Bucket zu einer Oracle-DB-Instance](oracle-s3-integration.using.md#oracle-s3-integration.using.download).

### Schritt 3: Importieren der Tabellenbereiche in Ihre Ziel-DB-Instance
<a name="oracle-migrating-tts.initial-tts-import"></a>

Verwenden Sie die Prozedur `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces`, um Ihre Tabellenbereiche auf Ihrer Ziel-DB-Instance wiederherzustellen. Diese Prozedur konvertiert die Datendateien automatisch in das richtige Endian-Format.

Wenn Sie den Import von einer anderen Plattform als Linux durchführen, geben Sie beim Aufruf von `import_xtts_tablespaces` die Quellplattform mithilfe des Parameters `p_platform_id` an. Überprüfen Sie, ob die von Ihnen angegebene Plattform-ID mit der in der Datei `xtt.properties` übereinstimmt, die Sie in [Schritt 2: Exportieren der Tabellenbereich-Metadaten auf Ihren Quell-Host](#oracle-migrating-tts.transport.export) angegeben haben.

**Importieren der Tabellenbereiche in Ihre Ziel-DB-Instance**

1. Starten Sie einen Oracle-SQL-Client und melden Sie sich als Hauptbenutzer bei Ihrer DB-Instance von RDS für Oracle an.

1. Führen Sie die Prozedur `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` aus und geben Sie dabei die zu importierenden Tabellenbereiche und das Verzeichnis mit den Backups an.

   Im folgenden Beispiel werden die Tablespaces *TBS1**TBS2*, und *TBS3* aus dem Verzeichnis importiert. *DATA\$1PUMP\$1DIR* Die Quellplattform ist ein AIX-basiertes System (64-Bit) mit der Plattform-ID `6`. Sie können die Plattform finden, IDs indem Sie sie abfragen. `V$TRANSPORTABLE_PLATFORM`

   ```
   VAR task_id CLOB
   
   BEGIN
     :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces(
           'TBS1,TBS2,TBS3',
           'DATA_PUMP_DIR',
           p_platform_id => 6);
   END;
   /
   
   PRINT task_id
   ```

1. (Optional) Überwachen Sie den Fortschritt, indem Sie die Tabelle `rdsadmin.rds_xtts_operation_info` abfragen. Die Spalte `xtts_operation_state` enthält den Wert `EXECUTING`, `COMPLETED` oder `FAILED`.

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```
**Anmerkung**  
Für lang andauernde Operationen können Sie auch `V$SESSION_LONGOPS`, `V$RMAN_STATUS` und `V$RMAN_OUTPUT` abfragen.

1. Sehen Sie sich das Protokoll des abgeschlossenen Imports an, indem Sie die Task-ID aus dem vorherigen Schritt verwenden.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||'&task_id'||'.log'));
   ```

   Stellen Sie sicher, dass der Import erfolgreich abgeschlossen wurde, bevor Sie mit dem nächsten Schritt fortfahren.

## Phase 3: Erstellen und Übertragen inkrementeller Backups
<a name="oracle-migrating-tts.roll-forward-phase"></a>

In dieser Phase erstellen und übertragen Sie regelmäßig inkrementelle Backups, während die Quelldatenbank aktiv ist. Mit dieser Methode wird die Größe Ihres endgültigen Tabellenbereich-Backups reduziert. Wenn Sie mehrere inkrementelle Backups erstellen, müssen Sie die `res.txt`-Datei nach dem letzten inkrementellen Backup kopieren, bevor Sie es auf die Ziel-Instance anwenden können.

Die Schritte sind dieselben wie in [Phase 2: Vorbereiten des vollständigen Tabellenbereich-Backups](#oracle-migrating-tts.initial-br-phase), außer dass der Importschritt optional ist.

## Phase 4: Transportieren der Tabellenbereiche
<a name="oracle-migrating-tts.final-br-phase"></a>

In dieser Phase sichern Sie Ihre schreibgeschützten Tabellenbereiche und exportieren Data-Pump-Metadaten, übertragen diese Dateien auf Ihren Ziel-Host und importieren sowohl die Tabellenbereiche als auch die Metadaten.

**Topics**
+ [Schritt 1: Sichern Ihrer schreibgeschützten Tabellenbereiche](#oracle-migrating-tts.final-backup)
+ [Schritt 2: Exportieren der Tabellenbereich-Metadaten auf Ihren Quell-Host](#oracle-migrating-tts.transport.export)
+ [Schritt 3: (nur Amazon S3) Übertragen der Backup- und Exportdateien auf Ihre Ziel-DB-Instance](#oracle-migrating-tts.transport)
+ [Schritt 4: Importieren der Tabellenbereiche in Ihre Ziel-DB-Instance](#oracle-migrating-tts.restore-full)
+ [Schritt 5: Importieren der Tabellenbereich-Metadaten in Ihre Ziel-DB-Instance](#oracle-migrating-tts.transport.import-dmp)

### Schritt 1: Sichern Ihrer schreibgeschützten Tabellenbereiche
<a name="oracle-migrating-tts.final-backup"></a>

Dieser Schritt ist identisch mit [Schritt 1: Sichern der Tabellenbereiche auf Ihrem Quell-Host](#oracle-migrating-tts.backup-full), mit einem wesentlichen Unterschied: Sie versetzen Ihre Tabellenbereiche in den schreibgeschützten Modus, bevor Sie sie zum letzten Mal sichern.

Im folgenden Beispiel werden `tbs1`, `tbs2` und `tbs3` in den schreibgeschützten Modus versetzt.

```
ALTER TABLESPACE tbs1 READ ONLY;
ALTER TABLESPACE tbs2 READ ONLY;
ALTER TABLESPACE tbs3 READ ONLY;
```

### Schritt 2: Exportieren der Tabellenbereich-Metadaten auf Ihren Quell-Host
<a name="oracle-migrating-tts.transport.export"></a>

Exportieren Sie Ihre Tabellenbereich-Metadaten, indem Sie das Dienstprogramm `expdb` auf Ihrem Quell-Host ausführen. Im folgenden Beispiel werden Tablespaces*TBS1*, und exportiert*TBS2*, um die Datei im *TBS3* Verzeichnis abzulegen. *xttdump.dmp* *DATA\$1PUMP\$1DIR*

```
expdp username/pwd \
dumpfile=xttdump.dmp \
directory=DATA_PUMP_DIR \
statistics=NONE \
transport_tablespaces=TBS1,TBS2,TBS3 \
transport_full_check=y \
logfile=tts_export.log
```

Wenn *DATA\$1PUMP\$1DIR* es sich um ein gemeinsam genutztes Verzeichnis in Amazon EFS handelt, fahren Sie mit fort[Schritt 4: Importieren der Tabellenbereiche in Ihre Ziel-DB-Instance](#oracle-migrating-tts.restore-full).

### Schritt 3: (nur Amazon S3) Übertragen der Backup- und Exportdateien auf Ihre Ziel-DB-Instance
<a name="oracle-migrating-tts.transport"></a>

Wenn Sie Amazon S3 verwenden, um Ihre Tabellenbereich-Backups und die Data-Pump-Exportdatei bereitzustellen, führen Sie die folgenden Schritte aus.

#### Schritt 3.1: Hochladen der Backups und der Dump-Datei von Ihrem Quell-Host in Ihren Amazon-S3-Bucket
<a name="oracle-migrating-tts.transport.upload-dmp"></a>

Laden Sie Ihre Backup- und Dump-Dateien von Ihrem Quell-Host in Ihren Amazon-S3-Bucket hoch. Weitere Informationen finden Sie unter [Hochladen von Objekten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) im *Benutzerhandbuch von Amazon Simple Storage Service*.

#### Schritt 3.2: Herunterladen der Backups und der Dump-Datei aus Ihrem Amazon-S3-Bucket in Ihre DB-Instance
<a name="oracle-migrating-tts.transport.download-dmp"></a>

In diesem Schritt verwenden Sie die Prozedur `rdsadmin.rdsadmin_s3_tasks.download_from_s3`, um Ihre Backups und die Dump-Datei auf Ihre DB-Instance von RDS für Oracle herunterzuladen. Führen Sie die Schritte unter [Schritt 2.3: Herunterladen der Backups aus Ihrem Amazon-S3-Bucket in Ihre Ziel-DB-Instance](#oracle-migrating-tts.download-full) aus.

### Schritt 4: Importieren der Tabellenbereiche in Ihre Ziel-DB-Instance
<a name="oracle-migrating-tts.restore-full"></a>

Verwenden Sie die Prozedur `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces`, um die Tabellenbereiche wiederherzustellen. Informationen zu Syntax und Semantik dieses Verfahrens finden Sie unter [Importieren transportabler Tabellenbereiche in Ihre DB-Instance](rdsadmin_transport_util_import_xtts_tablespaces.md).

**Wichtig**  
Nachdem Sie Ihren endgültigen Tabellenbereichimport abgeschlossen haben, ist der nächste Schritt das [Importieren der Metadaten von Oracle Data Pump](#oracle-migrating-tts.transport.export). Wenn der Import fehlschlägt, ist es wichtig, dass Sie Ihre DB-Instance in den Zustand vor dem Fehler zurückversetzen. Daher empfehlen wir Ihnen, den Anweisungen unter [Erstellen eines DB-Snapshots für eine DB-Instance mit Single-AZ für Amazon RDS](USER_CreateSnapshot.md) zu folgen und einen DB-Snapshot Ihrer DB-Instance zu erstellen. Der Snapshot enthält alle importierten Tabellenbereiche. Wenn der Import fehlschlägt, müssen Sie den Backup- und Importvorgang nicht wiederholen.   
Wenn für Ihre Ziel-DB-Instance automatische Backups aktiviert sind und Amazon RDS nicht erkennt, dass vor dem Import der Metadaten ein gültiger Snapshot initiiert wurde, versucht RDS, einen Snapshot zu erstellen. Abhängig von Ihrer Instance-Aktivität kann dieser Snapshot erfolgreich erstellt werden oder auch nicht. Wenn kein gültiger Snapshot erkannt wird oder ein Snapshot nicht initiiert werden kann, wird der Metadatenimport mit Fehlern beendet.

**Importieren der Tabellenbereiche in Ihre Ziel-DB-Instance**

1. Starten Sie einen Oracle-SQL-Client und melden Sie sich als Hauptbenutzer bei Ihrer DB-Instance von RDS für Oracle an.

1. Führen Sie die Prozedur `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` aus und geben Sie dabei die zu importierenden Tabellenbereiche und das Verzeichnis mit den Backups an.

   Im folgenden Beispiel werden die Tablespaces *TBS1**TBS2*, und *TBS3* aus dem Verzeichnis importiert. *DATA\$1PUMP\$1DIR*

   ```
   BEGIN
     :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces('TBS1,TBS2,TBS3','DATA_PUMP_DIR');
   END;
   /
   PRINT task_id
   ```

1. (Optional) Überwachen Sie den Fortschritt, indem Sie die Tabelle `rdsadmin.rds_xtts_operation_info` abfragen. Die Spalte `xtts_operation_state` enthält den Wert `EXECUTING`, `COMPLETED` oder `FAILED`.

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```
**Anmerkung**  
Für lang andauernde Operationen können Sie auch `V$SESSION_LONGOPS`, `V$RMAN_STATUS` und `V$RMAN_OUTPUT` abfragen.

1. Sehen Sie sich das Protokoll des abgeschlossenen Imports an, indem Sie die Task-ID aus dem vorherigen Schritt verwenden.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||'&task_id'||'.log'));
   ```

   Stellen Sie sicher, dass der Import erfolgreich abgeschlossen wurde, bevor Sie mit dem nächsten Schritt fortfahren.

1. Folgen Sie den Anweisungen unter [Erstellen eines DB-Snapshots für eine DB-Instance mit Single-AZ für Amazon RDS](USER_CreateSnapshot.md) und erstellen Sie einen manuellen DB-Snapshot.

### Schritt 5: Importieren der Tabellenbereich-Metadaten in Ihre Ziel-DB-Instance
<a name="oracle-migrating-tts.transport.import-dmp"></a>

In diesem Schritt importieren Sie die Transportable-Tablespace-Metadaten mithilfe der Prozedur `rdsadmin.rdsadmin_transport_util.import_xtts_metadata` in Ihre DB-Instance von RDS für Oracle. Informationen zu Syntax und Semantik dieses Verfahrens finden Sie unter [Importieren von Metadaten transportabler Tabellenbereiche in Ihre DB-Instance](rdsadmin_transport_util_import_xtts_metadata.md). Während des Vorgangs wird der Status des Imports in der Tabelle `rdsadmin.rds_xtts_operation_info` angezeigt.

**Wichtig**  
Bevor Sie Metadaten importieren, empfehlen wir Ihnen dringend, zu überprüfen, ob nach dem Import Ihrer Tabellenbereiche ein DB-Snapshot erfolgreich erstellt wurde. Wenn der Importschritt fehlschlägt, stellen Sie Ihre DB-Instance wieder her, beheben Sie die Importfehler und versuchen Sie dann erneut, den Import durchzuführen.

**Importieren der Data-Pump-Metadaten in Ihre DB-Instance von RDS für Oracle**

1. Starten Sie Ihren Oracle-SQL-Client und melden Sie sich als Hauptbenutzer bei Ihrer Ziel-DB-Instance an.

1. Erstellen Sie die Benutzer, denen Schemas in Ihren transportierten Tabellenbereichen gehören, falls diese Benutzer noch nicht existieren.

   ```
   CREATE USER tbs_owner IDENTIFIED BY password;
   ```

1. Importieren Sie die Metadaten und geben Sie dabei den Namen der Dump-Datei und deren Verzeichnispfad an.

   ```
   BEGIN
     rdsadmin.rdsadmin_transport_util.import_xtts_metadata('xttdump.dmp','DATA_PUMP_DIR');
   END;
   /
   ```

1. (Optional) Fragen Sie die Transportable-Tablespace-Verlaufstabelle ab, um den Status des Metadatenimports zu sehen.

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```

   Wenn der Vorgang abgeschlossen ist, befinden sich Ihre Tabellenbereiche im schreibgeschützten Modus.

1. (Optional) Sehen Sie sich die Protokolldatei an.

   Das folgende Beispiel listet den Inhalt des BDUMP-Verzeichnisses auf und fragt dann das Importprotokoll ab.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'BDUMP'));
   
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file(
     p_directory => 'BDUMP',
     p_filename => 'rds-xtts-import_xtts_metadata-2023-05-22.01-52-35.560858000.log'));
   ```

## Phase 5: Validieren der transportierten Tabellenbereiche
<a name="oracle-migrating-tts.validate"></a>

In diesem optionalen Schritt validieren Sie Ihre transportierten Tablespaces mithilfe der Prozedur `rdsadmin.rdsadmin_rman_util.validate_tablespace` und versetzen Ihre Tablespaces dann in den Modus. read/write 

**So validieren Sie die transportierten Daten**

1. Starten Sie SQL\$1Plus oder SQL Developer und melden Sie sich als Hauptbenutzer bei Ihrer Ziel-DB-Instance an.

1. Validieren Sie die Tabellenbereiche mithilfe der Prozedur `rdsadmin.rdsadmin_rman_util.validate_tablespace`.

   ```
   SET SERVEROUTPUT ON
   BEGIN
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS1',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS2',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS3',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
   END;
   /
   ```

1. Versetzen Sie Ihre Tablespaces in den Modus. read/write 

   ```
   ALTER TABLESPACE TBS1 READ WRITE;
   ALTER TABLESPACE TBS2 READ WRITE;
   ALTER TABLESPACE TBS3 READ WRITE;
   ```

## Phase 6: Bereinigen übrig gebliebener Dateien
<a name="oracle-migrating-tts.cleanup"></a>

In diesem optionalen Schritt entfernen Sie alle nicht benötigten Dateien. Verwenden Sie das Verfahren `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files`, um Datendateien aufzulisten, die nach einem Tablespace-Import verwaist waren, und dann das Verfahren `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files`, um sie zu löschen. Informationen zu Syntax und Semantik dieser Verfahren finden Sie unter [Auflisten verwaister Dateien nach einem Tabellenbereichimport](rdsadmin_transport_util_list_xtts_orphan_files.md) und [Löschen verwaister Dateien nach einem Tabellenbereichimport](rdsadmin_transport_util_cleanup_incomplete_xtts_import.md).

**So bereinigen Sie übrig gebliebene Dateien**

1. Entfernen Sie alte Backups *DATA\$1PUMP\$1DIR* wie folgt:

   1. Listen Sie die Backup-Dateien auf, indem Sie den Befehl `rdsadmin.rdsadmin_file_util.listdir` ausführen.

      ```
      SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'DATA_PUMP_DIR'));
      ```

   1. Entfernen Sie die Backups nacheinander, indem Sie `UTL_FILE.FREMOVE` aufrufen.

      ```
      EXEC UTL_FILE.FREMOVE ('DATA_PUMP_DIR', 'backup_filename');
      ```

1. Wenn Sie Tabellenbereiche, aber keine Metadaten für diese Tabellenbereiche importiert haben, können Sie die verwaisten Datendateien wie folgt löschen:

   1. Listen Sie die verwaisten Datendateien auf, die Sie löschen müssen. Das folgende Beispiel führt die Prozedur `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` aus.

      ```
      SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);
      
      FILENAME       FILESIZE
      -------------- ---------
      datafile_7.dbf 104865792
      datafile_8.dbf 104865792
      ```

   1. Löschen Sie die verwaisten Dateien, indem Sie die Prozedur `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import` ausführen.

      ```
      BEGIN
        rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import('DATA_PUMP_DIR');
      END;
      /
      ```

      Der Bereinigungsvorgang generiert eine Protokolldatei, die das Namensformat `rds-xtts-delete_xtts_orphaned_files-YYYY-MM-DD.HH24-MI-SS.FF.log` im `BDUMP`-Verzeichnis verwendet.

   1. Lesen Sie die im vorherigen Schritt generierte Protokolldatei. Das folgende Beispiel zeigt das Protokoll `rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log`.

      ```
      SELECT * 
      FROM TABLE(rdsadmin.rds_file_util.read_text_file(
             p_directory => 'BDUMP',
             p_filename  => 'rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log'));
      
      TEXT
      --------------------------------------------------------------------------------
      orphan transported datafile datafile_7.dbf deleted.
      orphan transported datafile datafile_8.dbf deleted.
      ```

1. Wenn Sie Tabellenbereiche sowie Metadaten für diese Tabellenbereiche importiert haben, aber auf Kompatibilitätsfehler oder andere Probleme mit Oracle Data Pump gestoßen sind, bereinigen Sie die teilweise transportierten Datendateien wie folgt:

   1. Listen Sie die Tabellenbereiche auf, die teilweise transportierte Datendateien enthalten, indem Sie `DBA_TABLESPACES` abfragen.

      ```
      SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE PLUGGED_IN='YES';
      
      TABLESPACE_NAME
      --------------------------------------------------------------------------------
      TBS_3
      ```

   1. Löschen Sie die Tabellenbereiche und die teilweise transportierten Datendateien.

      ```
      DROP TABLESPACE TBS_3 INCLUDING CONTENTS AND DATAFILES;
      ```

# Importieren mit Oracle Data Pump
<a name="Oracle.Procedural.Importing.DataPump"></a>

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. Es ist ein langfristiger Ersatz für die Export/Import Oracle-Dienstprogramme. Oracle Data Pump ist die empfohlene Methode zum Verschieben großer Datenmengen von einer Oracle-Datenbank in eine Amazon-RDS-DB-Instance.

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](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump.html#GUID-501A9908-BCC5-434C-8853-9A6096766B5A).

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 [So wird Oracle Instant Client verwendet, um den Import oder Export von Data Pump für Amazon RDS für Oracle-DB-Instances auszuführen](https://aws.amazon.com/premiumsupport/knowledge-center/rds-oracle-instant-client-datapump/)

**Topics**
+ [Übersicht über Oracle Data Pump](#Oracle.Procedural.Importing.DataPump.Overview)
+ [Importieren von Daten mit Oracle Data Pump und einem Amazon S3-Bucket](#Oracle.Procedural.Importing.DataPump.S3)
+ [Importieren von Daten mit Oracle Data Pump und einer Datenbankverbindung](#Oracle.Procedural.Importing.DataPump.DBLink)

## Übersicht über Oracle Data Pump
<a name="Oracle.Procedural.Importing.DataPump.Overview"></a>

Oracle Data Pump besteht aus den folgenden Komponenten:
+ Befehlszeilenclients `expdp` und `impdp`
+ Das `DBMS_DATAPUMP` PL/SQL -Paket
+ Das `DBMS_METADATA` PL/SQL -Paket

Sie können Oracle Data Pump für die folgenden Szenarien verwenden:
+ Importieren von Daten aus einer Oracle Datenbank, entweder On-Premises oder mit einer Amazon-EC2-Instance, zu einer Oracle-DB-Instance.
+ Importieren von Daten aus einer DB-Instance von RDS für Oracle in eine Oracle-Datenbank, entweder On-Premises oder mit einer Amazon-EC2-Instance.
+ Importieren von Daten zwischen DB-Instances von RDS für Oracle, beispielsweise zum Migrieren von Daten von EC2-Classic nach VPC.

Sie können Oracle Data Pump-Dienstprogramme unter [Oracle Database Software Downloads](http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html) auf der Oracle Technology Network-Website herunterladen. Überlegungen zur Kompatibilität bei der Migration zwischen Versionen der Oracle-Datenbank finden Sie in der [Oracle-Database-Dokumentation](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-BAA3B679-A758-4D55-9820-432D9EB83C68).

### Oracle Data-Pump-Workflow
<a name="Oracle.Procedural.Importing.DataPump.Overview.how-it-works"></a>

In der Regel verwenden Sie Oracle Data Pump in den folgenden Phasen:

1. Exportieren Sie Ihre Daten in eine Dump-Datei in der Quelldatenbank.

1. Laden Sie Ihre Dump-Datei in Ihre Ziel-DB-Instance hoch. Sie können die Übertragung mithilfe eines Amazon-S3-Buckets oder über eine Datenbankverbindung zwischen zwei Datenbanken vornehmen.

1. Importieren Sie die Daten aus Ihrer Dump-Datei in Ihre Instance von RDS für Oracle DB.

### Bewährte Methoden für Oracle Data Pump
<a name="Oracle.Procedural.Importing.DataPump.Overview.best-practices"></a>

Wenn Sie Oracle Data Pump zum Importieren von Daten in eine Oracle-Instance verwenden, empfehlen wir die folgenden bewährten Methoden:
+ Führen Sie Importe im Modus `schema` oder `table` 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.

  Weil RDS für Oracle keinen Zugriff auf `SYS` oder `SYSDBA` für administrative Benutzer gewährt, können diese Aktionen das Oracle-Datenwörterbuch beschädigen und die Stabilität Ihrer Datenbank gefährden.
+ Beim Laden großer Datenmengen gehen Sie folgendermaßen vor:

  1. Übertragen Sie die Dump-Datei an die Ziel-DB-Instance von RDS für Oracle.

  1. Erstellen Sie einen DB-Snapshot Ihrer Instance.

  1. 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`, oder `TRANSPORT_FULL_CHECK` erstellt wurden. DB-Instances von RDS für Oracle unterstützen das Importieren dieser Dump-Dateien nicht.
+ Importieren Sie keine Speicherabbilddateien, die Oracle Scheduler-Objekte in `SYS`, `SYSTEM`, `RDSADMIN`, `RDSSEC` und `RDS_DATAGUARD`enthalten und zu den folgenden Kategorien gehören:
  + Jobs
  + Programme
  + Zeitpläne
  + Ketten
  + Regeln
  + Auswertungskontexte
  + Regelsätze

  RDS für Oracle -DB-Instances unterstützen das Importieren dieser Dump-Dateien nicht. 
+ 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ätzlichen `METADATA_FILTER` vor dem `DBMS_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 dargestellte `exclude`-Anweisung enthält. Dann benutze es `PARFILE=parameter_file` mit deinem `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
<a name="Oracle.Procedural.Importing.DataPump.S3"></a>

Der folgende Importvorgang verwendet Oracle Data Pump und einen Amazon S3-Bucket. Die Schritte sind wie folgt:

1. Exportieren Sie Daten aus der Quelldatenbank mit dem Oracle [DBMS\$1DATAPUMP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html)-Paket.

1. Platzieren Sie die Dump-Datei in einem Amazon-S3-Bucket.

1. Laden Sie die Dump-Datei aus dem Amazon-S3-Bucket in das Verzeichnis `DATA_PUMP_DIR` auf der Ziel-DB-Instance von RDS für Oracle herunter. 

1. Importieren Sie die Daten aus der kopierten Dump-Datei in die DB-Instance von RDS für Oracle mithilfe des `DBMS_DATAPUMP`-Pakets.

**Topics**
+ [Anforderungen zum Importieren von Daten mit Oracle Data Pump und einem Amazon-S3-Bucket](#Oracle.Procedural.Importing.DataPumpS3.requirements)
+ [Schritt 1: Erteilen von Berechtigungen für den Datenbankbenutzer auf der Ziel-DB-Instance von RDS für Oracle](#Oracle.Procedural.Importing.DataPumpS3.Step1)
+ [Schritt 2: Exportieren von Daten in eine Dump-Datei mit DBMS\$1DATAPUMP](#Oracle.Procedural.Importing.DataPumpS3.Step2)
+ [Schritt 3: Hochladen der Dumpdatei in Ihren Amazon S3-Bucket](#Oracle.Procedural.Importing.DataPumpS3.Step3)
+ [Schritt 4: Herunterladen der Dump-Datei aus Ihrem Amazon-S3-Bucket in Ihre DB-Instance.](#Oracle.Procedural.Importing.DataPumpS3.Step4)
+ [Schritt 5: Importieren Sie Ihre Dump-Datei mit DBMS\$1DATAPUMP in Ihre Ziel-DB-Instance](#Oracle.Procedural.Importing.DataPumpS3.Step5)
+ [Schritt 6: Bereinigen](#Oracle.Procedural.Importing.DataPumpS3.Step6)

### Anforderungen zum Importieren von Daten mit Oracle Data Pump und einem Amazon-S3-Bucket
<a name="Oracle.Procedural.Importing.DataPumpS3.requirements"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html).
**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-Bucket auf die Amazon-RDS-Integration vorbereiten, indem Sie die Anleitungen unter befolge [Konfigurieren von IAM-Berechtigungen für die Integration von RDS für Oracle in Amazon S3](oracle-s3-integration.preparing.md).
+ 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. Zum Entfernen importierter Dump-Dateien verwenden Sie [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF), das auf der Oracle-Website zu finden ist. 

### Schritt 1: Erteilen von Berechtigungen für den Datenbankbenutzer auf der Ziel-DB-Instance von RDS für Oracle
<a name="Oracle.Procedural.Importing.DataPumpS3.Step1"></a>

In diesem Schritt erstellen Sie Schemas, in die Sie Daten importieren möchten, und erteilen den Benutzern die erforderlichen Berechtigungen.

**So erstellen Sie Benutzer und erteilen die erforderlichen Berechtigungen für die Ziel-Instance von RDS für Oracle**

1. Verwenden Sie SQL\$1Plus oder Oracle SQL Developer, um sich als Hauptbenutzer bei der DB-Instance von RDS für Oracle anzumelden, in die die Daten importiert werden sollen. Weitere Information über das Verbinden mit der DB-Instance finden Sie unter [Herstellen der Verbindung zu Ihrer Oracle-DB-Instance](USER_ConnectToOracleInstance.md).

1. Erstellen Sie die erforderlichen Tabellenräume, bevor Sie Daten importieren. Weitere Informationen finden Sie unter [Tablespaces in RDS für Oracle erstellen und deren Größe anpassen](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles).

1. 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 `schema_1` durch den Namen Ihres Schemas in diesem Schritt und in den folgenden Schritten.

   ```
   CREATE USER schema_1 IDENTIFIED BY my_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 die `RESOURCE`-Rolle. Je nach den Datenbankobjekten, die Sie importieren, benötigen Sie möglicherweise zusätzliche Berechtigungen und Rollen.

### Schritt 2: Exportieren von Daten in eine Dump-Datei mit DBMS\$1DATAPUMP
<a name="Oracle.Procedural.Importing.DataPumpS3.Step2"></a>

Um eine Dump-Datei zu erstellen, verwenden Sie das `DBMS_DATAPUMP`-Paket.

**Exportieren von Oracle-Daten in eine Dump-Datei**

1. Verwenden Sie SQL Plus oder Oracle SQL Developer mit einem Benutzer mit Administratorrechten, um sich mit der DB-Instance von RDS für Oracle zu verbinden. Wenn die Quelldatenbank eine DB-Instance von RDS für Oracle ist, stellen Sie eine Verbindung mit dem Amazon-RDS-Hauptbenutzer her.

1. Exportieren Sie die Daten durch einen Aufruf der `DBMS_DATAPUMP`-Verfahren.

   Das folgende Skript exportiert das `SCHEMA_1`-Schema in eine Dump-Datei mit dem Namen `sample.dmp` im `DATA_PUMP_DIR`-Verzeichnis. Ersetzen Sie `SCHEMA_1` durch den Namen des Schemas, das Sie exportieren möchten.

   ```
   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](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7) in der Oracle-Dokumentation. 

1. (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](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles).

### Schritt 3: Hochladen der Dumpdatei in Ihren Amazon S3-Bucket
<a name="Oracle.Procedural.Importing.DataPumpS3.Step3"></a>

Verwenden Sie die Amazon-RDS-Prozedur `rdsadmin.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 `amzn-s3-demo-bucket` hoch.

```
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 [Hochladen von Dateien aus Ihrer DB-Instance von RDS für Oracle in einen Amazon-S3-Bucket](oracle-s3-integration.using.md#oracle-s3-integration.using.upload).

### Schritt 4: Herunterladen der Dump-Datei aus Ihrem Amazon-S3-Bucket in Ihre DB-Instance.
<a name="Oracle.Procedural.Importing.DataPumpS3.Step4"></a>

Führen Sie diesen Schritt mit dem Amazon-RDS-Verfahren `rdsadmin.rdsadmin_s3_tasks.download_from_s3` aus. 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. Zum Entfernen einer Datei aus dem Download-Verzeichnis verwenden Sie [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF), das auf der Oracle-Website zu finden ist.

**So laden Sie die Dump-Datei herunter**

1. Starten Sie SQL\$1Plus oder Oracle SQL Developer und melden Sie sich als Hauptbenutzer für Ihre Ziel-Oracle-DB-Instance von Amazon RDS an.

1. Laden Sie die Dump-Datei mit dem Amazon-RDS-Verfahren `rdsadmin.rdsadmin_s3_tasks.download_from_s3` herunter.

   Das folgende Beispiel lädt alle Dateien von einem Amazon-S3-Bucket mit dem Namen `amzn-s3-demo-bucket` in das Verzeichnis `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 einem `VARCHAR2`-Datentyp zurück. Weitere Informationen finden Sie unter [Hochladen von Dateien aus einem Amazon S3-Bucket zu einer Oracle-DB-Instance](oracle-s3-integration.using.md#oracle-s3-integration.using.download).

### Schritt 5: Importieren Sie Ihre Dump-Datei mit DBMS\$1DATAPUMP in Ihre Ziel-DB-Instance
<a name="Oracle.Procedural.Importing.DataPumpS3.Step5"></a>

Verwenden Sie `DBMS_DATAPUMP`, um das Schema in Ihre DB-Instance von RDS für Oracle zu importieren. Zusätzliche Optionen wie `METADATA_REMAP` könnten erforderlich sein.

**So importieren Sie Daten in Ihre Ziel-DB-Instance**

1. Starten Sie SQL\$1Plus oder SQL Developer und melden Sie sich als Hauptbenutzer bei Ihrer DB-Instance von RDS für Oracle an.

1. Importieren Sie die Daten durch Aufrufen der `DBMS_DATAPUMP`-Prozeduren.

   Das folgende Beispiel importiert die *SCHEMA\$11* Daten aus `sample_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](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7) 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](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles).

1. Ü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
<a name="Oracle.Procedural.Importing.DataPumpS3.Step6"></a>

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**

1. Starten Sie SQL\$1Plus oder SQL Developer und melden Sie sich als Hauptbenutzer bei Ihrer DB-Instance von RDS für Oracle an.

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

1. 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
<a name="Oracle.Procedural.Importing.DataPump.DBLink"></a>

Der folgende Importvorgang verwendet Oracle Data Pump und das Oracle-Paket [DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_FILE_TRANSFER.html). Die Schritte sind wie folgt:

1. Stellen Sie eine Verbindung zu einer Oracle-Quelldatenbank her, die eine On-Premises-Datenbank, eine Amazon-EC2-Instance oder eine Instance von RDS für Oracle DB sein kann. 

1. Exportieren Sie Daten mit dem [DBMS\$1DATAPUMP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html)-Paket.

1. Kopieren Sie damit die Dump-Datei mit `DBMS_FILE_TRANSFER.PUT_FILE` aus der Oracle-Datenbank in das `DATA_PUMP_DIR`-Verzeichnis auf der Ziel-DB-Instance von RDS für Oracle, die über einen Datenbank-Link verbunden ist. 

1. Importieren Sie die Daten aus der kopierten Dump-Datei mithilfe des ` DBMS_DATAPUMP`-Pakets in die RDS für Oracle DB-Instance.

Der Importvorgang mittels Oracle Data Pump und des `DBMS_FILE_TRANSFER`-Pakets besteht aus den folgenden Schritten.

**Topics**
+ [Anforderungen zm Importieren von Daten mit Oracle Data Pump und einer Datenbankverbindung](#Oracle.Procedural.Importing.DataPumpDBLink.requirements)
+ [Schritt 1: Erteilen von Berechtigungen für den Benutzer auf der Ziel-DB-Instance von RDS für Oracle](#Oracle.Procedural.Importing.DataPumpDBLink.Step1)
+ [Schritt 2: Erteilen von Berechtigungen für Benutzer in der Quell-Datenbank](#Oracle.Procedural.Importing.DataPumpDBLink.Step2)
+ [Schritt 3: Erstellen Sie eine Dump-Datei mithilfe von DBMS\$1DATAPUMP](#Oracle.Procedural.Importing.DataPumpDBLink.Step3)
+ [Schritt 4: Einen Datenbank-Link zur Ziel-DB-Instance erstellen](#Oracle.Procedural.Importing.DataPumpDBLink.Step4)
+ [Schritt 5: Kopieren der exportierten Dump-Datei mit DBMS\$1FILE\$1TRANSFER auf die Ziel-DB-Instance](#Oracle.Procedural.Importing.DataPumpDBLink.Step5)
+ [Schritt 6: Importieren der Datendatei in die Ziel-DB-Instance mit DBMS\$1DATAPUMP](#Oracle.Procedural.Importing.DataPumpDBLink.Step6)
+ [Schritt 7: Bereinigen](#Oracle.Procedural.Importing.DataPumpDBLink.Step7)

### Anforderungen zm Importieren von Daten mit Oracle Data Pump und einer Datenbankverbindung
<a name="Oracle.Procedural.Importing.DataPumpDBLink.requirements"></a>

Der Vorgang hat folgende Anforderungen:
+ Sie müssen über Ausführungsberechtigungen für die Pakete `DBMS_FILE_TRANSFER` und `DBMS_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. Zum Entfernen importierter Dump-Dateien verwenden Sie [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF), das auf der Oracle-Website zu finden ist. 

### Schritt 1: Erteilen von Berechtigungen für den Benutzer auf der Ziel-DB-Instance von RDS für Oracle
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step1"></a>

Um dem Benutzer auf der Ziel-DB-Instance von RDS für Oracle Berechtigungen zu erteilen, führen Sie die folgenden Schritte aus:

1. Importieren Sie die Daten aus der kopierten Dump-Datei mit Hilfe des Pakets in die RDS für Oracle DB-Instance. Stellen Sie eine Verbindung als Amazon-RDS-Master-Benutzer her. Weitere Information über das Verbinden mit der DB-Instance finden Sie unter [Herstellen der Verbindung zu Ihrer Oracle-DB-Instance](USER_ConnectToOracleInstance.md).

1. Erstellen Sie die erforderlichen Tabellenräume, bevor Sie Daten importieren. Weitere Informationen finden Sie unter [Tablespaces in RDS für Oracle erstellen und deren Größe anpassen](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles).

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

   Die folgenden Befehle erstellen beispielsweise einen neuen Benutzer mit dem Namen *schema\$11* und gewähren ihm die erforderlichen Berechtigungen und Rollen, um die Daten für diesen Benutzer in das Schema zu importieren.

   ```
   CREATE USER schema_1 IDENTIFIED BY my-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 Rolle `RESOURCE` erteilt. Möglicherweise sind je nach zu importierenden Datenbankobjekten zusätzliche Berechtigungen und Rollen erforderlich. 
**Anmerkung**  
Ersetzen Sie `schema_1` durch den Namen Ihres Schemas in diesem Schritt und in den folgenden Schritten.

### Schritt 2: Erteilen von Berechtigungen für Benutzer in der Quell-Datenbank
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step2"></a>

Verwenden Sie SQL\$1Plus oder Oracle SQL Developer, um eine Verbindung mit einer DB-Instance von RDS für Oracle herzustellen, die die zu importierenden Daten enthält. Falls nötig, erstellen Sie ein Benutzerkonto und gewähren die notwendigen Berechtigungen. 

**Anmerkung**  
Wenn die Quell-Datenbank eine Amazon-RDS-Instance ist, können Sie diesen Schritt übergehen. Sie verwenden Ihr Amazon-RDS-Master-Benutzerkonto zum Exportieren.

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 mithilfe von DBMS\$1DATAPUMP
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step3"></a>

Gehen Sie folgendermaßen vor, um eine Dump-Datei zu erstellen:

1. Verwenden Sie SQL\$1Plus oder Oracle SQL Developer, um sich mit einem administrativen Benutzer oder mit dem in Schritt 2 erstellten Benutzer mit der Oracle-Quell-Instance zu verbinden. Wenn die Quelldatenbank eine DB-Instance von Amazon RDS für Oracle ist, stellen Sie eine Verbindung mit dem Amazon-RDS-Hauptbenutzer her.

1. 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](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7) 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](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles).

### Schritt 4: Einen Datenbank-Link zur Ziel-DB-Instance erstellen
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step4"></a>

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 Peering erstellen VPCs, 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 eingehenden und die ausgehenden Regeln der Sicherheitsgruppe können sich auf Sicherheitsgruppen aus derselben VPC oder aus einer gleichrangigen VPC beziehen. Weitere Informationen finden Sie unter [Anpassen von Datenbank-Links für die Verwendung mit DB-Instances in einer VPC](Appendix.Oracle.CommonDBATasks.DBLinks.md). 

Mit dem folgenden Befehl wird eine Datenbankverbindung mit dem Namen `to_rds` erstellt, die eine Verbindung mit dem Amazon-RDS-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 der exportierten Dump-Datei mit DBMS\$1FILE\$1TRANSFER auf die Ziel-DB-Instance
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step5"></a>

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\$1rds* (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 der Datendatei in die Ziel-DB-Instance mit DBMS\$1DATAPUMP
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step6"></a>

Verwenden Sie Oracle Data Pump, um das Schema in die DB-Instance zu kopieren. Möglicherweise sind zusätzliche Optionen wie METADATA\$1REMAP erforderlich. 

 Stellen Sie zum Importieren unter Verwendung des Amazon-RDS-Master-Benutzerkontos eine Verbindung zur DB-Instance her. 

```
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](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7) 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](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles).

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
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step7"></a>

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

# Import unter Verwendung von Oracle-Export/-Import
<a name="Oracle.Procedural.Importing.ExportImport"></a>

Unter den folgenden Bedingungen können Sie Oracle-Export/-Import-Dienstprogramme für Migrationen in Betracht ziehen:
+ Ihre Datengröße ist klein.
+ Datentypen wie „Binary Float“ und „Double“ sind nicht erforderlich.

Beim Importvorgang werden die erforderlichen Schemaobjekte erstellt. So müssen Sie nicht selbst ein Skript ausführen, um diese Objekte vorab zu erstellen. 

Die einfachste Möglichkeit, die Export- und Importdienstprogramme von Oracle zu installieren, ist die Installation des Oracle Instant Client. Wenn Sie die Software herunterladen möchten, gehen Sie zu [https://www.oracle.com/database/technologies/instant-client.html](https://www.oracle.com/database/technologies/instant-client.html). Die Dokumentation finden Sie unter [Instant Client for SQL\$1Loader, Export, and Import](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/instant-client-sql-loader-export-import.html#GUID-FF1B6F75-09F5-4911-9317-9776FAD15965) im Handbuch *Oracle Database Utilities*.

**So exportieren Sie Tabellen und importieren sie dann**

1. Exportieren Sie Tabellen aus der Quelldatenbank mit dem `exp`-Befehl.

   Der folgende Befehl exportiert die Tabellen mit den Namen `tab1`, `tab2` und `tab3`. Die Dump-Datei ist `exp_file.dmp`.

   ```
   exp cust_dba@ORCL FILE=exp_file.dmp TABLES=(tab1,tab2,tab3) LOG=exp_file.log
   ```

   Der Export erstellt eine binäre Dump-Datei, die sowohl das Schema als auch die Daten der angegebenen Tabellen enthält. 

1. Importieren Sie das Schema und die Daten mit dem `imp`-Befehl in eine Zieldatenbank.

   Der folgende Befehl importiert die Tabellen `tab1`, `tab2` und `tab3` aus der Dump-Datei `exp_file.dmp`.

   ```
   imp cust_dba@targetdb FROMUSER=cust_schema TOUSER=cust_schema \  
   TABLES=(tab1,tab2,tab3) FILE=exp_file.dmp LOG=imp_file.log
   ```

Export und Import haben andere Varianten, die Ihren Bedürfnissen eher entsprechen könnten. Alle Einzelheiten finden Sie in der Oracle-Datenbank-Dokumentation.

# Importieren mit Oracle SQL\$1Loader
<a name="Oracle.Procedural.Importing.SQLLoader"></a>

Sie können Oracle SQL\$1Loader für große Datenbanken mit einer beschränkten Anzahl an Objekten in Betracht ziehen. Da der Vorgang für den Export aus einer Quelldatenbank und das Laden in eine Zieldatenbank genau an das Schema angepasst ist, werden im folgenden Beispiel Schema-Objekte erstellt, aus einer Quelle exportiert und anschließend die Daten in eine Zieldatenbank geladen. 

Die einfachste Möglichkeit, Oracle SQL\$1Loader zu installieren, ist die Installation des Oracle Instant Client. Wenn Sie die Software herunterladen möchten, gehen Sie zu [https://www.oracle.com/database/technologies/instant-client.html](https://www.oracle.com/database/technologies/instant-client.html). Die Dokumentation finden Sie unter [Instant Client for SQL\$1Loader, Export, and Import](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/instant-client-sql-loader-export-import.html#GUID-FF1B6F75-09F5-4911-9317-9776FAD15965) im Handbuch *Oracle Database Utilities*.

**So importieren Sie Daten mit Oracle SQL\$1Loader**

1. Erstellen Sie mit der folgenden SQL-Anweisung eine Beispiel-Quelltabelle.

   ```
   CREATE TABLE customer_0 TABLESPACE users 
      AS (SELECT ROWNUM id, o.* 
          FROM   ALL_OBJECTS o, ALL_OBJECTS x 
          WHERE  ROWNUM <= 1000000);
   ```

1. Erstellen Sie für die Ziel-Instance von RDS für Oracle DB eine Zieltabelle zum Laden der Daten. Die Klausel `WHERE 1=2` stellt sicher, dass Sie die Struktur von `ALL_OBJECTS`, aber keine der Zeilen kopieren.

   ```
   CREATE TABLE customer_1 TABLESPACE users 
     AS (SELECT 0 AS ID, OWNER, OBJECT_NAME, CREATED
         FROM   ALL_OBJECTS
         WHERE  1=2);
   ```

1. Exportieren Sie die Daten aus der Quelldatenbank in eine Textdatei. Im folgenden Beispiel wird SQL\$1Plus verwendet. Für Ihre Daten werden Sie höchstwahrscheinlich ein Skript erstellen müssen, das den Export für alle Objekte in der Datenbank übernimmt. 

   ```
   ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'
   
   SET LINESIZE 800 HEADING OFF FEEDBACK OFF ARRAY 5000 PAGESIZE 0
   SPOOL customer_0.out 
   SET MARKUP HTML PREFORMAT ON
   SET COLSEP ','
   
   SELECT id, owner, object_name, created 
   FROM   customer_0; 
   
   SPOOL OFF
   ```

1. Erstellen Sie eine Steuerungsdatei, um die Daten zu beschreiben. Sie müssen eventuell ein Skript schreiben, damit Sie diesen Schritt durchführen können. 

   ```
   cat << EOF > sqlldr_1.ctl 
   load data
   infile customer_0.out
   into table customer_1
   APPEND
   fields terminated by "," optionally enclosed by '"'
   (
     id           POSITION(01:10)    INTEGER EXTERNAL,
     owner        POSITION(12:41)    CHAR,
     object_name  POSITION(43:72)    CHAR,
     created      POSITION(74:92)    date "YYYY/MM/DD HH24:MI:SS"
   )
   ```

   Falls notwendig, kopieren Sie die erstellten Dateien mit dem vorstehenden Code in einen Bereitstellungsbereich, wie zum Beispiel eine Amazon EC2-Instance.

1. Importieren Sie die Daten mit SQL\$1Loader mit dem entsprechenden Benutzernamen und Passwort für die Zieldatenbank. 

   ```
   sqlldr cust_dba@targetdb CONTROL=sqlldr_1.ctl BINDSIZE=10485760 READSIZE=10485760 ROWS=1000 
   ```

# Migrieren mit materialisierten Oracle-Ansichten
<a name="Oracle.Procedural.Importing.Materialized"></a>

Um große Datenmengen effizient zu migrieren, können Sie die Oracle-Replikation von materialisierten Ansichten verwenden. Mit der Replikation können Sie die Zieltabellen mit den Quelltabellen synchronisieren. So können Sie bei Bedarf später zu Amazon RDS wechseln. 

Bevor Sie mit materialisierten Ansichten migrieren können, müssen Sie sicherstellen, dass Sie die folgenden Anforderungen erfüllen:
+ Konfigurieren Sie den Zugriff von der Zieldatenbank auf die Quelldatenbank. Im folgenden Beispiel wurden in der Quelldatenbank Zugriffsregeln aktiviert, die der Zieldatenbank von RDS für Oracle erlauben, sich über SQL\$1Net mit der Quelle zu verbinden. 
+ Erstellen Sie einen Datenbank-Link von der DB-Instance von RDS für Oracle zur Quelldatenbank.

**So migrieren Sie Daten mithilfe materialisierter Ansichten**

1. Erstellen Sie sowohl auf der Quell- als auch auf der RDS for Oracle-Ziel-Instance ein Benutzerkonto, das sich mit demselben Kennwort authentifizieren kann. Im folgenden Beispiel wird ein Benutzer mit dem Namen `dblink_user` erstellt.

   ```
   CREATE USER dblink_user IDENTIFIED BY my-password
     DEFAULT TABLESPACE users
     TEMPORARY TABLESPACE temp;
      
   GRANT CREATE SESSION TO dblink_user;
   
   GRANT SELECT ANY TABLE TO dblink_user;
   
   GRANT SELECT ANY DICTIONARY TO dblink_user;
   ```
**Anmerkung**  
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.

1. Erstellen Sie einen Datenbanklink von der Ziel-Instance von RDS für Oracle zur Quell-Instance unter Verwendung des neu erstellten Benutzers.

   ```
   CREATE DATABASE LINK remote_site
     CONNECT TO dblink_user IDENTIFIED BY my-password
     USING '(description=(address=(protocol=tcp) (host=my-host) 
       (port=my-listener-port)) (connect_data=(sid=my-source-db-sid)))';
   ```
**Anmerkung**  
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.

1. Testen Sie die Verbindung:

   ```
   SELECT * FROM V$INSTANCE@remote_site;
   ```

1. Erstellen Sie eine Beispiel-Tabelle mit einem Primärschlüssel und einem Protokoll für materialisierte Ansichten in der Quell-Instance.

   ```
   CREATE TABLE customer_0 TABLESPACE users 
     AS (SELECT ROWNUM id, o.* 
         FROM   ALL_OBJECTS o, ALL_OBJECTS x
         WHERE  ROWNUM <= 1000000);
   
   ALTER TABLE customer_0 ADD CONSTRAINT pk_customer_0 PRIMARY KEY (id) USING INDEX;
   
   CREATE MATERIALIZED VIEW LOG ON customer_0;
   ```

1. Erstellen Sie eine materialisierte Ansicht in der Ziel-DB-Instance von RDS für Oracle. 

   ```
   CREATE MATERIALIZED VIEW customer_0 
     BUILD IMMEDIATE REFRESH FAST 
     AS (SELECT * 
         FROM   cust_dba.customer_0@remote_site);
   ```

1. Aktualisieren Sie auf der Ziel-DB-Instance von RDS für Oracle die materialisierte Ansicht.

   ```
   EXEC DBMS_MVIEW.REFRESH('CUSTOMER_0', 'f');
   ```

1. Verwerfen Sie die materialisierte Ansicht und schließen Sie die `PRESERVE TABLE`-Klausel ein, um die Container-Tabelle der materialisierten Ansicht und deren Inhalt beizubehalten.

   ```
   DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;
   ```

   Die beibehaltene Tabelle hat denselben Namen wie die entfernte materialisierte Ansicht.