Migrer des applications de bases de données SQL Server vers une base de données Autonomous AI Database
Vous pouvez migrer des énoncés SQL de SQL Server vers Oracle SQL et exécuter ces énoncés sur Autonomous AI Database.
- Convertir les énoncés SQL Server en Oracle SQL
Vous pouvez traduire les énoncés SQL écrits dans SQL Server en Oracle SQL et exécuter les énoncés traduits sur Autonomous AI Database. - Exécuter les énoncés SQL Server dans Autonomous AI Database
Vous pouvez traduire et exécuter des énoncés SQL Server de manière interactive dans votre base de données Autonomous AI Database. - Migrer des fichiers SQL Server vers Oracle SQL
Vous pouvez migrer un fichier contenant des énoncés SQL Server vers un fichier contenant des énoncés Oracle SQL. - Limitations pour la migration et la traduction des énoncés SQL Server vers Oracle SQL
Cette section résume les limitations pour la migration des énoncés SQL de SQL Server vers Oracle SQL.
Rubrique parent : Migrer des applications de SQL non Oracle vers Oracle SQL
Traduire les instructions SQL Server en SQL Oracle
Vous pouvez traduire les énoncés SQL écrits dans SQL Server vers Oracle SQL et exécuter les énoncés traduits sur Autonomous AI Database.
Utilisez DBMS_CLOUD_MIGRATION.MIGRATE_SQL pour traduire un énoncé SQL Server vers Oracle SQL. Il existe des variantes de procédure et de fonction de DBMS_CLOUD_MIGRATION.MIGRATE_SQL.
Migrer l'énoncé SQL Server vers Oracle SQL avec la procédure MIGRATE_SQL
L'exemple suivant accepte l'énoncé SQL écrit dans SQL Server 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 [dbo].[movie] ([film_id] [int], [title] [varchar](20));',
output_sql => output_sql_result,
source_db => 'SQLSERVER');
DBMS_OUTPUT.PUT_LINE (output_sql_result);
END;
/
Output
–-------------------------------------------------------------
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(20));
Le paramètre original_sql spécifie l'énoncé SQL SQL Server.
Le paramètre output_sql stocke l'énoncé SQL traduit.
Le paramètre source_db spécifie la base de données SQL Server.
Pour plus d'informations, voir MIGRATE_SQL Procédure et fonction.
Migrer l'énoncé SQL Server vers Oracle SQL à l'aide de 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 une instruction SQL Server et la fonction retourne l'instruction traduite dans Oracle SQL :
SELECT DBMS_CLOUD_MIGRATION.MIGRATE_SQL(
'CREATE TABLE [dbo].[movie] ([film_id] [int], [title] [varchar](20));','SQLSERVER') AS OUTPUT
FROM DUAL;
OUTPUT
------------------------------------------------------------------------------
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(20));Utilisez le paramètre SQLSERVER pour traduire à partir de Microsoft SQL Server.
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 SQL Server vers Oracle SQL.
-
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 SQL Server dans Autonomous AI Database
Vous pouvez traduire et exécuter des énoncés SQL Server de manière interactive dans votre base de données Autonomous AI Database.
Utilisez la procédure ENABLE_TRANSLATION pour activer la traduction en temps réel des énoncés SQL écrits dans SQL Server. Après avoir activé la traduction dans une session, les énoncés SQL non Oracle sont automatiquement traduits et exécutés en tant qu'énoncés SQL Oracle, 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 des instructions SQL Server et exécuter des commandes :
Vous pouvez interroger la vue V$MAPPED_SQL pour lister les énoncés SQL Server traduits et mappés en mémoire avec les é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 = 'SQLSERVER'
AND o.object_type = 'TRANSLATION PROFILE';Pour plus d'informations, voir V$MAPPED_SQL.
Migrer des fichiers SQL Server vers Oracle SQL
Vous pouvez migrer un fichier contenant des instructions SQL Server vers un fichier contenant des instructions SQL Oracle.
La procédure DBMS_CLOUD_MIGRATION.MIGRATE_FILE traduit les énoncés SQL dans un fichier SQL Server 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 SQL Server avec l'extension .sql dans un emplacement du stockage d'objets. Les exemples suivants utilisent le fichier mssqltest.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 SQL Server vers Oracle SQL :
Exécutez l'interrogation suivante pour voir le contenu du fichier mssqltest_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;
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(20));
INSERT INTO movie (film_id, title) VALUES (123, 'Tangled');
INSERT INTO movie (film_id, title) VALUES (234, 'Frozen');
CREATE TABLE inventory(film_id NUMBER(10), inventory_id NUMBER(10));
INSERT INTO inventory(film_id, inventory_id) VALUES (123, 223);
INSERT INTO inventory(film_id, inventory_id) VALUES (234, 334);
SELECT * FROM movie;
SELECT * FROM inventory;
SELECT m.film_id, m.title, inventory_id FROM movie m LEFT JOIN inventory ON inventory.film_id = m.film_id;
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 SQL Server vers Oracle SQL
Cette section résume les limitations pour la migration des instructions SQL de SQL Server vers Oracle SQL.
-
ISJSON() -
OPENJSON()