Anwendungen von MySQL-Datenbanken zu Autonomous Database migrieren
Sie können SQL-Anweisungen von MySQL zu Oracle SQL migrieren und die Anweisungen in Autonomous Database ausführen.
- MySQL-Anweisungen in Oracle SQL übersetzen
Sie können in MySQL geschriebene SQL-Anweisungen in Oracle SQL übersetzen und die übersetzten Anweisungen in Autonomous Database ausführen. - MySQL-Anweisungen in Autonomous Database ausführen
Sie können MySQL-Anweisungen in Autonomous Database interaktiv übersetzen und ausführen. - MySQL-Dateien in Oracle SQL migrieren
Sie können eine Datei mit MySQL-Anweisungen in eine Datei mit Oracle SQL-Anweisungen migrieren. - Einschränkungen für die Migration und Übersetzung von MySQL-Anweisungen in Oracle SQL
In diesem Abschnitt werden die Einschränkungen für die Migration von SQL-Anweisungen von MySQL zu Oracle SQL zusammengefasst.
Übergeordnetes Thema: Anwendungen von Nicht-Oracle SQL in Oracle SQL migrieren
MySQL-Anweisungen in Oracle SQL übersetzen
Sie können in MySQL geschriebene SQL-Anweisungen in Oracle SQL übersetzen und die übersetzten Anweisungen in Autonomous Database ausführen.
Verwenden Sie DBMS_CLOUD_MIGRATION.MIGRATE_SQL
, um eine MySQL-Anweisung in Oracle SQL zu übersetzen. Es gibt Verfahrens- und Funktionsvarianten von DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
MySQL-Anweisung mit der Prozedur MIGRATE_SQL in Oracle SQL migrieren
Das folgende Beispiel akzeptiert die in MySQL geschriebene SQL-Anweisung als Eingabe, übersetzt die Anweisung in Oracle SQL, weist die übersetzte SQL-Anweisung output_sql_result
zu und gibt das Ergebnis aus:
SET SERVEROUTPUT ON
declare output_sql_result CLOB;
BEGIN
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
(
original_sql => 'CREATE TABLE movie (movie_id INT, title VARCHAR(255));',
output_sql => output_sql_result,
source_db => 'MYSQL');
DBMS_OUTPUT.PUT_LINE (output_sql_result);
END;
/
OUTPUT
–-------------------------------------------------------------
CREATE TABLE movie (movie_id NUMBER(10), title VARCHAR2(255));
Der Parameter original_sql
gibt die Anweisung MySQL an.
Der Parameter output_sql
speichert die übersetzte SQL.
Der Parameter source_db
gibt MySQL als Datenbanknamen an.
Weitere Informationen finden Sie unter MIGRATE_SQL Prozedur und Funktion.
MySQL-Anweisung mit der Funktion MIGRATE_SQL zu Oracle SQL migrieren
Das folgende Beispiel zeigt die Funktion DBMS_CLOUD_MIGRATION.MIGRATE_SQL
innerhalb einer SELECT
-Anweisung. Die Funktionseingabe ist eine MySQL-Anweisung, und die Funktion gibt die übersetzte Anweisung in Oracle SQL zurück:
SELECT DBMS_CLOUD_MIGRATION.MIGRATE_SQL
(
'CREATE TABLE movie (film_id INT, title VARCHAR(255));','MYSQL') AS output FROM DUAL;
OUTPUT
------------------------------------------------------------------------------
create table cars (brand VARCHAR2(255), model VARCHAR2(255);
Weitere Informationen finden Sie unter MIGRATE_SQL Prozedur und Funktion.
Hinweise zur Ausführung von DBMS_CLOUD_MIGRATION.MIGRATE_SQL
:
-
Bei der Übersetzung kann ein Fehler auftreten, wenn die eingegebene SQL-Anweisung in Oracle SQL nicht unterstützt wird. Weitere Informationen finden Sie unter Einschränkungen für die Migration und Übersetzung von MySQL-Anweisungen in Oracle SQL.
-
Die Unterprogramme
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
akzeptieren nur eine SQL-Anweisung als Eingabe. Daher kann pro Aufruf nur eine einzelne SQL-Anweisung übersetzt werden.
Übergeordnetes Thema: Anwendungen von MySQL-Datenbanken in Autonomous Database migrieren
MySQL-Anweisungen in Autonomous Database ausführen
Sie können MySQL-Anweisungen interaktiv in Autonomous Database übersetzen und ausführen.
Verwenden Sie die Prozedur ENABLE_TRANSLATION
, um die Echtzeitübersetzung von in MySQL geschriebenen SQL-Anweisungen zu aktivieren. Nachdem Sie die Übersetzung in einer Session aktiviert haben, werden MySQL-Anweisungen automatisch übersetzt und als Oracle SQL-Anweisungen ausgeführt. Die Ergebnisse werden angezeigt.
ENABLE_TRANSLATION
aktiviert haben, können Sie in einer Session interaktiv Folgendes ausführen:
-
Erstellen Sie die Tabellen. Beispiel: Erstellen Sie die Tabellen
MOVIE
undINVENTORY
. -
Daten in Tabellen einfügen
-
Abfragetabellen.
-
JOIN-Vorgänge für Tabellen ausführen Beispiel: Sie können einen linken Outer Join für Tabellen ausführen.
So aktivieren Sie die Übersetzung mit MySQL und führen Befehle aus:
Sie können die View V$MAPPED_SQL
abfragen, um die MySQL-Anweisungen aufzulisten, die übersetzt und Oracle SQL-Anweisungen im Speicher zugeordnet sind.
Beispiele:
SELECT v.*
FROM v$mapped_sql v, dba_objects o
WHERE v.sql_translation_profile_id = o.object_id
AND o.object_name = 'MYSQL'
AND o.object_type = 'TRANSLATION PROFILE';
Weitere Informationen finden Sie unter V$MAPPED_SQL.
Übergeordnetes Thema: Anwendungen von MySQL-Datenbanken in Autonomous Database migrieren
MySQL-Dateien zu Oracle SQL migrieren
Sie können eine Datei mit MySQL-Anweisungen in eine Datei mit Oracle SQL-Anweisungen migrieren.
Die Prozedur DBMS_CLOUD_MIGRATION.MIGRATE_FILE
übersetzt SQL-Anweisungen in eine MySQL-Datei in Object Storage und generiert eine neue Datei mit Oracle SQL.
Laden Sie eine oder mehrere MySQL-Dateien mit der Erweiterung .sql
in ein Verzeichnis in Object Storage hoch. In den folgenden Beispielen wird die Datei mysqltest.sql
verwendet, die in Object Storage hochgeladen wird. Weitere Informationen finden Sie unter Daten in Objektspeicher einfügen.
So migrieren Sie MySQL-Dateien in Oracle SQL:
Führen Sie die folgende Abfrage aus, um den Inhalt der Datei mysqltest_oracle.sql
anzuzeigen:
SELECT UTL_RAW.CAST_TO_VARCHAR2 (DBMS_CLOUD.GET_OBJECT(
credential_name => 'OCI$RESOURCE_PRINCIPAL',
object_uri => 'https://objectstorage.region.oraclecloud.com/n/namespace/b/bucket/o/files'))
FROM dual;
UTL_RAW.CAST_TO_VARCHAR2(DBMS_CLOUD.GET_OBJECT(CREDENTIAL_NAME=>'CRED1',OBJECT_U
--------------------------------------------------------------------------------
DROP TABLE movie;
DROP TABLE inventory;
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(255));
INSERT INTO movie (film_id, title) VALUES (123, 'Tangled');
INSERT INTO movie (film_id, title) VALUES (234, 'Frozen');
CREATE TABLE movie (film_id NUMBER(10), inventory_id NUMBER(10));
INSERT INTO movie (film_id, inventory_id) VALUES (123, 223);
INSERT INTO inventory (film_id, inventory_id) VALUES (234, 334);
SELECT * FROM movie;
Wenn Sie alternativ Zugangsdaten anstelle des Resource Principals OCI$RESOURCE_PRINCIPAL
erstellen, geben Sie den Zugangsdatennamen im Parameter credential_name
an.
Weitere Informationen finden Sie unter GET_OBJECT Prozedur und Funktion.
Übergeordnetes Thema: Anwendungen von MySQL-Datenbanken in Autonomous Database migrieren
Einschränkungen bei Migration und Übersetzung von MySQL-Anweisungen in Oracle SQL
In diesem Abschnitt werden die Einschränkungen für die Migration von SQL-Anweisungen von MySQL zu Oracle SQL zusammengefasst.
Beachten Sie die folgenden Einschränkungen bei der Migration von MySQL-Datenbank-Flavor zu Oracle SQL:
-
Benutzerdefinierte globale Variablen: MySQL Benutzerdefinierte globale Variablen, die mit dem Format
@var_name
deklariert wurden, werden bei der Übersetzung in Oracle SQL nicht unterstützt. -
Bezeichner in Anführungszeichen: MySQL-Bezeichner, die in Backticks (`) eingeschlossen sind, wie
`var_name`
, werden bei der Übersetzung in Oracle SQL nicht unterstützt. Es werden nur IDs unterstützt, die ohne Anführungszeichen stehen oder in doppelte Anführungszeichen gesetzt sind. -
Trennzeichen:
-
Bei Funktionen und Prozeduren werden nur
$$
- und//
-Trennzeichen unterstützt. -
Bei SQL-Anweisungen wird nur das Trennzeichen
;
unterstützt.
-
-
ADDTIME(datetime, time)
-
AES_DECRYPT(crypt_str, key_str)
-
AES_ENCRYPT(str, key_str)
-
BIN(num)
-
CONV(num, from_base, to_base)
-
CONVERT_TZ(datetime, from, to)
-
CRC32(exp)
-
DATE_ADD(date, interval)
Übergeordnetes Thema: Anwendungen von MySQL-Datenbanken in Autonomous Database migrieren