Übertragung von Dateien zwischen Amazon RDS for Oracle und einem Amazon S3 S3-Bucket - Amazon Relational Database Service

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.

Übertragung von Dateien zwischen Amazon RDS for Oracle und einem Amazon S3 S3-Bucket

Um Dateien zwischen einer RDS Oracle-DB-Instance und einem Amazon S3 S3-Bucket zu übertragen, können Sie das RDS Amazon-Paket verwendenrdsadmin_s3_tasks. Sie können Dateien GZIP beim Hochladen komprimieren und beim Herunterladen dekomprimieren.

Anforderungen und Einschränkungen für Dateiübertragungen

Bevor Sie Dateien zwischen Ihrer DB-Instance und einem Amazon S3 S3-Bucket übertragen, beachten Sie Folgendes:

  • Das rdsadmin_s3_tasks Paket überträgt Dateien, die sich in einem einzigen Verzeichnis befinden. Sie können keine Unterverzeichnisse in eine Übertragung einbeziehen.

  • Die maximale Objektgröße in einem Amazon S3-Bucket beträgt 5 TB.

  • Aufgaben, die von rdsadmin_s3_tasks run asynchron erstellt wurden.

  • Sie können Dateien aus dem Data Pump-Verzeichnis, z. B.DATA_PUMP_DIR, oder aus einem beliebigen vom Benutzer erstellten Verzeichnis hochladen. Sie können keine Dateien aus einem Verzeichnis hochladen, das von Oracle-Hintergrundprozessen verwendet wird, wie z. B. den trace Verzeichnissen adumpbdump, oder.

  • Das Download-Limit beträgt 2000 Dateien pro Prozeduraufruf fürdownload_from_s3. Wenn Sie mehr als 2000 Dateien von Amazon S3 herunterladen müssen, teilen Sie den Download in separate Aktionen mit maximal 2000 Dateien pro Prozeduraufruf auf.

  • Wenn in Ihrem Download-Ordner eine Datei vorhanden ist und Sie versuchen, eine Datei mit demselben Namen herunterzuladen überspringt download_from_s3 den Download. Um eine Datei aus dem Download-Verzeichnis zu entfernen, verwenden Sie die SQL PL/-Prozedur UTL_FILE. FREMOVE.

Dateien von Ihrer RDS Oracle-DB-Instance in einen Amazon S3 S3-Bucket hochladen

Verwenden Sie zum Hochladen von Dateien aus Ihrer Oracle DB-Instance in einen Amazon-S3-Bucket das Verfahren rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Sie können beispielsweise Oracle Recovery Manager (RMAN) -Backup-Dateien oder Oracle Data Pump-Dateien hochladen. Weitere Informationen zur Arbeit mit Objekten finden Sie im Amazon Simple Storage Service User Guide. Weitere Hinweise zur Durchführung von RMAN Backups finden Sie unterAllgemeine RMAN Aufgaben für Oracle-DB-Instances ausführen.

Die Prozedur rdsadmin.rdsadmin_s3_tasks.upload_to_s3 hat die folgenden Parameter.

Parametername Datentyp Standard Erforderlich Beschreibung

p_bucket_name

VARCHAR2

Erforderlich

Der Name des Amazon S3-Buckets, in den die Dateien hochgeladen werden sollen.

p_directory_name

VARCHAR2

Erforderlich

Der Name des Oracle-Verzeichnisobjekts, aus dem Dateien hochgeladen werden sollen. Das Verzeichnis kann jedes beliebige vom Benutzer erstellte Verzeichnisobjekt oder das Data Pump-Verzeichnis, z. B. , sei DATA_PUMP_DIR. Sie können keine Dateien aus einem Verzeichnis hochladen, das von Hintergrundprozessen wie adumpbdump, und verwendet wirdtrace.

Anmerkung

Sie können nur Dateien aus dem angegebenen Verzeichnis hochladen. Sie können keine Dateien in Unterverzeichnisse des angegebenen Verzeichnisses hochladen.

p_s3_prefix

VARCHAR2

Erforderlich

