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.
Migration von Oracle zu Amazon RDS for Postgre SQL oder Amazon Aurora Postgre mit SQL AWS Schema Conversion Tool
Beachten Sie Folgendes, wenn Sie eine Oracle-Datenbank in RDS for Postgre SQL oder Amazon Aurora Postgre SQL konvertieren.
Themen
AWS SCT Führt bei der Konvertierung von Oracle-Systemobjekten nach Postgre Konvertierungen durchSQL, wie in der folgenden Tabelle dargestellt.
Oracle-Systemobjekt | Beschreibung | Konvertiertes Postgre-Objekt SQL |
---|---|---|
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 es verwenden, um SQL Oracle*Plus-Dateien in psql zu konvertieren, ein terminalbasiertes Frontend für Postgre. SQL Weitere Informationen finden Sie unter Anwendung konvertieren SQL mit AWS SCT.
Rechte für Postgre als Zieldatenbank SQL
Um Postgre SQL als Ziel zu verwenden, ist die CREATE ON DATABASE
entsprechende AWS SCT Berechtigung erforderlich. Stellen Sie sicher, dass Sie dieses Recht für jede Postgre-Zieldatenbank gewähren. SQL
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 Berechtigungen zu gewähren.
CREATE ROLE
user_name
LOGIN PASSWORD 'your_password
'; GRANT CREATE ON DATABASEdb_name
TOuser_name
; ALTER DATABASEdb_name
SET SEARCH_PATH = "$user", public_synonyms, public;
Ersetzen Sie im vorherigen Beispiel user_name
durch den Namen Ihres Benutzers. Dann ersetze db_name
mit dem Namen Ihrer Zieldatenbank. Schließlich ersetzen your_password
mit einem sicheren Passwort.
Um Amazon RDS for Postgre SQL als Ziel zu verwenden, ist das rds_superuser
Privileg AWS SCT erforderlich.
In Postgre SQL superuser
kann nur der Eigentümer des Schemas oder a ein Schema löschen. Der Besitzer kann ein Schema und alle Objekte, die dieses Schema enthält, löschen, auch wenn der Eigentümer 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 Rolle superuser
, um diese Fehlermeldung zu vermeiden.
Einstellungen für die Konvertierung von Oracle nach Postgre SQL
Um die Einstellungen für die SQL Konvertierung von Oracle nach Postgre zu bearbeiten, wählen Sie Einstellungen in AWS SCT und dann Konvertierungseinstellungen. Wählen Sie in der oberen Liste Oracle und dann Oracle — SQL Postgre aus. AWS SCT zeigt alle verfügbaren Einstellungen für die Konvertierung von Oracle nach Postgre SQL an.
Die Einstellungen für die SQL Konvertierung von Oracle nach Postgre AWS SCT umfassen Optionen für Folgendes:
-
Um die Anzahl der Kommentare mit Aktionselementen im konvertierten Code zu begrenzen.
Wählen Sie für Hinzufügen von Kommentaren zum konvertierten Code für Aktionselemente mit ausgewähltem Schweregrad und höherem Schweregrad den Schweregrad der Aktionspunkte aus. AWS SCT fügt dem konvertierten Code Kommentare für Aktionspunkte mit dem ausgewählten Schweregrad und höher hinzu.
Beispiel: Um die Anzahl der Kommentare im konvertierten Code zu minimieren, wählen Sie Nur Fehler aus. Um Kommentare zu allen Aktionselementen in den konvertierten Code aufzunehmen, wählen Sie Alle Nachrichten aus.
-
Um die Konvertierung von materialisierten Oracle-Ansichten in Tabellen oder materialisierte Ansichten auf Postgre zu ermöglichen AWS SCT . SQL Wählen Sie für Materialized View Conversion as aus, wie Ihre materialisierten Quellansichten konvertiert werden sollen.
-
Um mit Ihrem Oracle-Quellcode zu arbeiten, wenn er die
TO_NUMBER
FunktionenTO_CHAR
TO_DATE
, und mit Parametern enthält, die Postgre SQL nicht unterstützt. AWS SCT Emuliert standardmäßig die Verwendung dieser Parameter im konvertierten Code.Wenn Ihr Oracle-Quellcode nur Parameter enthält, die Postgre SQL unterstützt, können Sie native Postgre- SQL
TO_CHAR
TO_DATE
, und -Funktionen verwenden.TO_NUMBER
In diesem Fall arbeitet der konvertierte Code schneller. Um nur diese Parameter einzubeziehen, wählen Sie die folgenden Werte aus:Die Funktion TO_ CHAR () verwendet keine Oracle-spezifischen Formatierungszeichenfolgen
Die Funktion TO_ DATE () verwendet keine Oracle-spezifischen Formatierungszeichenfolgen
Die Funktion TO_ NUMBER () verwendet keine Oracle-spezifischen Formatierungszeichenfolgen
-
Um zu vermeiden, 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 denBIGINT
Datentyp konvertieren. Dieser Ansatz verbessert die Leistung des konvertierten Codes. Wählen Sie für diesen Ansatz die Option NUMBERPrimär- und Fremdschlüsselspalten in BIGINT Einsen konvertieren aus. Stellen Sie sicher, dass Ihre Quelle keine Gleitkommawerte in diesen Spalten enthält, um Datenverlust zu vermeiden. -
Um deaktivierte Trigger und Einschränkungen in Ihrem Quellcode zu überspringen. Wählen Sie dazu Deaktivierte Trigger und Einschränkungen ignorieren.
-
Wird verwendet AWS SCT , um Zeichenkettenvariablen zu konvertieren, die als dynamisch aufgerufen werdenSQL. Ihr Datenbankcode kann die Werte dieser Zeichenfolgenvariablen ändern. Um sicherzustellen, dass AWS SCT immer der neueste Wert dieser Zeichenkettenvariablen konvertiert wird, wählen Sie Dynamischen SQL Code konvertieren, der in aufgerufenen Routinen erstellt wurde.
-
Um dieses Problem zu beheben, unterstützen SQL Postgre-Version 10 und frühere Versionen keine Verfahren. Wenn Sie oder Ihre Benutzer mit der Verwendung von Prozeduren in Postgre nicht vertraut sindSQL, AWS SCT können Sie Oracle-Prozeduren in SQL Postgre-Funktionen konvertieren. Wählen Sie dazu Verfahren in Funktionen konvertieren aus.
-
Um zusätzliche Informationen zu den aufgetretenen Aktionspunkten zu erhalten. Zu diesem Zweck können Sie dem Erweiterungspaket bestimmte Funktionen hinzufügen, indem Sie bei Migrationsproblemen mit den nächsten Schweregraden die Option Hinzufügen bei Ausnahmeauslösung auswählen. Wählen Sie anschließend Schweregrade zum Auslösen benutzerdefinierter Ausnahmen aus.
-
Um mit einer Oracle-Quelldatenbank zu arbeiten, die Einschränkungen mit den automatisch generierten Namen enthalten kann. Wenn Ihr Quellcode diese Namen verwendet, stellen Sie sicher, dass Sie die Option Vom System generierte Constraint-Namen mithilfe der ursprünglichen Quellnamen konvertieren auswählen. Wenn Ihr Quellcode diese Einschränkungen verwendet, aber nicht ihre Namen verwendet, deaktivieren Sie diese Option, um die Konvertierungsgeschwindigkeit zu erhöhen.
-
Um zu überprüfen, ob Ihre Datenbank und Anwendungen in unterschiedlichen Zeitzonen ausgeführt werden. AWS SCT Emuliert 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 Option Zeitzone auf der Clientseite der Zeitzone auf dem Server.
-
Um zu überprüfen, ob Ihre Quell- und Zieldatenbanken in unterschiedlichen Zeitzonen laufen. Wenn dies der Fall ist, gibt die Funktion, die die
SYSDATE
integrierte Oracle-Funktion emuliert, andere Werte zurück als die Quellfunktion. Um sicherzustellen, dass Ihre Quell- und Zielfunktionen dieselben Werte zurückgeben, wählen Sie Standardzeitzone für die SYSDATE Emulation festlegen. -
Um die Funktionen der Oracle-Erweiterung in Ihrem konvertierten Code zu verwenden. Wählen Sie dazu unter Orace-Implementierung verwenden die Funktionen aus, die Sie verwenden möchten. Weitere Informationen zu Oracle finden Sie unter orafce on.
GitHub
Oracle-Sequenzen konvertieren
AWS SCT konvertiert 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
-
Öffnen Sie Ihr AWS SCT Projekt mit Oracle als Quelle.
-
Wählen Sie Einstellungen und dann Konvertierungseinstellungen.
-
Wählen Sie in der oberen Liste Oracle und dann Oracle — Postgre SQL aus. AWS SCT zeigt alle verfügbaren Einstellungen für die Konvertierung von Oracle nach Postgre SQL an.
-
Wählen Sie Konvertierte Sequenzen mit dem letzten auf der Quellseite generierten Wert auffüllen.
-
Wählen Sie „OK“, um die Einstellungen zu speichern und das Dialogfeld mit den Konvertierungseinstellungen zu schließen.
Oracle wird konvertiert ROWID
In einer Oracle-Datenbank enthält die ROWID Pseudospalte die Adresse der Tabellenzeile. Die ROWID Pseudospalte ist einzigartig in Oracle, sodass die ROWID Pseudospalte in eine Datenspalte in Postgre AWS SCT konvertiert wird. SQL Mit dieser Konvertierung können Sie die Informationen behalten. ROWID
Bei der Konvertierung der ROWID Pseudospalte AWS SCT kann eine Datenspalte mit dem bigint
Datentyp erstellt werden. Wenn kein Primärschlüssel vorhanden ist, AWS SCT wird die ROWID Spalte als Primärschlüssel festgelegt. Wenn ein Primärschlüssel vorhanden ist, AWS SCT wird für die ROWID Spalte eine eindeutige Einschränkung festgelegt.
Wenn Ihr Quelldatenbankcode Operationen enthältROWID, die Sie nicht mit einem numerischen Datentyp ausführen AWS SCT können, können Sie eine Datenspalte mit dem character varying
Datentyp erstellen.
Um eine Datenspalte für Oracle ROWID für ein Projekt zu erstellen
-
Öffnen Sie Ihr AWS SCT Projekt mit Oracle als Quelle.
-
Wählen Sie Einstellungen und dann Konvertierungseinstellungen.
-
Wählen Sie in der oberen Liste Oracle und dann Oracle — Postgre SQL aus. AWS SCT zeigt alle verfügbaren Einstellungen für die Konvertierung von Oracle nach Postgre SQL an.
-
Führen Sie für Generate row ID einen der folgenden Schritte aus:
-
Wählen Sie Als Identität generieren aus, um eine numerische Datenspalte zu erstellen.
-
Wählen Sie Als Zeichendomänentyp generieren, um eine Zeichendatenspalte zu erstellen.
-
-
Wählen Sie OK, um die Einstellungen zu speichern und das Dialogfeld mit den Konvertierungseinstellungen zu schließen.
Oracle Dynamic wird konvertiert SQL
Oracle bietet zwei Möglichkeiten zur Implementierung von DynamicSQL: durch die Verwendung einer EXECUTE IMMEDIATE Anweisung oder durch das Aufrufen von Prozeduren im SQL Paket DBMS _. Wenn Ihre Oracle-Quelldatenbank dynamische Objekte enthältSQL, verwenden Sie diese, AWS SCT um dynamische SQL Oracle-Anweisungen nach Postgre SQL zu konvertieren.
Um Oracle-Dynamic in Postgre SQL zu konvertieren SQL
Öffnen Sie Ihr AWS SCT Projekt mit Oracle als Quelle.
Wählen Sie SQL in der Oracle-Quellstrukturansicht ein Datenbankobjekt, das Dynamic verwendet.
Ö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 existieren. Der folgende Screenshot zeigt die konvertierte Prozedur unterhalb der Oracle-Prozedur mit DynamikSQL.
Oracle-Partitionen konvertieren
AWS SCT unterstützt derzeit die folgenden Partitionierungsmethoden:
-
Bereich
-
Auflisten
-
Mehrspaltiger Bereich
-
Hash
-
Zusammengesetzt (Listenliste, Bereichsliste, Listenbereich, Listen-Hash, Bereichs-Hash, Hash-Hash)