Migration d'applications à partir de bases de données MySQL vers Autonomous Database
Vous pouvez migrer des instructions SQL de MySQL vers Oracle SQL et les exécuter sur Autonomous Database.
- Conversion d'instructions MySQL en instructions SQL Oracle
Vous pouvez convertir des instructions SQL écrites dans MySQL en instructions SQL Oracle et exécuter les instructions traduites sur Autonomous Database. - Exécution d'instructions MySQL dans Autonomous Database
Vous pouvez traduire et exécuter des instructions MySQL de manière interactive dans Autonomous Database. - Migration de fichiers MySQL vers Oracle SQL
Vous pouvez migrer un fichier contenant des instructions MySQL vers un fichier contenant des instructions SQL Oracle. - Limites relatives à la migration et à la conversion des instructions MySQL en instructions SQL Oracle
Cette section récapitule les limites relatives à la migration des instructions SQL de MySQL vers Oracle SQL.
Rubrique parent : Migration d'applications de SQL non Oracle vers SQL Oracle
Convertir des instructions MySQL en instructions SQL Oracle
Vous pouvez convertir des instructions SQL écrites dans MySQL en instructions SQL Oracle et exécuter les instructions traduites sur Autonomous Database.
Utilisez DBMS_CLOUD_MIGRATION.MIGRATE_SQL
pour convertir une instruction MySQL en instruction SQL Oracle. Il existe des variantes de procédure et de fonction de DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Migration de l'instruction MySQL vers Oracle SQL avec la procédure MIGRATE_SQL
L'exemple suivant accepte l'instruction SQL écrite dans MySQL en tant qu'entrée, convertit l'instruction en instruction SQL Oracle, affecte l'instruction SQL traduite à output_sql_result
et affiche 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
indique l'instruction MySQL.
Le paramètre output_sql
stocke le code SQL traduit.
Le paramètre source_db
indique MySQL comme nom de base de données.
Pour plus d'informations, reportez-vous à Procédure et fonction MIGRATE_SQL.
Migration de l'instruction MySQL vers Oracle SQL avec la fonction MIGRATE_SQL
L'exemple suivant montre la fonction DBMS_CLOUD_MIGRATION.MIGRATE_SQL
dans une instruction SELECT
. L'entrée de la fonction est une instruction MySQL et la fonction renvoie l'instruction traduite 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, reportez-vous à Procédure et fonction MIGRATE_SQL.
Remarques relatives à l'exécution de DBMS_CLOUD_MIGRATION.MIGRATE_SQL
:
-
Une erreur peut survenir lors de la conversion si l'instruction SQL d'entrée n'est pas prise en charge dans Oracle SQL. Pour plus d'informations, reportez-vous à Limites relatives à la migration et à la traduction des instructions MySQL vers Oracle SQL.
-
Les sous-programmes
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
n'acceptent qu'une seule instruction SQL comme entrée. Par conséquent, une seule instruction SQL peut être convertie par appel.
Exécution d'instructions MySQL dans Autonomous Database
Vous pouvez traduire et exécuter des instructions MySQL de manière interactive dans votre instance Autonomous Database.
Utilisez la procédure ENABLE_TRANSLATION
pour activer la traduction en temps réel des instructions SQL écrites dans MySQL. Une fois la traduction activée dans une session, les instructions MySQL sont automatiquement traduites et exécutées en tant qu'instructions SQL Oracle, et vous pouvez voir les résultats.
ENABLE_TRANSLATION
, vous pouvez effectuer les opérations suivantes de manière interactive dans une session :
-
Créez les tables. Par exemple, créez les tables
MOVIE
etINVENTORY
. -
Insérer des données dans les tables.
-
Tables des requêtes.
-
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, procédez comme suit :
Vous pouvez interroger la vue V$MAPPED_SQL
pour répertorier les instructions MySQL traduites et mises en correspondance en mémoire avec les instructions SQL Oracle.
Exemples :
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, reportez-vous à V$MAPPED_SQL.
Migrer des fichiers MySQL vers Oracle SQL
Vous pouvez migrer un fichier contenant des instructions MySQL vers un fichier contenant des instructions SQL Oracle.
La procédure DBMS_CLOUD_MIGRATION.MIGRATE_FILE
convertit les instructions SQL dans un fichier MySQL dans Object Storage et génère un nouveau fichier contenant Oracle SQL.
Vous devez au préalable télécharger des fichiers MySQL avec une extension .sql
vers un emplacement dans Object Storage. Les exemples suivants utilisent le fichier mysqltest.sql
téléchargé vers Object Storage. Pour plus d'informations, reportez-vous à Mise des données dans le stockage d'objets.
Pour migrer des fichiers MySQL vers Oracle SQL, procédez comme suit :
Exécutez la requête suivante pour afficher 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;
Si vous créez des informations d'identification à la place du principal de ressource, OCI$RESOURCE_PRINCIPAL
, indiquez le nom des informations d'identification dans le paramètre credential_name
.
Pour plus d'informations, reportez-vous à Procédure et fonction GET_OBJECT.
Limites relatives à la migration et à la traduction des instructions MySQL vers Oracle SQL
Cette section récapitule les limites de migration des instructions SQL de MySQL vers Oracle SQL.
Lors de la migration de la variante de base de données MySQL vers Oracle SQL, tenez compte des restrictions suivantes :
-
Variables globales définies par l'utilisateur : les variables globales définies par l'utilisateur MySQL déclarées au format
@var_name
ne 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 placés entre guillemets doubles sont pris en charge. -
Délimiteurs :
-
Pour les fonctions et les procédures, seuls les séparateurs
$$
et//
sont pris en charge. -
Pour les instructions 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)