Esegui migrazione applicazioni da database SQL Server ad Autonomous Database
È possibile eseguire la migrazione delle istruzioni SQL da SQL Server a Oracle SQL ed eseguire le istruzioni su Autonomous Database.
- Traduci le istruzioni di SQL Server in Oracle SQL
Puoi tradurre le istruzioni SQL scritte in SQL Server in Oracle SQL ed eseguire le istruzioni tradotte in Autonomous Database. - Esegui istruzioni di SQL Server in Autonomous Database
Puoi tradurre ed eseguire in modo interattivo istruzioni di SQL Server nell'Autonomous Database. - Eseguire la migrazione dei file di SQL Server in Oracle SQL
È possibile eseguire la migrazione di un file contenente le istruzioni SQL Server in un file contenente le istruzioni Oracle SQL. - Limitazioni per la migrazione e la traduzione delle istruzioni di SQL Server in Oracle SQL
Questa sezione riepiloga le limitazioni per la migrazione delle istruzioni SQL da SQL Server a Oracle SQL.
Converti istruzioni SQL Server in Oracle SQL
È possibile tradurre le istruzioni SQL scritte in SQL Server in Oracle SQL ed eseguire le istruzioni tradotte in Autonomous Database.
Utilizzare DBMS_CLOUD_MIGRATION.MIGRATE_SQL
per tradurre un'istruzione di SQL Server in Oracle SQL. Esistono varianti di procedura e funzione di DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Procedura di migrazione dell'istruzione SQL Server a Oracle SQL con MIGRATE_SQL
L'esempio seguente accetta l'istruzione SQL scritta in SQL Server come input, converte l'istruzione in Oracle SQL, assegna l'istruzione SQL tradotta a output_sql_result
e stampa il risultato:
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));
Il parametro original_sql
specifica l'istruzione SQL di SQL Server.
Il parametro output_sql
memorizza l'istruzione SQL tradotta.
Il parametro source_db
specifica il database di SQL Server.
Per ulteriori informazioni, vedere MIGRATE_SQL Procedura e funzione.
Esegui migrazione istruzione SQL Server a Oracle SQL con funzione MIGRATE_SQL
L'esempio seguente mostra la funzione DBMS_CLOUD_MIGRATION.MIGRATE_SQL
all'interno di un'istruzione SELECT
. L'input della funzione è un'istruzione SQL Server e la funzione restituisce l'istruzione tradotta in 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));
Utilizzare il parametro SQLSERVER
per eseguire la conversione da Microsoft SQL Server.
Per ulteriori informazioni, vedere MIGRATE_SQL Procedura e funzione.
Note per l'esecuzione di DBMS_CLOUD_MIGRATION.MIGRATE_SQL
:
-
È possibile che si verifichi un errore durante la traduzione se l'istruzione SQL di input non è supportata in Oracle SQL. Per ulteriori informazioni, vedere Limitazioni per la migrazione e la traduzione delle istruzioni di SQL Server in Oracle SQL.
-
I sottoprogrammi
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
accettano solo un'istruzione SQL come input. Pertanto, è possibile tradurre solo una singola istruzione SQL per chiamata.
Esegui istruzioni SQL Server in Autonomous Database
Puoi tradurre ed eseguire in modo interattivo le istruzioni di SQL Server in Autonomous Database.
Utilizzare la procedura ENABLE_TRANSLATION
per abilitare la traduzione in tempo reale delle istruzioni SQL scritte in SQL Server. Dopo aver abilitato la traduzione in una sessione, le istruzioni SQL non Oracle vengono tradotte ed eseguite automaticamente come istruzioni SQL Oracle e i risultati possono essere visualizzati.
ENABLE_TRANSLATION
, è possibile eseguire in modo interattivo le seguenti operazioni in una sessione:
-
Creare le tabelle. Ad esempio, creare le tabelle
MOVIE
eINVENTORY
. -
Inserire i dati nelle tabelle.
-
Tabelle di query.
-
Eseguire operazioni JOIN sulle tabelle. Ad esempio, è possibile eseguire un outer join sinistro sulle tabelle.
Per abilitare la traduzione con le istruzioni di SQL Server ed eseguire i comandi:
È possibile eseguire una query sulla vista V$MAPPED_SQL
per elencare le istruzioni di SQL Server tradotte e mappate in memoria alle istruzioni Oracle SQL.
Ad esempio:
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';
Per ulteriori informazioni, vedere V$MAPPED_SQL.
Esegui migrazione file SQL Server in Oracle SQL
È possibile eseguire la migrazione di un file contenente istruzioni di SQL Server a un file contenente istruzioni di Oracle SQL.
La procedura DBMS_CLOUD_MIGRATION.MIGRATE_FILE
converte le istruzioni SQL in un file SQL Server nello storage degli oggetti e genera un nuovo file contenente Oracle SQL.
Come prerequisito, caricare uno o più file di SQL Server con estensione .sql
in una posizione nello storage degli oggetti. Negli esempi riportati di seguito viene utilizzato il file mssqltest.sql
caricato nello storage degli oggetti. Per ulteriori informazioni, vedere Mettere i dati nello storage degli oggetti.
Per eseguire la migrazione dei file di SQL Server in Oracle SQL:
Eseguire la query seguente per visualizzare il contenuto del file 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;
In alternativa, se si crea una credenziale anziché il principal risorsa, OCI$RESOURCE_PRINCIPAL
, specificare il nome della credenziale nel parametro credential_name
.
Per ulteriori informazioni, vedere GET_OBJECT Procedura e funzione.
Limitazioni per la migrazione e la traduzione delle istruzioni di SQL Server in Oracle SQL
Questa sezione riassume le limitazioni per la migrazione delle istruzioni SQL da SQL Server a Oracle SQL.
-
ISJSON()
-
OPENJSON()