Ein Amazon S3-Dateinamenspräfix, zu dem Dateien hochgeladen werden. Ein leeres Präfix lädt alle Dateien zur obersten Ebene im angegebenen Amazon S3-Bucket hoch und fügt kein Präfix an die Dateinamen an.

Bei dem Präfix folder_1/oradb werden Dateien z. B. zu folder_1 hochgeladen. In diesem Fall wird das Präfix oradb zu jeder Datei hinzugefügt.

p_prefix

VARCHAR2

Erforderlich

Ein Dateinamenspräfix, dem Dateinamen entsprechen müssen, damit die Dateien hochgeladen werden. Ein leeres Präfix lädt alle Dateien im angegebenen Verzeichnis hoch.

p_compression_level

NUMBER

0

optional

Der Grad der GZIP Komprimierung. Der Bereich gültiger Werte lautet 0 bis 9:

  • 0 – Keine Komprimierung

  • 1 – Schnellste Komprimierung

  • 9 – Höchste Komprimierung

p_bucket_owner_full_control

VARCHAR2

optional

Die Einstellung der Zugriffssteuerung für den Bucket. Die einzigen gültigen Werte sind null und FULL_CONTROL. Diese Einstellung ist nur erforderlich, wenn Sie Dateien von einem Konto (Konto A) in einen Bucket hochladen, der einem anderen Konto (Konto B) gehört, und Konto B die vollständige Kontrolle über die Dateien benötigt.

Der Rückgabewert für die rdsadmin.rdsadmin_s3_tasks.upload_to_s3-Prozedur ist eine Aufgaben-ID.

Im folgenden Beispiel werden alle Dateien im DATA_PUMP_DIR Verzeichnis in den Amazon S3 S3-Bucket mit dem Namen hochgeladen amzn-s3-demo-bucket. Die Dateien sind nicht komprimiert.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

Das folgende Beispiel lädt alle Dateien mit dem Präfix db im Verzeichnis DATA_PUMP_DIR in den Amazon S3-Bucket amzn-s3-demo-bucket hoch. Amazon RDS wendet die höchste GZIP Komprimierungsstufe auf die Dateien an.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_prefix => 'db', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR', p_compression_level => 9) AS TASK_ID FROM DUAL;

Das folgende Beispiel lädt alle Dateien im Verzeichnis DATA_PUMP_DIR in den Amazon S3-Bucket amzn-s3-demo-bucket hoch. Die Dateien werden in einen dbfiles-Ordner hochgeladen. In diesem Beispiel ist die GZIP Komprimierungsstufe 1, das ist die schnellste Komprimierungsstufe.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_prefix => '', p_s3_prefix => 'dbfiles/', p_directory_name => 'DATA_PUMP_DIR', p_compression_level => 1) AS TASK_ID FROM DUAL;

Das folgende Beispiel lädt alle Dateien im Verzeichnis DATA_PUMP_DIR in den Amazon S3-Bucket amzn-s3-demo-bucket hoch. Die Dateien werden in einen dbfiles-Order hochgeladen und ora wird an den Anfang eines jeden Dateinamens hinzugefügt. Es erfolgt keine Komprimierung.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_prefix => '', p_s3_prefix => 'dbfiles/ora', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

Im folgenden Beispiel wird davon ausgegangen, dass der Befehl in Konto A ausgeführt wird, aber Konto B die vollständige Kontrolle über den Bucket-Inhalt benötigt. Der Befehl rdsadmin_s3_tasks.upload_to_s3 überträgt alle Dateien im DATA_PUMP_DIR-Verzeichnis auf den Bucket namens s3bucketOwnedByAccountB. Die Zugriffskontrolle ist auf FULL_CONTROL eingestellt, damit Konto B auf die Dateien im Bucket zugreifen kann. Die GZIP Komprimierungsstufe ist 6, wodurch Geschwindigkeit und Dateigröße ausgeglichen werden.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 's3bucketOwnedByAccountB', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR', p_bucket_owner_full_control => 'FULL_CONTROL', p_compression_level => 6) AS TASK_ID FROM DUAL;

In jedem Beispiel gibt die Anweisung SELECT die ID der Aufgabe in einem VARCHAR2-Datentyp zurück.

