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 My SQL oder Amazon Aurora My SQL mit dem AWS Schema Conversion Tool
Um Oracle-Datenbankfunktionen in Ihrem konvertierten SQL My-Code zu emulieren, verwenden Sie das Erweiterungspaket Oracle to My SQL in. AWS SCT Weitere Informationen zu Erweiterungspaketen finden Sie unter Verwenden von Erweiterungspaketen mit AWS Schema Conversion Tool.
Themen
Berechtigungen für My SQL als Zieldatenbank
Die für My SQL als Ziel erforderlichen Rechte lauten wie folgt:
CREATEAM * . *
ALTERAM * . *
DROPAM * . *
INDEXAM * . *
REFERENCESAM * . *
SELECTAM * . *
CREATEVIEWAM * . *
SHOWVIEWAM * . *
TRIGGERAM * . *
CREATEROUTINEAM * . *
ALTERROUTINEAM * . *
EXECUTEAM * . *
CREATETEMPORARYTABLESAM * . *
AWS_LAMBDA_ACCESS
INSERT, UPDATE AUF AWS _ ORACLE _EXT. *
INSERTUPDATE, DELETE AUF AWS _ ORACLE _ EXT _DATA. *
Wenn Sie My SQL Database-Version 5.7 oder niedriger als Ziel verwenden, gewähren Sie statt AWS _ LAMBDA _ ACCESS die Berechtigung INVOKE LAMBDA *.*. Erteilen Sie für Meine SQL Datenbanken, Version 8.0 und höher, die AWS _ LAMBDA _ ACCESS -Berechtigung.
Sie können das folgende Codebeispiel verwenden, um einen Datenbankbenutzer zu erstellen und die Berechtigungen zu gewähren.
CREATE USER '
user_name
' IDENTIFIED BY 'your_password
'; GRANT CREATE ON *.* TO 'user_name
'; GRANT ALTER ON *.* TO 'user_name
'; GRANT DROP ON *.* TO 'user_name
'; GRANT INDEX ON *.* TO 'user_name
'; GRANT REFERENCES ON *.* TO 'user_name
'; GRANT SELECT ON *.* TO 'user_name
'; GRANT CREATE VIEW ON *.* TO 'user_name
'; GRANT SHOW VIEW ON *.* TO 'user_name
'; GRANT TRIGGER ON *.* TO 'user_name
'; GRANT CREATE ROUTINE ON *.* TO 'user_name
'; GRANT ALTER ROUTINE ON *.* TO 'user_name
'; GRANT EXECUTE ON *.* TO 'user_name
'; GRANT CREATE TEMPORARY TABLES ON *.* TO 'user_name
'; GRANT AWS_LAMBDA_ACCESS TO 'user_name
'; GRANT INSERT, UPDATE ON AWS_ORACLE_EXT.* TO 'user_name
'; GRANT INSERT, UPDATE, DELETE ON AWS_ORACLE_EXT_DATA.* TO 'user_name
';
Ersetzen Sie im vorherigen Beispiel user_name
durch den Namen Ihres Benutzers. Dann ersetze your_password
mit einem sicheren Passwort.
Wenn Sie My SQL Database-Version 5.7 oder niedriger als Ziel verwenden, verwenden Sie GRANT INVOKE LAMBDA ON *.* TO '
anstelle vonuser_name
'GRANT AWS_LAMBDA_ACCESS TO '
.user_name
'
Um Amazon RDS for My SQL oder Aurora My SQL als Ziel zu verwenden, setzen Sie den lower_case_table_names
Parameter auf1
. Dieser Wert bedeutet, dass der SQL My-Server Bezeichner von Objektnamen wie Tabellen, Indizes, Triggern und Datenbanken ohne Berücksichtigung der Groß- und Kleinschreibung behandelt. Wenn Sie die binäre Protokollierung in Ihrer Ziel-Instance aktiviert haben, setzen Sie den Parameter log_bin_trust_function_creators
auf 1
. In diesem Fall müssen Sie die Eigenschaften DETERMINISTIC
, READS SQL DATA
oder NO SQL
nicht verwenden, um gespeicherte Funktionen zu erstellen. Erstellen Sie zum Konfigurieren dieser Parameter eine neue DB-Parametergruppe oder ändern Sie eine vorhandene DB-Parametergruppe.
Einstellungen für die Konvertierung von Oracle zu My SQL
Um die SQL Konvertierungseinstellungen von Oracle to My zu bearbeiten, wählen Sie Einstellungen in AWS SCT und dann Konvertierungseinstellungen. Wählen Sie in der oberen Liste Oracle und dann Oracle — My ausSQL. AWS SCT zeigt alle verfügbaren Einstellungen für die SQL Konvertierung von Oracle in My an.
Die SQL Konvertierungseinstellungen von Oracle in My AWS SCT enthalten 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 dem entgegenzuwirken, kann Ihre Oracle-Quelldatenbank die
ROWID
Pseudospalte verwenden, aber My unterstützt SQL keine ähnliche Funktionalität. AWS SCT kann dieROWID
Pseudospalte im konvertierten Code emulieren. Wählen Sie dazu unter Zeilen-ID generieren? die Option Als Identität generieren aus. .Wenn Ihr Oracle-Quellcode die
ROWID
Pseudospalte nicht verwendet, wählen Sie Don't generate für Generate row ID? In diesem Fall arbeitet der konvertierte Code schneller. -
Um mit Ihrem Oracle-Quellcode zu arbeiten, wenn er die
TO_NUMBER
FunktionenTO_CHAR
TO_DATE
, und mit Parametern enthält, die My 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 die systemeigenen Funktionen My SQL
TO_CHAR
TO_DATE
, undTO_NUMBER
verwenden. 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 festzustellen, 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.
Überlegungen zur Migration
Wenn Sie Oracle in RDS for My SQL oder Aurora My konvertierenSQL, können Sie eine GOTO
Anweisung und ein Label verwenden, um die Reihenfolge zu ändern, in der Anweisungen ausgeführt werden. Alle SQL PL/-Anweisungen, die auf eine GOTO
Anweisung folgen, werden übersprungen, und die Verarbeitung wird an der Bezeichnung fortgesetzt. Sie können GOTO
Anweisungen und Labels an einer beliebigen Stelle innerhalb einer Prozedur, eines Batches oder eines Anweisungsblocks verwenden. Sie können auch nächste GOTO Anweisungen verwenden.
Meine verwendet SQL keine GOTO
Aussagen. Wenn Code AWS SCT konvertiert wird, der eine GOTO
Anweisung enthält, wird die Anweisung so konvertiert, dass sie eine BEGIN…END
LOOP…END LOOP
OR-Anweisung verwendet.
In der folgenden Tabelle finden Sie Beispiele dafür, wie GOTO
Anweisungen AWS SCT konvertiert werden.
Oracle-Anweisung | Meine SQL Aussage |
---|---|
|
|
|
|
|
|
Umwandlung des WITH Kontoauszugs in Oracle in RDS for My SQL oder Amazon Aurora My SQL
Sie verwenden die WITH Klausel (subquery_factoring) in Oracle, um einem Unterabfrageblock einen Namen (query_name) zuzuweisen. Sie können dann an mehreren Stellen in der Abfrage auf den Unterabfragenblock Bezug nehmen. Wenn ein Unterabfrageblock keine Links oder Parameter (local, procedure, function, package) enthält, AWS SCT konvertiert er die Klausel in eine Ansicht oder eine temporäre Tabelle.
Der Vorteil der Umwandlung der Klausel in eine temporäre Tabelle besteht darin, dass wiederholte Verweise auf die Unterabfrage effizienter sein können. Die größere Effizienz liegt darin, dass die Daten leicht aus der temporären Tabelle abgerufen werden können, anstatt von jeder Referenz benötigt zu werden. Sie können dies emulieren, indem Sie zusätzliche Ansichten oder eine temporäre Tabelle verwenden. Für den Ansichtsnamen wird das Format <procedure_name>$<subselect_alias>
verwendet.
Beispiele finden Sie in der folgenden Tabelle.
Oracle-Anweisung | Mein SQL Statement |
---|---|
|
|
|
|
|
|