Migrer des applications de bases de données MySQL vers une base de données Autonomous AI Database
Vous pouvez migrer des énoncés SQL de MySQL vers Oracle SQL et exécuter les énoncés sur Autonomous AI Database.
- Convertir les énoncés MySQL en énoncés Oracle SQL
Vous pouvez traduire les énoncés SQL écrits dans MySQL en énoncés Oracle SQL et exécuter les énoncés traduits sur Autonomous AI Database. - Exécuter les énoncés MySQL dans la base de données d'IA autonome
Vous pouvez traduire et exécuter de manière interactive les énoncés MySQL dans votre base de données d'IA autonome. - Migrer des fichiers MySQL vers Oracle SQL
Vous pouvez migrer un fichier contenant des énoncés MySQL vers un fichier contenant des énoncés Oracle SQL. - Limitations pour la migration et la traduction des énoncés MySQL vers Oracle SQL
Cette section résume les limites pour la migration des énoncés SQL de MySQL vers Oracle SQL.
Rubrique parent : Migrer des applications de SQL non Oracle vers Oracle SQL
Traduire les énoncés MySQL en SQL Oracle
Vous pouvez traduire les énoncés SQL écrits dans MySQL vers Oracle SQL et exécuter les énoncés traduits sur Autonomous AI Database.
Utilisez DBMS_CLOUD_MIGRATION.MIGRATE_SQL pour traduire un énoncé MySQL en SQL Oracle. Il existe des variantes de procédure et de fonction de DBMS_CLOUD_MIGRATION.MIGRATE_SQL.
Migrer l'énoncé MySQL vers Oracle SQL avec la procédure MIGRATE_SQL
L'exemple suivant accepte l'énoncé SQL écrit dans MySQL en tant qu'entrée, traduit l'énoncé dans Oracle SQL, affecte l'énoncé SQL traduit à output_sql_result et imprime le résultat :
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));
Le paramètre original_sql spécifie l'énoncé MySQL.
Le paramètre output_sql stocke l'énoncé SQL traduit.
Le paramètre source_db spécifie MySQL comme nom de base de données.
Pour plus d'informations, voir MIGRATE_SQL Procédure et fonction.
Migrer l'énoncé MySQL vers Oracle SQL avec la fonction MIGRATE_SQL
L'exemple suivant présente la fonction DBMS_CLOUD_MIGRATION.MIGRATE_SQL dans un énoncé SELECT. L'entrée de la fonction est un énoncé MySQL et la fonction retourne l'énoncé traduit dans Oracle SQL :
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);
Pour plus d'informations, voir MIGRATE_SQL Procédure et fonction.
Notes pour l'exécution de DBMS_CLOUD_MIGRATION.MIGRATE_SQL :
-
Vous pouvez rencontrer une erreur lors de la conversion si l'énoncé SQL d'entrée n'est pas pris en charge dans Oracle SQL. Pour plus d'informations, voir Limitations pour la migration et la traduction des énoncés MySQL en SQL Oracle.
-
Les sous-programmes
DBMS_CLOUD_MIGRATION.MIGRATE_SQLn'acceptent qu'un seul énoncé SQL en tant qu'entrée. Ainsi, une seule instruction SQL peut être traduite par appel.
Exécuter les énoncés MySQL dans Autonomous AI Database
Vous pouvez traduire et exécuter de manière interactive les énoncés MySQL dans votre base de données d'intelligence artificielle autonome.
Utilisez la procédure ENABLE_TRANSLATION pour activer la traduction en temps réel des énoncés SQL écrits dans MySQL. Après avoir activé la traduction dans une session, les énoncés MySQL sont automatiquement traduits et exécutés en tant qu'énoncés Oracle SQL, et vous pouvez voir les résultats.
ENABLE_TRANSLATION, vous pouvez effectuer de manière interactive les opérations suivantes dans une session :
-
Créez les tables. Par exemple, créez les tables
MOVIEetINVENTORY. -
Insérer les données dans les tables.
-
tables d'interrogation;
-
Effectuez des opérations JOIN sur les tables. Par exemple, vous pouvez effectuer une jointure externe gauche sur des tables.
Pour activer la traduction avec MySQL et exécuter des commandes :
Vous pouvez interroger la vue V$MAPPED_SQL pour lister les énoncés MySQL traduits et mappés en mémoire aux énoncés SQL Oracle.
Exemple :
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';Pour plus d'informations, voir V$MAPPED_SQL.
Migrer les fichiers MySQL vers Oracle SQL
Vous pouvez migrer un fichier contenant des énoncés MySQL vers un fichier contenant des énoncés Oracle SQL.
La procédure DBMS_CLOUD_MIGRATION.MIGRATE_FILE traduit les énoncés SQL dans un fichier MySQL du service de stockage d'objets et génère un nouveau fichier contenant Oracle SQL.
Vous devez au préalable charger un ou plusieurs fichiers MySQL ayant l'extension .sql dans un emplacement du stockage d'objets. Les exemples suivants utilisent le fichier mysqltest.sql qui est chargé dans le stockage d'objets. Pour plus d'informations, voir Mettre des données dans le stockage d'objets.
Pour migrer des fichiers MySQL vers Oracle SQL :
Exécutez l'interrogation suivante pour voir le contenu du fichier mysqltest_oracle.sql :
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;
Sinon, si vous créez des données d'identification au lieu du principal de ressource, OCI$RESOURCE_PRINCIPAL, spécifiez le nom des données d'identification dans le paramètre credential_name.
Pour plus d'informations, voir GET_OBJECT Procédure et fonction.
Limites pour la migration et la traduction des énoncés MySQL vers Oracle SQL
Cette section résume les limitations pour la migration des énoncés SQL de MySQL vers Oracle SQL.
Notez les restrictions suivantes lors de la migration de la version de base de données MySQL vers Oracle SQL :
-
Variables globales définies par l'utilisateur : Les variables globales définies par l'utilisateur MySQL déclarées au format
@var_namene sont pas prises en charge lors de la conversion en SQL Oracle. -
Identificateurs entre guillemets : Les identificateurs MySQL qui sont entourés de backticks (`), tels que
`var_name`, ne sont pas pris en charge lors de la conversion en SQL Oracle. Seuls les identificateurs sans guillemets ou entre guillemets sont pris en charge. -
Séparateurs :
-
Pour les fonctions et les procédures, seuls les délimiteurs
$$et//sont pris en charge. -
Pour les énoncés SQL, seul le délimiteur
;est pris en charge.
-
-
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)