Sie können das Ergebnis anzeigen, indem Sie die Ausgabedatei der Aufgabe anzeigen.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));

Ersetzen Aufgaben-ID mit der Aufgaben-ID, die von der Prozedur zurückgegeben wurde.

Anmerkung

Die Aufgaben werden asynchron ausgeführt.

Hochladen von Dateien aus einem Amazon S3-Bucket zu einer Oracle-DB-Instance

Verwenden Sie das RDS Amazon-Verfahren, um Dateien von einem RDS Amazon S3 S3-Bucket auf eine Oracle-Instance herunterzuladenrdsadmin.rdsadmin_s3_tasks.download_from_s3.

Die Prozedur download_from_s3 hat die folgenden Parameter.

Parametername Datentyp Standard Erforderlich Beschreibung

p_bucket_name

VARCHAR2

Erforderlich

Der Name des Amazon S3-Buckets, aus dem die Dateien heruntergeladen werden sollen.

p_directory_name

VARCHAR2

Erforderlich

Der Name des Oracle-Verzeichnisobjekts, in das die Dateien heruntergeladen werden sollen. Das Verzeichnis kann jedes beliebige vom Benutzer erstellte Verzeichnisobjekt oder das Data Pump-Verzeichnis, z. B. , sei DATA_PUMP_DIR.

p_error_on_zero_downloads

VARCHAR2

FALSE

Optional

Ein Flag, das bestimmt, ob die Aufgabe einen Fehler auslöst, wenn keine Objekte im Amazon-S3-Bucket dem Präfix entsprechen. Wenn dieser Parameter nicht gesetzt oder auf FALSE (Standard) gesetzt ist, gibt die Aufgabe eine Meldung aus, dass keine Objekte gefunden wurden, löst aber keine Ausnahme aus oder schlägt fehl. Wenn dieser Parameter den Wert hatTRUE, löst die Aufgabe eine Ausnahme aus und schlägt fehl.

Beispiele für Präfixspezifikationen, die bei Übereinstimmungsprüfungen problematisch sein können, sind Leerzeichen in Präfixen wie in ' import/test9.log' und Groß- und Kleinschreibung wie in test9.log und test9.LOG.

p_s3_prefix

VARCHAR2

Erforderlich

Ein Dateinamenspräfix, dem Dateinamen entsprechen müssen, damit die Dateien heruntergeladen werden. Wenn das Präfix leer ist, werden alle Dateien auf der höchsten Verzeichnisebene des angegebenen Amazon S3-Buckets heruntergeladen, nicht jedoch Dateien in Unterordnern in diesem Bucket.

Das Verfahren lädt Amazon S3-Objekte nur aus dem Ordner der ersten Ebene mit dem entsprechenden Präfix herunter. Verschachtelte Verzeichnisstrukturen, die dem angegebenen Präfix entsprechen, werden nicht heruntergeladen.

Angenommen, ein Amazon S3-Bucket hat die Ordnerstruktur folder_1/folder_2/folder_3. Geben Sie das 'folder_1/folder_2/'-Präfix an. In diesem Fall werden nur die Dateien in folder_2 und nicht die Dateien in folder_1 oder folder_3 heruntergeladen.

Wenn Sie stattdessen das Präfix 'folder_1/folder_2' angeben, werden alle Dateien in folder_1, die mit dem Präfix 'folder_2' übereinstimmen, heruntergeladen, und es werden keine Dateien in folder_2 heruntergeladen.

p_decompression_format

VARCHAR2

Optional

Das Dekomprimierungsformat. Gültige Werte sind NONE für keine Dekomprimierung und GZIP für die Dekomprimierung.

Der Rückgabewert für die rdsadmin.rdsadmin_s3_tasks.download_from_s3-Prozedur ist eine Aufgaben-ID.

Das folgende Beispiel lädt alle Dateien namens amzn-s3-demo-bucket im Amazon-S3-Bucket in das DATA_PUMP_DIR-Verzeichnis herunter. Die Dateien werden nicht komprimiert, daher wird keine Dekomprimierung angewendet.

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;

