Direkt zum Inhalt

Wie behebe ich Probleme, wenn ich Amazon RDS für Oracle mit Amazon S3 integriere?

Lesedauer: 7 Minute
0

Ich möchte Probleme und Fehler beheben, wenn ich Amazon Relational Database Service (Amazon RDS) for Oracle mit Amazon Simple Storage Service (Amazon S3) integriere.

Kurzbeschreibung

Bevor du Dateien zwischen einer Amazon RDS für Oracle DB-Instance und einem Amazon S3-Bucket überträgst, überprüfe die folgenden Bedingungen deiner Einrichtung:

  • Die DB-Instance und der S3-Bucket befinden sich in derselben AWS-Region.
  • Die DB-Instance hat den erforderlichen Zugriff auf den S3-Bucket.
  • Die DB-Instance ist einer Optionsgruppe zugeordnet, die die Option S3_INTEGRATION enthält.
  • Du lädst nur Dateien aus dem Oracle-Verzeichnisobjekt hoch. Dieses Verzeichnis kann ein vom Benutzer erstelltes Verzeichnis oder ein DATA_PUMP_DIR-Verzeichnis sein.
  • Wenn du ein vom Benutzer erstelltes Verzeichnis verwendest, muss der Benutzer, der den Upload und Download durchführt, über die erforderlichen Berechtigungen für das Verzeichnis verfügen. Weitere Informationen findest du unter Daten in Oracle auf Amazon RDS importieren.
  • Wenn du Daten innerhalb von Unterverzeichnissen kopierst, gib den Namen des Unterverzeichnisses explizit an, wenn du die rdsadmin-Pakete verwendest. Du kannst keine Unterverzeichnisse kopieren, die die Option S3_INTEGRATION verwenden.

Lösung

**Anmerkung:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, findest du weitere Informationen unter Troubleshoot AWS CLI errors. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Stelle sicher, dass die DB-Instance den erforderlichen Zugriff auf den S3-Bucket hat

Prüfe, ob deine DB-Instance über eine AWS Identity and Access Management (IAM)-Rolle mit den geringsten Berechtigungen zum Hoch- und Runterladen von S3 verfügt. Führe die folgenden Schritte aus:

  1. Öffne die Amazon-RDS-Konsole.
  2. Wähle im Navigationsbereich Datenbanken aus.
  3. Wähle die DB-Instance aus, die du überprüfen möchtest.
  4. Wähle die Registerkarte Konnektivität und Sicherheit aus.
  5. Scrolle nach unten zum Abschnitt IAM-Rollen verwalten, um zu überprüfen, ob du über eine aktive IAM-Rolle verfügst, die die folgenden Berechtigungen umfasst
    S3:ListBucket
    S3:PutObject
    S3:GetObject

Um zu überprüfen, ob deine DB-Instance über eine IAM-Rolle mit den geringsten Berechtigungen verfügt, führe den folgenden AWS-CLI-Befehl describe-db-instances aus:

aws rds describe-db-instances \--db-instance-identifier example-db-instance \--query 'DBInstances[*].[AssociatedRoles[*]]'

Nachdem du überprüft hast, ob die IAM-Rolle vorhanden ist, führe eine der folgenden Aktionen aus:

  • Wenn die IAM-Rolle vorhanden ist, aber nicht über die geringsten Berechtigungen verfügt, ändere die Rolle so, dass sie diese Berechtigungen enthält.
  • Wenn du keine IAM-Rolle mit den erforderlichen Berechtigungen hast, erstelle zunächst eine IAM-Richtlinie mit den Berechtigungen, die für die Übertragung der Dateien erforderlich sind. Erstelle als Nächstes eine Rolle für deine Amazon RDS für Oracle-DB-Instance und hänge deine Richtlinie an die Rolle an. Ordne dann deine IAM-Rolle deiner Amazon RDS für Oracle-DB-Instance zu. Weitere Informationen findest du unter Anforderungen und Einschränkungen von RDS Custom für Oracle. Achte darauf, Buckets Berechtigungen auf Bucket-Ebene und Objekten Berechtigungen auf Objektebene hinzuzufügen, wenn du die IAM-Richtlinie erstellst.

