Migración de aplicaciones de bases de datos de SQL Server a Autonomous Database
Puede migrar sentencias SQL de SQL Server a Oracle SQL y ejecutar las sentencias en Autonomous Database.
- Traducción de sentencias de SQL Server a Oracle SQL
Puede traducir sentencias SQL escritas en SQL Server a Oracle SQL y ejecutar las sentencias traducidas en Autonomous Database. - Ejecución de sentencias de SQL Server en Autonomous Database
Puede traducir y ejecutar de forma interactiva sentencias de SQL Server en Autonomous Database. - Migración de archivos de SQL Server a Oracle SQL
Puede migrar un archivo que contenga sentencias de SQL Server a un archivo que contenga sentencias SQL de Oracle. - Limitaciones para la migración y traducción de sentencias de SQL Server a Oracle SQL
En esta sección se resumen las limitaciones para migrar sentencias SQL de SQL Server a Oracle SQL.
Traducir sentencias de SQL Server a Oracle SQL
Puede traducir sentencias SQL escritas en SQL Server a Oracle SQL y ejecutar las sentencias traducidas en Autonomous Database.
Utilice DBMS_CLOUD_MIGRATION.MIGRATE_SQL
para convertir una sentencia de SQL Server en Oracle SQL. Hay variantes de procedimiento y función de DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Migrar sentencia de SQL Server a Oracle SQL con procedimiento MIGRATE_SQL
El siguiente ejemplo acepta la sentencia SQL escrita en SQL Server como entrada, traduce la sentencia a Oracle SQL, asigna la sentencia SQL traducida a output_sql_result
e imprime el resultado:
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));
El parámetro original_sql
especifica la sentencia SQL de SQL Server.
El parámetro output_sql
almacena el SQL traducido.
El parámetro source_db
especifica la base de datos de SQL Server.
Consulte MIGRATE_SQL Procedimiento y función para obtener más información.
Migrar sentencia de SQL Server a Oracle SQL con la función MIGRATE_SQL
En el siguiente ejemplo se muestra la función DBMS_CLOUD_MIGRATION.MIGRATE_SQL
dentro de una sentencia SELECT
. La entrada de función es una sentencia de SQL Server y la función devuelve la sentencia traducida en 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));
Utilice el parámetro SQLSERVER
para traducir desde Microsoft SQL Server.
Consulte MIGRATE_SQL Procedimiento y función para obtener más información.
Notas para ejecutar DBMS_CLOUD_MIGRATION.MIGRATE_SQL
:
-
Puede que aparezca un error durante la conversión si la sentencia SQL de entrada no está soportada en Oracle SQL. Consulte Limitaciones para la migración y traducción de sentencias de SQL Server a Oracle SQL para obtener más información.
-
Los subprogramas
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
solo aceptan una sentencia SQL como entrada. Por lo tanto, solo se puede traducir una única sentencia SQL por llamada.
Ejecución de sentencias de SQL Server en Autonomous Database
Puede traducir y ejecutar de forma interactiva sentencias de SQL Server en Autonomous Database.
Utilice el procedimiento ENABLE_TRANSLATION
para activar la traducción en tiempo real de sentencias SQL escritas en SQL Server. Después de activar la traducción en una sesión, las sentencias SQL que no sean de Oracle se traducen y ejecutan automáticamente como sentencias SQL de Oracle, y puede ver los resultados.
ENABLE_TRANSLATION
, puede realizar de forma interactiva lo siguiente en una sesión:
-
Cree las tablas. Por ejemplo, cree las tablas
MOVIE
yINVENTORY
. -
Insertar Datos en las Tablas.
-
Tablas de consulta.
-
Realizar operaciones JOIN en tablas. Por ejemplo, puede realizar una unión externa izquierda en las tablas.
Para activar la traducción con sentencias SQL Server y ejecutar comandos:
Puede consultar la vista V$MAPPED_SQL
para mostrar las sentencias de SQL Server traducidas y asignadas en memoria a sentencias SQL de Oracle.
Por ejemplo:
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';
Consulte V$MAPPED_SQL para obtener más información.
Migración de archivos de SQL Server a Oracle SQL
Puede migrar un archivo que contenga sentencias SQL Server a un archivo que contenga sentencias SQL de Oracle.
El procedimiento DBMS_CLOUD_MIGRATION.MIGRATE_FILE
traduce sentencias SQL en un archivo de SQL Server en Object Storage y genera un nuevo archivo que contiene Oracle SQL.
Como requisito, cargue uno o más archivos de SQL Server con una extensión .sql
en una ubicación de Object Storage. En los siguientes ejemplos se utiliza el archivo mssqltest.sql
que se carga en Object Storage. Consulte Colocación de datos en Object Storage para obtener más información.
Para migrar archivos de SQL Server a Oracle SQL:
Ejecute la siguiente consulta para ver el contenido del archivo 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;
Como alternativa, si crea una credencial en lugar de la entidad de recurso, OCI$RESOURCE_PRINCIPAL
, especifique el nombre de credencial en el parámetro credential_name
.
Consulte GET_OBJECT Procedimiento y función para obtener más información.
Limitaciones para la migración y traducción de sentencias de SQL Server a Oracle SQL
En esta sección se resumen las limitaciones para migrar sentencias SQL de SQL Server a Oracle SQL.
-
ISJSON()
-
OPENJSON()