Konvertierung von Oracle zu Amazon RDS für PostgreSQL oder Amazon Aurora PostgreSQL - AWS Schema Conversion Tool

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.

Konvertierung von Oracle zu Amazon RDS für PostgreSQL oder Amazon Aurora PostgreSQL

Beachten Sie Folgendes, wenn Sie eine Oracle-Datenbank in RDS for PostgreSQL oder Amazon Aurora PostgreSQL konvertieren.

AWS SCTFührt bei der Konvertierung von Oracle-Systemobjekten in PostgreSQL Konvertierungen durch, wie in der folgenden Tabelle dargestellt.

Oracle-Systemobjekt Beschreibung Konvertiertes PostgreSQL-Objekt
V$VERSION Zeigt die Versionsnummern der Core-Bibliothekskomponenten in der Oracle-Datenbank an aws_oracle_ext.v$version
V$INSTANCE Eine Ansicht, die den Status der aktuellen Instance anzeigt. aws_oracle_ext.v$instance

Sie können AWS SCT Oracle SQL*Plus-Dateien in psql konvertieren. Dabei handelt es sich um ein terminalbasiertes Frontend für PostgreSQL. Weitere Informationen finden Sie unter Anwendungs-SQL konvertieren mitAWS SCT.

Privilegien für PostgreSQL als Zieldatenbank

Um PostgreSQL als Ziel zu verwenden, ist das AWS SCT Privileg erforderlich. CREATE ON DATABASE Stellen Sie sicher, dass Sie dieses Privileg für jede PostgreSQL-Zieldatenbank gewähren.

Um die konvertierten öffentlichen Synonyme zu verwenden, ändern Sie den Standardsuchpfad der Datenbank in"$user", public_synonyms, public.

Sie können das folgende Codebeispiel verwenden, um einen Datenbankbenutzer zu erstellen und die Rechte zu gewähren.

CREATE ROLE user_name LOGIN PASSWORD 'your_password'; GRANT CREATE ON DATABASE db_name TO user_name; ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;

Ersetzen Sie im vorherigen Beispiel user_name durch den Namen Ihres Benutzers. Ersetzen Sie dann db_name durch den Namen Ihrer Zieldatenbank. Ersetzen Sie abschließend your_password durch ein sicheres Passwort.

Um Amazon RDS for PostgreSQL als Ziel zu verwenden, ist das Privileg AWS SCT erforderlich. rds_superuser

In PostgreSQL superuser kann nur der Schemabesitzer oder a ein Schema löschen. Der Besitzer kann ein Schema und alle Objekte, die dieses Schema enthält, löschen, auch wenn der Besitzer des Schemas einige seiner Objekte nicht besitzt.

Wenn Sie verschiedene Benutzer verwenden, um verschiedene Schemas zu konvertieren und auf Ihre Zieldatenbank anzuwenden, erhalten Sie möglicherweise eine Fehlermeldung, wenn ein Schema nicht gelöscht AWS SCT werden kann. Verwenden Sie die superuser Rolle, um diese Fehlermeldung zu vermeiden.

Einstellungen für die Konvertierung von Oracle nach PostgreSQL

Um die Konvertierungseinstellungen von Oracle nach PostgreSQL zu bearbeiten, wählen Sie Einstellungen in AWS SCT und dann Konvertierungseinstellungen. Wählen Sie in der oberen Liste Oracle und dann Oracle — PostgreSQL aus. AWS SCTzeigt alle verfügbaren Einstellungen für die Konvertierung von Oracle in PostgreSQL an.