Wenn das Problem mit den Bucket-Berechtigungen bestehen bleibt, ändere die IAM-Rolle, um vollen Zugriff auf den S3-Bucket zu gewähren:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::example-bucket/*",
        "arn:aws:s3:::example-bucket"
      ]
    }
  ]
}

Wichtig: Die IAM-Rolle wurde so geändert, dass nur Vollzugriff gewährt wird, um zu testen, ob das Problem durch die falsche Einrichtung der IAM-Berechtigungen verursacht wird. Nachdem du das Problem behoben hast, setze die benutzerdefinierten Berechtigungen auf ihren vorherigen Zustand zurück.

Um Dateien in einen bestimmten Ordner in Amazon S3 hochzuladen, verwende den Parameter p_s3_prefix in der Prozedur rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Stelle sicher, dass du über die erforderlichen Berechtigungen verfügst, bevor du die Dateien hochlädst.

Um beispielsweise Dateien in den Ordner Beispiel-Ordner in den S3-Bucket Beispiel-Bucket hochzuladen, fügen die folgende IAM-Richtlinie hinzu:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::example-bucket/example-folder/*"
      ]
    }
  ]
}

Stelle sicher, dass die DB-Instance mit einer Optionsgruppe verknüpft ist, die die Option S3_INTEGRATION enthält

Gehe wie folgt vor, um zu überprüfen, ob du eine Optionsgruppe an deine RDS-DB-Instance angehängt hast:

  1. Öffne die Amazon-RDS-Konsole.
  2. Wähle im Navigationsbereich Datenbanken aus.
  3. Wähle die DB-Instance aus, die du überwachen möchtest.
  4. Wähle die Registerkarte Konfiguration aus.
  5. Beachte den Parameter Optionsgruppen.

Wenn sich diese Optionsgruppe nicht im **synchronisierten ** Status befindet und du versuchst, die Option S3_INTEGRATION hinzuzufügen, wird die Option nicht hinzugefügt. Es hat sich bewährt, sicherzustellen, dass sich die Optionsgruppe im synchronisierten Status befindet.

Um zu überprüfen, ob sich diese Optionsgruppe im synchronisierten Status befindet, führe den folgenden AWS-CLI-Befehl aus:

aws rds describe-db-instances \--db-instance-identifier example-db-instance \
--query 'DBInstances[*].[OptionGroupMemberships[*]]'

Wenn sich die Optionsgruppe nicht im Status Synchronisiert befindet, wähle die Registerkarte Protokolle und Ereignisse für deine Datenbank und scrolle dann nach unten zum Abschnitt Aktuelle Ereignisse. Identifiziere die Komponente, die verhindert, dass die Optionsgruppe synchronisiert ist, und entferne dann diese Komponente aus der Datenbank.

Wenn sich die Optionsgruppe im Status synchronisiert befindet, überprüfe, ob die Option S3_INTEGRATION in der Optionsgruppe enthalten ist. Weitere Informationen findest du unter Auflisten der Optionen und Optionseinstellungen für eine Optionsgruppe. Wenn die Option S3_INTEGRATION nicht in der Optionsgruppe enthalten ist, füge die Option hinzu. Weitere Informationen findest du unter Hinzufügen der Amazon S3-Integrationsoption.

Hinweis: Wenn die Option S3_INTEGRATION nicht zu deiner DB-Instance hinzugefügt wird, erhältst du den Fehler „ORA-00904: „RDSADMIN"."RDSADMIN_S3_TASKS"."UPLOAD_TO_S3": invalid identifier";“. Dieser Fehler zeigt, dass die erforderlichen Verfahren zum Hochladen und Herunterladen nicht auf der DB-Instance erstellt wurden.

Es treten keine Ausfallzeiten auf, wenn du die Option S3_INTEGRATION zu Amazon RDS hinzufügst. Wenn du die Option Sofort anwenden verwenden möchtest, stelle sicher, dass keine Wartungsaktionen ausstehen. Wenn Wartungsaktionen ausstehen, werden diese Aktionen mit der S3-Integration angewendet. Weitere Informationen findest du unter Wartung einer DB-Instance.

Stelle sicher, dass du Dateien nur aus dem vom Benutzer erstellten Oracle-Verzeichnisobjekt oder dem Verzeichnis DATA_PUMP_DIR hochlädst und runterlädst

Du kannst nicht direkt in der Datenbank-Instance auf die Amazon S3-Dateien zugreifen. Um auf diese Dateien zuzugreifen, musst du die Dateien in ein Verzeichnis auf dem Amazon RDS-Host kopieren, um darauf zugreifen zu können. Gehe wie folgt vor, um Dateien von der DB-Instance in einen S3-Bucket hoch- und runterzuladen:

  1. Verwende den Befehl expdp, die dbms_datapump-API im DATA_DUMP_DIR oder das benutzerdefinierte Verzeichnis, um die Exportdateien in Amazon RDS nach Amazon S3 zu kopieren. Stelle sicher, dass du die Dump-Dateien erstellst.
  2. Verwende dann die Prozedur rdsadmin.rdsadmin_s3_tasks.upload_to_s3, um Dateien auf S3 hochzuladen. Weitere Informationen findest du unter Dateien von deiner RDS für Oracle-DB-Instance in einen Amazon S3-Bucket hochladen.
  3. Verwende die Prozedur rdsadmin. rdsadmin_s3_tasks.download_from_s3, um Dateien aus dem S3-Bucket in den Ordner DATA_PUMP_DIR oder ein vom Benutzer erstelltes Verzeichnis herunterzuladen. Weitere Informationen findest du unter Dateien von einem Amazon S3-Bucket auf eine Oracle-DB-Instance herunterladen.

Sieh dir das Protokoll an, das generiert wird, wenn du das Verfahren zum Hoch- oder Herunterladen der rdsadmin-Pakete ausführst, um den Status der Dateiübertragung zu überwachen. Gehe wie folgt vor, um diese Protokolle anzuzeigen:

  1. Öffne die Amazon-RDS-Konsole.
  2. Wähle im Navigationsbereich Datenbanken aus.
  3. Wähle die DB-Instance aus, die du überwachen möchtest.
  4. Wähle die Registerkarte Protokolle & Ereignisse aus.
  5. Gib im Abschnitt Protokolle die Aufgaben-ID, die von der Prozedur zurückgegeben wurde, in den Suchfilter ein.
  6. Wähle die zurückgegebene Datei aus.
  7. Wähle Ansehen aus, um die Protokolle anzusehen.
    -oder-
    Wähle Herunterladen aus, um die Protokolle herunterzuladen.

Um die während des Verfahrens zum Hoch- oder Herunterladen generierte Protokolldatei zu lesen, führe den folgenden Befehl aus:

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

**Hinweis:**Stelle sicher, dass du task-id durch die Task-ID, die von der Prozedur zurückgegeben wurde, ersetzt.

Ähnliche Informationen

Amazon S3-Integration

Warum verwendet meine Amazon RDS für Oracle DB-Instance mehr Speicher als erwartet?