Das folgende Beispiel lädt alle Dateien mit dem Präfix db im Amazon S3-Bucket amzn-s3-demo-bucket in das Verzeichnis DATA_PUMP_DIR herunter. Die Dateien werden mit komprimiertGZIP, sodass die Dekomprimierung angewendet wird. Der Parameter p_error_on_zero_downloads aktiviert die Präfixfehlerüberprüfung. Wenn das Präfix also mit keiner Datei im Bucket übereinstimmt, löst die Aufgabe eine Ausnahme und einen Fehler aus.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_s3_prefix => 'db', p_directory_name => 'DATA_PUMP_DIR', p_decompression_format => 'GZIP', p_error_on_zero_downloads => 'TRUE') AS TASK_ID FROM DUAL;

Das folgende Beispiel lädt alle Dateien im Ordner myfolder/ im Amazon S3-Bucket amzn-s3-demo-bucket in das Verzeichnis DATA_PUMP_DIR herunter. Verwenden Sie zur Angabe des Amazon-S3-Ordners den Parameter p_s3_prefix. Die hochgeladenen Dateien werden mit komprimiertGZIP, aber beim Herunterladen nicht dekomprimiert.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_s3_prefix => 'myfolder/', p_directory_name => 'DATA_PUMP_DIR', p_decompression_format => 'NONE') AS TASK_ID FROM DUAL;

Das folgende Beispiel lädt die Datei mydumpfile.dmp im Amazon-S3-Bucket amzn-s3-demo-bucket ins Verzeichnis DATA_PUMP_DIR herunter. Es erfolgt keine Dekomprimierung.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_s3_prefix => 'mydumpfile.dmp', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

In jedem Beispiel gibt die Anweisung SELECT die ID der Aufgabe in einem VARCHAR2-Datentyp zurück.

Sie können das Ergebnis anzeigen, indem Sie die Ausgabedatei der Aufgabe anzeigen.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));

Ersetzen Aufgaben-ID mit der Aufgaben-ID, die von der Prozedur zurückgegeben wurde.

Anmerkung

Die Aufgaben werden asynchron ausgeführt.

Sie können mithilfe des Oracle-Verfahrens UTL_FILE.FREMOVE Dateien aus einem Verzeichnis entfernen. Weitere Informationen finden Sie unter FREMOVEVerfahren in der Oracle-Dokumentation.

Überwachen des Status einer Dateiübertragung

Dateiübertragungsaufgaben veröffentlichen RDS Amazon-Ereignisse, wenn sie beginnen und abgeschlossen sind. Die Ereignisnachricht enthält die Aufgaben-ID für die Dateiübertragung. Informationen zum Anzeigen dieser Grenze finden Sie unter RDSAmazon-Ereignisse anzeigen.

Sie können den Status einer laufenden Aufgabe in einer bdump-Datei einsehen. Die bdump-Dateien befinden sich im Verzeichnis /rdsdbdata/log/trace. Jeder bdump-Dateiname weist das folgende Format auf.

dbtask-task-id.log

Ersetzen Sie task-id durch die ID der Aufgabe, die Sie überwachen möchten.

Anmerkung

Die Aufgaben werden asynchron ausgeführt.

Sie können das gespeicherte Verfahren rdsadmin.rds_file_util.read_text_file zur Ansicht des Inhalts der bdump-Dateien verwenden. Beispiel: Die folgende Abfrage gibt den Inhalt der bdump-Datei dbtask-1234567890123-1234.log zurück.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890123-1234.log'));

Das folgende Beispiel zeigt die Protokolldatei für eine fehlgeschlagene Übertragung.

TASK_ID -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1234567890123-1234 TEXT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2023-04-17 18:21:33.993 UTC [INFO ] File #1: Uploading the file /rdsdbdata/datapump/A123B4CDEF567890G1234567890H1234/sample.dmp to Amazon S3 with bucket name amzn-s3-demo-bucket and key sample.dmp. 2023-04-17 18:21:34.188 UTC [ERROR] RDS doesn't have permission to write to Amazon S3 bucket name amzn-s3-demo-bucket and key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.