Die Konvertierungseinstellungen von Oracle nach PostgreSQL AWS SCT beinhalten Optionen für Folgendes:

  • Um die Anzahl der Kommentare mit Aktionselementen im konvertierten Code zu begrenzen.

    Wählen Sie unter Kommentare im konvertierten Code für die Aktionspunkte mit dem ausgewählten Schweregrad und höher den Schweregrad der Aktionspunkte aus. AWS SCTfügt dem konvertierten Code Kommentare für Aktionspunkte mit dem ausgewählten Schweregrad und höher hinzu.

    Um beispielsweise die Anzahl der Kommentare in Ihrem konvertierten Code zu minimieren, wählen Sie Nur Fehler aus. Um Kommentare zu allen Aktionselementen in Ihren konvertierten Code aufzunehmen, wählen Sie Alle Nachrichten.

  • Um die Konvertierung materialisierter Oracle-Ansichten in Tabellen oder materialisierte Ansichten in PostgreSQL zu ermöglichenAWS SCT. Wählen Sie für Materialized View-Konvertierung als aus, wie Ihre Materialized Views konvertiert werden sollen.

  • Um mit Ihrem Oracle-Quellcode zu arbeiten, wenn er die TO_NUMBER Funktionen TO_CHARTO_DATE, und mit Parametern enthält, die PostgreSQL nicht unterstützt. AWS SCTEmuliert standardmäßig die Verwendung dieser Parameter im konvertierten Code.

    Wenn Ihr Oracle-Quellcode nur Parameter enthält, die PostgreSQL unterstützt, können Sie native TO_CHAR PostgreSQL-Funktionen und -Funktionen verwenden. TO_DATE TO_NUMBER In diesem Fall funktioniert der konvertierte Code schneller. Um nur diese Parameter einzubeziehen, wählen Sie die folgenden Werte aus:

    • Die Funktion TO_CHAR () verwendet keine Oracle-spezifischen Formatierungszeichenketten

    • Die Funktion TO_DATE () verwendet keine Oracle-spezifischen Formatierungszeichenfolgen

    • Die Funktion TO_NUMBER () verwendet keine Oracle-spezifischen Formatierungszeichenketten

  • Um zu verhindern, dass Ihre Oracle-Quelldatenbank nur Ganzzahlwerte in den Primär- oder Fremdschlüsselspalten des NUMBER Datentyps speichert, AWS SCT können Sie diese Spalten in den BIGINT Datentyp konvertieren. Dieser Ansatz verbessert die Leistung Ihres konvertierten Codes. Um diesen Ansatz zu verfolgen, wählen Sie NUMBER-Primär- und Fremdschlüsselspalten in BIGINT-Spalten konvertieren aus. Stellen Sie sicher, dass Ihre Quelle keine Fließkommawerte in diesen Spalten enthält, um Datenverlust zu vermeiden.

  • Um deaktivierte Trigger und Einschränkungen in Ihrem Quellcode zu überspringen. Wählen Sie dazu die Option Deaktivierte Trigger und Beschränkungen ignorieren.

  • AWS SCTZur Konvertierung von Zeichenfolgenvariablen, die als dynamisches SQL bezeichnet werden. Ihr Datenbankcode kann die Werte dieser Zeichenfolgenvariablen ändern. Um sicherzustellen, dass AWS SCT immer der neueste Wert dieser Zeichenfolgenvariablen konvertiert wird, wählen Sie Den dynamischen SQL-Code konvertieren, der in aufgerufenen Routinen erstellt wird.

  • Um das zu beheben, unterstützen PostgreSQL Version 10 und frühere Versionen keine Prozeduren. Wenn Sie oder Ihre Benutzer mit der Verwendung von Prozeduren in PostgreSQL nicht vertraut sind, AWS SCT können Sie Oracle-Prozeduren in PostgreSQL-Funktionen konvertieren. Wählen Sie dazu die Option Prozeduren in Funktionen konvertieren aus.

  • Um zusätzliche Informationen zu den aufgetretenen Aktionspunkten zu sehen. Dazu können Sie dem Erweiterungspaket bestimmte Funktionen hinzufügen, indem Sie Add on Exception Raise Block für Migrationsprobleme mit den nächsten Schweregraden auswählen. Wählen Sie dann die Schweregrade aus, um benutzerdefinierte Ausnahmen auszulösen.

  • Um mit einer Oracle-Quelldatenbank zu arbeiten, die Einschränkungen für die automatisch generierten Namen enthalten kann. Wenn Ihr Quellcode diese Namen verwendet, stellen Sie sicher, dass Sie die Option Die vom System generierten Beschränkungsnamen mithilfe der ursprünglichen Quellnamen konvertieren auswählen. Wenn Ihr Quellcode diese Einschränkungen verwendet, aber nicht deren Namen verwendet, deaktivieren Sie diese Option, um die Konvertierungsgeschwindigkeit zu erhöhen.

  • Um herauszufinden, ob Ihre Datenbank und Anwendungen in verschiedenen Zeitzonen ausgeführt werden. AWS SCTEmuliert standardmäßig Zeitzonen im konvertierten Code. Sie benötigen diese Emulation jedoch nicht, wenn Ihre Datenbank und Anwendungen dieselbe Zeitzone verwenden. In diesem Fall entspricht die ausgewählte Zeitzone auf der Clientseite der Zeitzone auf dem Server.

  • Um herauszufinden, ob Ihre Quell- und Zieldatenbanken in unterschiedlichen Zeitzonen laufen. Wenn dies der Fall ist, gibt die Funktion, die die SYSDATE integrierte Oracle-Funktion emuliert, im Vergleich zur Quellfunktion andere Werte zurück. Um sicherzustellen, dass Ihre Quell- und Zielfunktionen dieselben Werte zurückgeben, wählen Sie Set default time zone for SYSDATE-Emulation.

  • Um die Funktionen der Orace-Erweiterung in Ihrem konvertierten Code zu verwenden. Wählen Sie dazu unter Oracle-Implementierung verwenden die zu verwendenden Funktionen aus. Weitere Informationen zu orafce finden Sie unter orafce on. GitHub

