Eseguire la migrazione delle applicazioni dai database MySQL ad Autonomous Database
È possibile eseguire la migrazione delle istruzioni SQL da MySQL a Oracle SQL ed eseguire le istruzioni su Autonomous Database.
- Tradurre le istruzioni MySQL in Oracle SQL
È possibile tradurre le istruzioni SQL scritte in MySQL in Oracle SQL ed eseguire le istruzioni tradotte in Autonomous Database. - Eseguire le istruzioni MySQL in Autonomous Database
È possibile tradurre ed eseguire in modo interattivo le istruzioni MySQL in Autonomous Database. - Eseguire la migrazione di file MySQL in Oracle SQL
È possibile eseguire la migrazione di un file contenente istruzioni MySQL in un file contenente istruzioni Oracle SQL. - Limitazioni per la migrazione e la conversione delle istruzioni MySQL in Oracle SQL
In questa sezione vengono riepilogate le limitazioni per la migrazione delle istruzioni SQL da MySQL a Oracle SQL.
Argomento padre: migrazione delle applicazioni da SQL non Oracle a Oracle SQL
Traduci le istruzioni MySQL in Oracle SQL
È possibile tradurre le istruzioni SQL scritte in MySQL in Oracle SQL ed eseguire le istruzioni tradotte in Autonomous Database.
Utilizzare DBMS_CLOUD_MIGRATION.MIGRATE_SQL
per convertire un'istruzione MySQL in Oracle SQL. Esistono varianti di procedura e di funzione di DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Eseguire la migrazione dell'istruzione MySQL in Oracle SQL con la procedura MIGRATE_SQL
L'esempio seguente accetta l'istruzione SQL scritta in MySQL 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 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));
Il parametro original_sql
specifica l'istruzione MySQL.
Il parametro output_sql
memorizza l'istruzione SQL tradotta.
Il parametro source_db
specifica MySQL come nome del database.
Per ulteriori informazioni, vedere MIGRATE_SQL Procedura e funzione.
Esegui migrazione dell'istruzione MySQL in Oracle SQL con la 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 MySQL e la funzione restituisce l'istruzione tradotta in 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);
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 MySQL in Oracle SQL.
-
I sottoprogrammi
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
accettano solo un'istruzione SQL come input. È quindi possibile tradurre una sola istruzione SQL per chiamata.
Eseguire le istruzioni MySQL in Autonomous Database
È possibile tradurre ed eseguire in modo interattivo le istruzioni MySQL in Autonomous Database.
Utilizzare la procedura ENABLE_TRANSLATION
per abilitare la traduzione in tempo reale delle istruzioni SQL scritte in MySQL. Dopo aver abilitato la traduzione in una sessione, le istruzioni MySQL vengono convertite ed eseguite automaticamente come istruzioni Oracle SQL ed è possibile visualizzare i risultati.
ENABLE_TRANSLATION
è possibile eseguire in modo interattivo le operazioni riportate di seguito in una sessione.
-
Creare le tabelle. Ad esempio, creare le tabelle
MOVIE
eINVENTORY
. -
Inserisci 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 MySQL ed eseguire i comandi:
È possibile eseguire una query sulla vista V$MAPPED_SQL
per elencare le istruzioni MySQL convertite 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 = 'MYSQL'
AND o.object_type = 'TRANSLATION PROFILE';
Per ulteriori informazioni, vedere V$MAPPED_SQL.
Eseguire la migrazione dei file MySQL in Oracle SQL
È possibile eseguire la migrazione di un file contenente istruzioni MySQL in un file contenente istruzioni Oracle SQL.
La procedura DBMS_CLOUD_MIGRATION.MIGRATE_FILE
converte le istruzioni SQL in un file MySQL nello storage degli oggetti e genera un nuovo file contenente Oracle SQL.
Come prerequisito, caricare uno o più file MySQL con un'estensione .sql
in una posizione nello storage degli oggetti. Gli esempi riportati di seguito utilizzano il file mysqltest.sql
caricato nello storage degli oggetti. Per ulteriori informazioni, vedere Inserire i dati nello storage degli oggetti.
Per eseguire la migrazione dei file MySQL in Oracle SQL, procedere come segue.
Eseguire la query seguente per visualizzare il contenuto del file 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;
In alternativa, se si crea una credenziale al posto del 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 conversione delle istruzioni MySQL in Oracle SQL
In questa sezione vengono riepilogate le limitazioni per la migrazione delle istruzioni SQL da MySQL a Oracle SQL.
Tenere presenti le seguenti limitazioni durante la migrazione dal sapore del database MySQL a Oracle SQL:
-
Variabili globali definite dall'utente: le variabili globali definite dall'utente MySQL dichiarate utilizzando il formato
@var_name
non sono supportate durante la conversione in Oracle SQL. -
Identificativi tra virgolette: gli identificativi MySQL racchiusi con i backtick (`), ad esempio
`var_name`
, non sono supportati durante la conversione in Oracle SQL. Sono supportati solo gli identificativi senza virgolette o racchiusi tra virgolette. -
Delimitatori:
-
Per le funzioni e le procedure, sono supportati solo i delimitatori
$$
e//
. -
Per le istruzioni SQL è supportato solo il delimitatore
;
.
-
-
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)