Migrer des applications des bases de données SQL Server vers Autonomous Database
Vous pouvez migrer des instructions SQL de SQL Server vers Oracle SQL et les exécuter sur Autonomous Database.
- Conversion d'instructions SQL Server en instructions Oracle SQL
Vous pouvez convertir des instructions SQL écrites dans SQL Server en instructions Oracle SQL et exécuter les instructions traduites sur Autonomous Database. - Exécution d'instructions SQL Server dans Autonomous Database
Vous pouvez traduire et exécuter des instructions SQL Server de manière interactive dans votre instance Autonomous Database. - Migration de fichiers SQL Server vers Oracle SQL
Vous pouvez migrer un fichier contenant des instructions SQL Server vers un fichier contenant des instructions Oracle SQL. - Limites relatives à la migration et à la traduction des instructions SQL Server vers Oracle SQL
Cette section récapitule les limites relatives à la migration des instructions SQL de SQL Server vers Oracle SQL.
Rubrique parent : Migration d'applications d'instructions SQL non Oracle vers Oracle SQL
Convertir des instructions SQL Server en instructions Oracle SQL
Vous pouvez convertir les instructions SQL écrites dans SQL Server en instructions Oracle SQL et les exécuter sur Autonomous Database.
Utilisez DBMS_CLOUD_MIGRATION.MIGRATE_SQL
pour convertir une instruction SQL Server en instruction Oracle SQL. Il existe des variantes de procédure et de fonction de DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Migrer l'instruction SQL Server vers Oracle SQL avec la procédure MIGRATE_SQL
L'exemple suivant accepte l'instruction SQL écrite dans SQL Server en tant qu'entrée, traduit l'instruction en Oracle SQL, 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 [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
indique l'instruction SQL SQL SQL Server.
Le paramètre output_sql
stocke l'instruction SQL traduite.
Le paramètre source_db
indique la base de données SQL Server.
Pour plus d'informations, reportez-vous à la section MIGRATE_SQL Procedure and Function.
Migrer l'instruction SQL Server vers Oracle SQL avec la fonction MIGRATE_SQL
L'exemple suivant illustre la fonction DBMS_CLOUD_MIGRATION.MIGRATE_SQL
dans une instruction SELECT
. L'entrée de fonction est une instruction SQL Server et la fonction renvoie 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 convertir à partir de Microsoft SQL Server.
Pour plus d'informations, reportez-vous à la section MIGRATE_SQL Procedure and Function.
Remarques concernant 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 d'instructions SQL Server vers Oracle SQL.
-
Les sous-programmes
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
acceptent une seule instruction SQL en tant qu'entrée. Par conséquent, une seule instruction SQL peut être traduite par appel.
Exécution d'instructions SQL Server dans Autonomous Database
Vous pouvez traduire et exécuter des instructions SQL Server 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 SQL Server. Une fois la conversion activée dans une session, les instructions SQL non Oracle sont automatiquement converties et exécutées en 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 des tables.
-
Tables de requête.
-
Effectuez des opérations JOIN sur les tables. Par exemple, vous pouvez effectuer une jointure externe gauche sur les tables.
Pour activer la traduction à l'aide d'instructions SQL Server et d'exécutions de commandes :
Vous pouvez interroger la vue V$MAPPED_SQL
pour répertorier les instructions SQL Server traduites et mises en correspondance en mémoire avec les instructions SQL Oracle.
Par 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, reportez-vous à V$MAPPED_SQL.
Migrer les fichiers SQL Server vers Oracle SQL
Vous pouvez migrer un fichier contenant des instructions SQL Server vers un fichier contenant des instructions Oracle SQL.
La procédure DBMS_CLOUD_MIGRATION.MIGRATE_FILE
traduit les instructions SQL dans un fichier SQL Server dans Object Storage et génère un nouveau fichier contenant Oracle SQL.
Vous devez au préalable télécharger des fichiers SQL Server portant l'extension .sql
vers un emplacement sur Object Storage. Les exemples suivants utilisent le fichier mssqltest.sql
téléchargé vers Object Storage. Pour plus d'informations, reportez-vous à Mise de données dans le stockage d'objets.
Pour migrer des fichiers SQL Server vers Oracle SQL :
Exécutez la requête suivante pour afficher 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;
Si vous créez des informations d'identification au lieu 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 à la section GET_OBJECT Procedure and Function.
Limites de migration et de conversion des instructions SQL Server vers Oracle SQL
Cette section récapitule les limites de migration des instructions SQL de SQL Server vers Oracle SQL.
-
ISJSON()
-
OPENJSON()