Oracle-Sequenzen konvertieren

AWS SCTkonvertiert Sequenzen von Oracle nach PostgreSQL. Wenn Sie Sequenzen verwenden, um Integritätseinschränkungen aufrechtzuerhalten, stellen Sie sicher, dass sich die neuen Werte einer migrierten Sequenz nicht mit den vorhandenen Werten überschneiden.

Um konvertierte Sequenzen mit dem letzten Wert aus der Quelldatenbank zu füllen
  1. Öffnen Sie Ihr AWS SCT Projekt mit Oracle als Quellcode.

  2. Wählen Sie Einstellungen und dann Konvertierungseinstellungen.

  3. Wählen Sie in der oberen Liste Oracle und dann Oracle — PostgreSQL aus. AWS SCTzeigt alle verfügbaren Einstellungen für die Konvertierung von Oracle in PostgreSQL an.

  4. Wählen Sie Konvertierte Sequenzen mit dem letzten auf der Quellseite generierten Wert auffüllen.

  5. Wählen Sie OK, um die Einstellungen zu speichern und das Dialogfeld mit den Konvertierungseinstellungen zu schließen.

Konvertieren von Oracle ROWID

In einer Oracle-Datenbank enthält die ROWID-Pseudospalte die Adresse der Tabellenzeile. Die ROWID-Pseudospalte ist einzigartig für Oracle, daher AWS SCT konvertiert sie die ROWID-Pseudospalte in eine Datenspalte in PostgreSQL. Durch diese Konvertierung können Sie die ROWID-Informationen behalten.

AWS SCTKann bei der Konvertierung der ROWID-Pseudospalte eine Datenspalte mit dem Datentyp erstellen. bigint Wenn kein Primärschlüssel vorhanden ist, wird die ROWID-Spalte als Primärschlüssel AWS SCT festgelegt. Wenn ein Primärschlüssel vorhanden ist, AWS SCT wird der ROWID-Spalte eine eindeutige Einschränkung zugewiesen.

Wenn Ihr Quelldatenbankcode Operationen mit ROWID enthält, die Sie nicht mit einem numerischen Datentyp ausführen AWS SCT können, können Sie eine Datenspalte mit dem character varying Datentyp erstellen.

So erstellen Sie eine Datenspalte für Oracle ROWID für ein Projekt
  1. Öffnen Sie Ihr AWS SCT Projekt mit Oracle als Quellcode.

  2. Wählen Sie Einstellungen und dann Konvertierungseinstellungen.

  3. Wählen Sie in der oberen Liste Oracle und dann Oracle — PostgreSQL aus. AWS SCTzeigt alle verfügbaren Einstellungen für die Konvertierung von Oracle in PostgreSQL an.

  4. Führen Sie für Generate row ID einen der folgenden Schritte aus:

    • Wählen Sie Als Identität generieren, um eine numerische Datenspalte zu erstellen.

    • Wählen Sie Als Charakterdomänentyp generieren, um eine Charakterdatenspalte zu erstellen.

  5. Wählen Sie OK, um die Einstellungen zu speichern und das Dialogfeld mit den Konvertierungseinstellungen zu schließen.

Dynamisches Oracle-SQL konvertieren

Oracle bietet zwei Möglichkeiten, dynamisches SQL zu implementieren: mithilfe einer EXECUTE IMMEDIATE-Anweisung oder durch Aufrufen von Prozeduren im Paket DBMS_SQL. Wenn Ihre Oracle-Quelldatenbank Objekte mit dynamischem SQL enthält, verwenden Sie diese, AWS SCT um dynamische SQL-Anweisungen von Oracle in PostgreSQL zu konvertieren.

Um Oracle Dynamic SQL nach PostgreSQL zu konvertieren
  1. Öffnen Sie Ihr AWS SCT Projekt mit Oracle als Quellcode.

  2. Wählen Sie in der Oracle-Quellbaumansicht ein Datenbankobjekt aus, das dynamisches SQL verwendet.

  3. Öffnen Sie das Kontextmenü (Rechtsklick) für das Objekt, wählen Sie Schema konvertieren und stimmen Sie zu, dass die Objekte ersetzt werden, falls sie vorhanden sind. Der folgende Screenshot zeigt die konvertierte Prozedur unterhalb der Oracle-Prozedur mit dynamischem SQL.

    
                                Dynamische SQL-Konvertierung

Oracle-Partitionen konvertieren

AWS SCTunterstützt derzeit die folgenden Partitionierungsmethoden:

  • Bereich

  • Auflisten

  • Mehrspaltiger Bereich

  • Hash

  • Composite (Listenliste, Bereichsliste, Listenbereich, List-Hash, Bereichs-Hash, Hash-Hash)