MIGRAZIONE DA ORACLE A MYSQL - WHITE PAPER STORED PROCEDURE, PACCHETTI, TRIGGER, SCRIPT E APPLICAZIONI

Pagina creata da Federico Salerno
 
CONTINUA A LEGGERE
MIGRAZIONE DA ORACLE A MYSQL - WHITE PAPER STORED PROCEDURE, PACCHETTI, TRIGGER, SCRIPT E APPLICAZIONI
Migrazione da Oracle a MySQL
  Stored Procedure, Pacchetti, Trigger, Script e Applicazioni

                                          White Paper

                                  Marzo 2009, Ispirer Systems Ltd.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.   1
MIGRAZIONE DA ORACLE A MYSQL - WHITE PAPER STORED PROCEDURE, PACCHETTI, TRIGGER, SCRIPT E APPLICAZIONI
Introduzione
L'obiettivo di questo libro bianco è descrivere i fattori che influiscono la migrazione di
database e applicazioni da Oracle a MySQL. I fattori del costo e rischio saranno
descritti in dettaglio, e anche i tool e le metodologie che aiutano a raggiungere la prima
qualità di conversione.
Questo è la verità che il database MySQL di Sun può notevolmente ridurre il totale costo
di proprietà (Total Cost of Ownership (TCO)) di un'azienda abbassando i costi di licenze,
hardware e amministrazione. Il rischio più grande nel trasferimento su un'altra
piattaforma MySQL è i rischi e la complessità di migrazione della logica di business da
Oracle, soprattutto se le applicazioni esistenti usano spesso le procedure PL/SQL, trigger,
pacchetti e istruzioni SQL specifiche di Oracle.

La migrazione da Oracle a MySQL può essere molto faticosa, può richiedere tanto tempo ed
essere abbastanza costosa. Nondimeno, le metodologie approvate e i nostri tool possono
ridurre notevolmente i costi e il tempo necessario per il progetto di migrazione e anche
ridurre i rischi maggiori della conversione. Con l'aiuto del nostro prodotto - il tool
per migrazione SQLWays - una migrazione può essere valutata, disegnata e
automatizzata. Usando i nostri tool automatizzati in un modo corretto, avendo il processo
amministrativo ben organizzato, aziende possono risparmiare più di 70% del costo della
migrazione tradizionale manuale. Insieme con risparmi dall'implementazione di MySQL la
migrazione automatizzata diventa una soluzione alternativa veramente attrattiva.
Sfide

Il database Oracle ha le capacità avanzate di sviluppare la logica di un'applicazione che
si trova dentro di un database usando le stored procedure PL/SQL, funzioni, pacchetti e
trigger.

Oracle PL/SQL è un'estensione SQL procedurale potente facilmente gestita che viene
consigliata da Oracle per il suo performance. Nella maggior parte di applicazioni l'uso di
PL/SQL suscita l'esistenza del gran numero di procedure, pacchetti, e trigger. Nonostante
che MySQL ha la funzionalità molto simile con quella di Oracle, MySQL non usa PL/SQL.

Oltre la sintassi specifica di Oracle, PL/SQL offre molte caratteristiche che sono non-ANSI
compatibili, compreso le caratteristiche che si può trovare solo in Oracle. Tra queste
caratteristiche specifiche ci sono:
    • Pacchetti - variabili condivise di pacchetti, pacchetti incorporati
    • %TYPE, %ROWTYPE, eccezioni
    • Caratteristiche orientate agli oggetti: tipi di oggetti, funzioni, e collezioni
    • Il Business intelligence e le caratteristiche di XML, ecc.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                        2
La migrazione da Oracle a MySQL può essere molto difficile, soprattutto se le
caratteristiche specifiche di Oracle sono usate come, per esempio, le caratteristiche
sopra menzionate.
Tuttavia, la migraztione di questo tipo può essere effettuata abbastanza facilmente senza
tanti rischi. La migrazione viene realizzata facilmente se il database di destinazione ha
poche tabelle e la logica di business non è complicata.
I costi e i rischi sono diversi per ogni progetto di migarzione, perciò è molto importante
fare la valutazione preliminare.

Valutazione
L'obbiettivo della valutazione è definire le dimensioni del progetto, la fattibilità, costi e rischi
della migrazione di un database da Oracle a MySQL.

Valutazione di un database

Prima di tutto, si deve definire i tipi di oggetti in un database e la quantità di oggetti da
migrare. Tra oggetti ci sono:

    •   Tabelle
    •   Viste
    •   Procedure
    •   Funzioni
    •   Pacchetti
    •   Trigger
    •   Sequenze, sinonimi ecc.

Se dovete convertire il codice PL/SQL (procedure, pacchetti, funzioni e trigger) oppure
viste/query contenenti la sintassi SQL specifica di Oracle, dovete studiare e venire a
sapere che caratteristiche vengono usate e determinare la quantità di queste
caratteristche. Tra le caratteristiche da contare ci sono:

    •   Funzioni SQL Non-ANSI compatibili, operatori e istruzioni
    •   Results sets
    •   Cursor loops
    •   Eccezioni
    •   Tabelle Temp
    •   Tipi di oggetti e funzioni
    •   Collezioni

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                             3
•    SQL dinamico
    •   Pacchetti incorporati
    •   Funzioni OLAP
    •   Funzioni XML, ecc.

Dopo che finirete l'esame, è meglio scegliere gli equivalenti in MySQL o le soluzioni in
MySQL per sostituire le funzionalità specifiche di Oracle. Potete trovare le soluzioni tipiche
in capitoli seguenti.

Valutazione di un'applicazione

Oltre la conversione dello schema e della logica di business lato server, potete anche
modificare istruzioni SQL dentro l'applicazione. Si deve valutare l'entità del lavoro di questo
tipo prima di avviare la migrazione.

Per iniziare la migrazione dovete controllare che API di database viene usata nelle vostre
applicazioni per accedere al database in Oracle. Si deve anche notare quanti file sorgenti
dell'applicazione contengono il codice specifico di Oracle, quindi, questo codice deve
essere modificato per lavorare con MySQL.
La maggior parte di aplicazioni usano l'API standardizzata come ODBC, JDBC, o ADO.NET
per accedere a Oracle, ma alcune applicazioni usano l'API nativa come, per esempio,
Oracle OCI o Pro*C/C++. La racconta di tutta questa informazione è obbligatoria.

Nonostante che viene usata l'API standardizzata, per esempio, i driver ODBC/JDBC, i
cambiamenti importanti delle istruzioni SQL esistenti possono essere necessari. Per esempio,
funzioni DECODE o la sintassi ereditata left outer join (*) richiederà le modificazioni. Vi
consigliamo di contare la quantità di istruzioni SQL native.

Se l'applicazione usa l'API nativa come, per esempio, Oracle OCI, dovrete ridisegnare
completamente il codice dell'accesso al database per utilizzare MySQL API o ODBC.

I tool per valutazione

Bisogna sapere quante caratteristiche specifiche ci sono in un database. Com'è possibile
valutare tutte le caratteristiche specifiche e determinare la loro frequenza in un database?

Prima di tutto si deve calcolare il numero di tabelle, procedure, viste, ecc., com'è
dimostrato in una tabella qui sotto. Per fare l'analisi dettagliata potete usare il
prodotto di Ispirer per raccogliere la statistica onnicomprensiva.

C'è un esempio della valutazione:

Database                        Numero
Tabelle                         350
Viste                           280
Procedure                       420
Funzioni                        135
Trigger                         50
Pacchetti                       10

Dettagli sul database
BLOBs                           37
Outer joins                     155
Ref cursors                     89
Eccezioni                       450
Tabelle Temp                    34

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                            4
Applicazione
Java/JDBC                       590 files
Outer joins                     190
Funzioni SQL                    356
Result sets                     47

Approccio per migrazione        Conversione automatizzata

Si può fare il piano della migrazione basato sui risultati della valutazione. Se avete solo
alcune decine di procedure, potete considerare la conversione manuale, ma se avete le
procedure da migrare a centinaia e migliaia, la soluzione migliore per la migrazione sarà
trovare un tool per una migrazione automatizzata. SQLWays è uno dei tool di questo tipo.

Costi e rischi
 I costi e rischi della conversione dipendono dalle dimensioni del progetto di migrazione.
 Giova notare che i costi e rischi della conversione sono determinati anche dalla diversità e
 frequenza delle caratteristiche di Oracle usate in un database o in un'applicazione. Più
 spesso vengono usate le caratteristiche di Oracle più complicata e costosa sarà la
 conversione. Allo stesso tempo, più spesso vengono usate le caratteristiche di Oracle, più
 efficace e utente sarà l'uso di tool automatizzati.
Il costo di migrazione di dati e DDL

Migrazione di dati e di oggetti di DDL (Schema) è realizzata di solito facilmente senza
tanta fatica perchè ci sono molti tool che possono aiutare a effettuare questo tipo di
migrazione.
La migrazione tipica si dati e di DDL include la conversione di:

     •   Tipi di dato
     •   Restrizioni (chiavi primarie e esterne, restrizioni unique, NULL, default ecc)
     •   Trasferimento di dati
     •   Indici

Nonostante che si sono differenze tra istruzioni DDL in Oracle e in MySQL, in entrambi
database ci sono i tipi di dato simili (character, number, date, time, LOBs) e c'è la
possibilità di specificare le restrizioni di integrità simili.

La valutazione esemplare della migrazione di DDL/Dati:

Database
Tabelle
I tool                             Gratuiti, o meno di 500 euro

Grazie all'automazione il costo di migrazione di DDL e di dati non è direttamente
proporzionale al numero di tabelle e alla quantità di dati. Per esempio, il costo di
migrazione di 100 e 300 tabelle può essere uguale se le tabelle hanno una struttura simile
e la quantità di dati simile.
Quando il numero di tabelle e le loro dimensioni si aumentano, si può bisognare spendere
più tempo per configurare bene un database MySQL, regolare il trasferimento di dati e
focalizzarsi sulle cose come, per esempio, il performance della creazione di indici.

I rischi di migrazione per la migrazione tipica di DDL e dati

La migrazione tipica di DDL/Dati non è di alto rischio. Usando SQLWays, è possibile
effettuare il trasferimento completo di un database in un modo di valutazione, riguardare i
dati e avviare applicazioni conesse a un database MySQL nuova:
Questo è il solito processo lavorativo:
    1. Effettuare il trasferimento completo di un database in un modo di valutazione
    2. Controllare se ci sono degli sbagli durante il trasferimento, comparare strutture di
       tabelle, il numero di righe in Oracle e MySQL
    3. Riguardare e esaminare i dati in tutte le tabelle rappresentative usando i tool SQL come
       Oracle, SQL*Plus, MySQL Query Browser o l'utilità della riga di comando.
    4. Avviare e controllare applicazioni di destinazioone connesse a MySQL

Migrazioni di dati difficili

Nonostante che, in generale, la migrazione di dati/DDL è abbastanza facile in
comparazione con la conversione della logica di business, ci sono alcune condizioni che
aumentano la complessità della migrazione di dati/DDL:

    •    Il grabde volume di dati

Se avete bisogno di migrare i grandi volumi di dati, forse bisognerete anche configurare i
server MySQL.

Il grande volume di dati può influenzare il processo di migrazione, soprattutto riguardo il
tempo necessario per la realizzazione di migrazione. Per ridurre il tempo necessario per
finire la migrazione, potete effettuare una migrazione nel modo sincronico. Per questo la
migrazione divente più difficile.

Allo stesso tempo, il trasferimento di dati può complicare il trattamento di errori (error
handling), perchè non potrete avviare la stessa migrazione ancora una volta se solo alcune
tabelle non saranno convertite bene.
Il progetto può portare i vanatggi grazie ai tool che hanno le opzioni dell'inserimento per i
grandi volumi di dati, perchè i tool che eseguono una commissione alla fine di ogni riga,
non saranno efficaci più.
     • Il downtime minimale

In alcuni ambienti mission-critical dovete essere sicuri che il downtime è il più minimo
possibile. Per rispondere a questi requisiti, dovete disegnare il processo di migrazione a
fondo per fare molti operazioni nello stesso tempo (per esempio, il trasferimento di run data
o il trasferimento di tabelle statiche dalla finestra di downtime). A volte si deve usare i
tool per replicazione per ridurre il tempo di downtime.

    •    I requisiti esigenti per il performance

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                          6
Alcuni ambienti hanno i requisiti molto esigenti per il performance di applicazioni. Pur
migrando verso MySQL, è obbligatorio che il performance esistente sarà conservato o
migliorato. Per questo si deve spendere più tempo per il design e aggiustamento di un
database e anche fare i test di controllo della migrazione per controllare il performance di
un'applicazione dopo la migrazione.
Migrazione rischiosa durante la migrazione di DDL e di dati

Ci sono migrazioni di dati molto complesse che non si può effettuare facendo solo un
doppio click. La migrazione ai margini di Proof-of-Concept (prova del concetto) è
necessaria per garantire la fattibilità sellla migrazione.
Di solito i processi seguenti sono consigliati per i progetti complessi di migrazone di
dati:

    •    Migrazione durante la prova del concetto (Proof-of-Concept) per provare la fattibilità dei
         requisiti
    •    Test di migrazione per imitare completamente la migrazione finale e fare delle prove
         onnicomprensive
     •   Migrazione finale
Il costo della migrazione della logica di business

Se il vostro database contiene decine di procedure e trigger, è più facile convertirli a mano
verso la sintassi MySQL. Ma se avete procedure e trigger a migliaia, la migrazione
manuale sarà abbastanza costosa. Perciò è meglio considerare l'assistenza del tool
automatizzato.
Il costo della conversione manuale è direttamente proporzionale al numero di linee del
codice da convertire. Dall'altra parte, i tool automatizzati possono ridurre il costo, in
questo modo la migrazione di migliaia di linee del codice sarà effettuata a un prezzo
ragionevole senza tanta fatica.
Secondo il numero di linee del codice da convertire, la conversione automatizzata della
logica di business usando un tool automatizzato tipo il tool SQLWays sarà 7-10 meno
cara in comparazione con la migrazione manuale.

La diversità e frequenza di caratteristiche specifiche di Oracle definiscono la complessità
di migrazione della logica di business e il livello d'automazione che può essere raggiunto
grazie ai tool.
Per raggiungere l'automazione efficiente, i nostri esperti garantiscono che con il tool
SQLWays l'automazione di migrazione della logica di business può essere superiore al
95%.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                          7
C'è un esempio della valutazione del progetto di migrazione della logica di business:

Database
Stored procedure                1000
Trigger                         300
Funzioni                        250
Pacchetti                       10 (50 procedure per pacchetto

Conversione manuale             5,000 ore (~30 persone per mese)
Il costo di lavoro              $50,000-$250,000 (dipende
                                dal paese)

Conversione automatizzata
Valutazione, esame di           16-40 ore
soluzioni
Conversione                     40-80 ore
iterativa , analisi
Testing                         40-80 ore

Tempo totale                    96-200 ore
Il costo di tool                meno di $5,000-$10,000

Comparando la migrazione di DDL/Dati e la migrazione della logica di business, potete
vedere che la seconda migrazione può costiture il 95% del costo totale del progetto,
soprattutto se parliamo di grandi progetti di migrazione da Oracle a MySQL.

I rischi di migrazione della logica di business

Se ci sono molte linee di codice da convertire e se ci sono le caratteristiche diverse di un
database Oracle, la conversione può essere abbastanza rischiosa. In questo caso dovrete
fare alcuni passi importanti durante la migrazione della logica di business.

    •   Esperienza

Il team responsabile del progetto di migrazione deve avere le competenze
amministrative e quelle di sviluppatori, e anche l'esperienza in un campo di trattamento
di database - sia in Oracle che in MySQL. I specialisti devono capire bene dimensioni,
sfide, incarichi e fasi del progetto di migrazione per realizzarlo con successo.
     • Valutazione onnicomprensiva

All'inizio, dovete fare la valutazione onnicomprensiva di database da migrare. Alla fine,
saprete che funzionalità specifica da convertire c'è, che soluzioni dovete usare per supplire
le caratteristiche di Oracle con non sono compatibili con ANSI.

Dovete determinare se c'è una soluzione per ogni caratteristica usata. Non è facile trovare
gli equivalenti per alcune caratteristiche di Oracle, perciò dovrete ridisegnare alcune
funzionalità a volte.

    •   Prova del concetto (Proof-of-Concept) per tutto il codice

I tool automatizzati come SQLWays permettono di realizzare la conversione di tutto il codice
all'inizio della valutazione di migrazione. Consigliamo a voi a farlo come una parte della
migrazione complessa perchè così avrete la possibilità di trovare i posti problematici per
conversione e venire a sapere "il percentuale di automazione" oppure il fattore del successo
che vi da il tool.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                         8
La cosa più importante è che sarete sicuri che la conversione del codice complicato PL/SQL
è possibile a un prezzo ragionevole.

    •   Uso della migrazione automatizzata il più possibile

In aggiunta al costo alto, la migrazione manuale non lascia vedere i problemi di
conversione all'inizio, perciò dopo è probabile che dovrete correggere e rifare la
migrazione. Tutto questo aumenta i sforzi necessari per la migrazione e anche i costi
della migrazione.
In comparazione con la migrazione a mano, i tool automatizzati permettono di realizzare
la conversione alcune volte senza pagare tanto per questo, nello stesso tempo le
conversione iterative danno la possibilità di avere il feedback molto utile. Allora, con i tool
automatizzati potete risparmiare e avere la migrazione più efficace.
In generale, conversione a mano da troppo fastidio e c'è sempre anche la probabilità di un
errore umano. Molto spesso gli sviluppatori possono produrre i risultati diversi per la
conversione dello stesso codice. Ne risulta che ci sono i costi addizionali e il tempo
perso.
    • Testing all'inizio

I test all'inizio vengono effettuati per minimizzare i rischi del progetto di migrazione. Potete
avviare i test d'unità o realizzare il controllo del codice perfino se il testing funzionale al
livello di un'applicazione non è ancora disponibile.
Potete usare le caratteristiche di tool automatizzati che possono generare i casi di test per
invocare procedure e funzioni con i valori specifici e comparare i risultati. Per favore, notate
che tutto questo non può sostituire il testing funzionale al livello di un'applicazione, però
può aiutare a rivelare i problemi potenziali.

Conversione di applicazioni
Oltre la logica di business lato server nella maggior parte dei casi dovete anche
modificare le vostre applicazioni per lavorare con MySQL.

In applicazioni Java e PowerBuilder a volte ci sono istruzioni SQL che non sono
compatibili con ANSI - significa che la sintassi non è uguale alla sintassi SQL di MySQL e
deve essere modificata.
Le caratteristiche della sintassi più tipiche che sono importanti per le conversioni da Oracle
a MySQL sono gli script con la sintassi di Oracle left outer join (+). Funzioni come
DECODE, NVL, e SYSDATE sono anche molto importanti.

Non potete solo sostituire i nomi di funzioni usando Find/Replace in tali situazioni. In tali
casi a volte le funzioni hanno la sintassi diversa di parametri oppure richiedono i
cambiamenti di istruzioni SQL, per esempio di left outer join.

Per di più, la sostituzione di una stringa sola può cambiare il testo in posti inaspettati,
come per esempio, nelle stringhe di carattere o istruzioni nel linguaggio di Java.

L'approccio migliore è usare un tool come SQLWays che è capace di modificare il
codice dell'applicazione automaticamente e convertire istruzioni SQL verso la
sintassi corrispondente di MySQL.
I tali tool possono identificare istruzioni SQL nel codice in modo corretto, effettuare la
conversione e generare i report su ogni cambiamento semplificando in questo modo
l'incarico della conversione di un'applicazione.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                             9
Pianificazione – Fasi di migrazione
La pianificazione profonda è molto importante per la migrazione fortunata. Le fasi tipiche
di una migrazione sono:

    •   Valutazione

Valutazione (descritta prima in questo documento) è adibita ad analizzare un database
o un'applicazione da migrare, definire le dimensioni di una migrazione e fissare ogni
funzionalità specifica di Oracle che deve essere aggiustata a MySQL.

Secondo l'informazione raccolta durante la valutazione, potete definire gli approcci da
usare (conversione manuale o automatizzata), il costo e i rischi della migrazione.

    •   &RQYHUVLRQHFRPSOHWDDOO LQL]LR–Proof-of-Concept 3URYDGHOFRQFHWWR

Poniamo che abbiate un database con 2,000 procedure. Potete avviare SQLWays per
convertire l'intero codice durante la fase della prova del concetto (Proof-of-Concept). Vi
consigliamo di farlo anche se avete deciso di controllare e convertire ogni modulo a parte.
All'inizio del processo di migrazione (se i tool automatizzati vengono usati), il feedback e la
visibilità sono disponibili, al contrario della migrazione a mano quando si deve spendere
molte ore per gli incarichi di migrazione prima di avviare il processo di migrazione. A volte
durante la migrazione manuale appaiono gli sbagli e in questo caso si deve correggere tutti
gli sbagli e ricominciare la migrazione da capo.
Allora potete usare un approccio integrato e uniforme usando le soluzioni automatizzate
come, per esempio, la migrazione con l'aiuto di SQLWays. Molto spesso, riguardo al fatto
che molte persone dall'organizzazione sono impegnati nello stesso progetto di
migrazione, a volte sono usati gli approcci e metodologie divesri per la conversione della
stessa sintassi. Però alla fine più uniformi e integrati sono i risultati della
conversione, più facile sarà controllare e modificare la conversione. Nella situazione ideale
dovete raggiungere la creazione di oggetti in SQL senza nessun sbaglio all'inizio del
processo di migrazione. Significa che tutte le tabelle, funzioni, procedure, tutti i trigger
sono stati creati con successo.
Riguardo al fatto che è abbastanza difficile raggiungere il 100% auomazione della
convesrione di qualsiasi database con una versione del tool attuale, il team di Ispirer offre la
customizzazione gratuita (1-2 giorni per l'aggiustamento) per avere l'automazione di circa
100% durante la fase iniziale della valutazione.

    •   Il testing run-time, il testing del performance e della logica

Migrazione viene spesso effettuata per ogni modulo a parte. Dopo che avete
convertito la logica di business lato server, perfino prima che applicazioni vengono
convertite e il testing al livello di un'applicazione è disponibile, si deve già controllare
la conversione di un database.
Potete scegliere alcune procedure più rappresentative e difficili e fare la rivista del codice.
Ovviamente forse non troverete tutti i problemi della conversione durante la rivista del
codice, tuttavia sarà molto utile. Durante la rivista potete vedere che soluzioni sono usate
ed estimare la qualità della conversione in generale.

Sarebbe bene creare una lista di caratteristiche della conversione per esaminarle meglio.

Anche se potete creare una procedure o funzione nel database, questo non significa che non
ci sono degli errori. Si può rivelare molti errori avviando le procedure. Il modo più facile e
efficace a testare le procedure è generare i casi di test.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                            1
                                                                                                  0
SQLWays può generare il set di chiamate alle procedure con i parametri di input diversi.
Esaminando il codice SQLWays può definire che valori, stringhe, costanti di dati, condizioni
della struttura di controllo sono usati, e generare i casi di test raggionevoli in molte
situazioni.
Per fare il testing onnicomprensivo della logica e del performance potete creare i script di
test con i dati reali ed implementare i vari scenari.

Se usate il software assicurativo automatizzato di prima qualità per il vostro database di
Oracle e applicazioni, potete considerare il loro ammodernamento per usarlo insieme con
MySQL e garantire il testing onnicomprensivo della migrazione.

Soluzioni tipiche per convesrione - Esemplari
Anche se gli incarichi e le soluzioni per convesrioni si variano secondo il progetto di
migrazione, molti progetti sono tipiche per ogni migrazione.

Attenzione. Tutte le conversioni descritte qui sotto vengono effettuate automaticamente con la
versione di SQLWays attuale.
DDL

Sia Oracle che MySQL supportano l'istruzione CREATE TABLE, ma ci sono molte differenze
nella sintassi.

    •    Tipi di dato

Oracle                                          MySQL
CREATE TABLE employees                          CREATE TABLE employees
(                                               (
   id NUMBER(5),                                   id INT,
   name VARCHAR2(120),                             name VARCHAR(120),
   hire_date DATE,                                 hire_date DATETIME,
   salary NUMBER(7),                               salary INT,
   dept_id NUMBER(2)                               dept_id TINYINT
);                                              );

    •    Parole riservate

Oracle e MySQL usano i set delle parole riservate diversi, per questo alcuni nomi di
colonne ora devono essere virgolettate nelle query MySQL.

Oracle                                          MySQL

SELECT product_id, limit                        SELECT product_id, `limit`
FROM product_data;                              FROM product_data;

Le query e il codice PL/SQL
Avete bisogno di modificare istruzioni SQL principalmente per cambiare la sintassi di
funzioni ed espressioni. PL/SQL deve essere completamente convertito verso la sintassi
SQL procedurale di MySQL.
  • Outer Joins

Oracle supporta la sintassi specifica di outer joins che sono spesso usati in applicazioni vecchie.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                         1
                                                                                               1
Oracle                                          MySQL

SELECT e.name, d.name                           SELECT e.name, d.name
FROM employees e, departments d                  FROM employees e LEFT OUTER JOIN
  WHERE e.dept_id = d.id(+);                      departments d ON e.dept_id = d.id;

    •    Conferimento di un valore di identità ad una colonna

Oracle non supporta le colonne auto-increment (di identità), e un oggetto di sequenza
viene usata per conferire valori di identità nuovi da un'applicazione o da un trigger.

Nonostante che un singolo oggetto di sequenza può essere usato per conferire valori per le
tabelle multiple in Oracle, in molti casi è usato solo per una tabella e questa funzionalità può
essere convertita verso una colonna auto-increment in MySQL.

In riguardo alla convesrione automatizzata, SQLWays osserva le query SQL e istruzioni
INSERT in applicazioni, procedure e trigger per identificare il conferimento dell'identità e
convertirli verso le colonne auto-increment in MySQL.

Oracle                                          MySQL

CREATE TABLE employees                          CREATE TABLE employees
(                                               (
   id NUMBER(5) PRIMARY KEY,                       id INT AUTO_INCREMENT PRIMARY
   name VARCHAR2(120),                          KEY,
   hire_date DATE,                                 name VARCHAR(120),
   dept_id NUMBER(2)                               hire_date DATETIME,
);                                                 dept_id TINYINT
                                                );
CREATE TRIGGER emp_id BEFORE
INSERT ON employees                             -- Trigger is no required anymore
 FOR EACH ROW
 BEGIN
  SELECT emp_id_seq.nextval
   INTO :new.id FROM dual;
 END;

    •    I trigger multipli per un evento

In Oracle, per la stessa tabella si può definire alcuni trigger per lo stesso evento (per
esempio, alcuni trigger per l'evento INSERT per la tabella di dipendenti (employees
table).
Non è possibile in MySQL, perchè si deve porre tutto il codice per uno evento nello
stesso trigger.

    •    Pacchetti e variabili Shared

In Oracle, un pacchetto è un gruppo di procedure correlate e funzioni che possono
condividere i variabili. Procedure e funzioni di un pacchetto devono essere convertite
verso i singoli oggetti in MySQL.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                         1
                                                                                               2
Variabili di un pacchetto possono essere modificati in una procedura di un pacchetto.
Per di più, un'altra procedure di un pacchetto può vedere o sostituire il valore
ammodernato. Per sostituire questa funzionalità in MySQL potete usare i variabili della
sessione che iniziano con un segno @.

Oracle                                          MySQL

CREATE PACKAGE BODY emp_pack                    CREATE PROCEDURE new_employee
AS                                               BEGIN
                                                  …
processed NUMBER DEFAULT 0;                      IF @processed IS NULL
                                                  THEN @processed = 0;
PROCEDURE new_employee AS
 BEGIN                                              @processed = @processed + 1;
  …                                                END;
  processed := processed + 1;
 END;                                           CREATE PROCEDURE raise_salary
                                                 BEGIN
PROCEDURE raise_salary AS                         …
 BEGIN
  …                                                 IF @processed IS NULL
  processed := processed + 1;                        THEN @processed = 0;
 END;
END;                                              @processed := @processed + 1;
                                                 END;
                                                END;

    •    Results sets che tornano

    Dovete usare i variabili di cursori (REF CURSORs) come un parametro OUT per tornare
    un result set da Oracle. In molti casi, può essere convertito verso SELECT in MySQL.

Oracle                                          MySQL

CREATE PROCEDURE get_salaries                   CREATE PROCEDURE get_salaries (IN d_id
(d_id IN NUMBER, cur OUT                        INT)
SYS_REFCURSOR)                                  BEGIN
AS
BEGIN                                               SELECT id, name, salary
                                                     FROM employees
 OPEN cur FOR                                         WHERE dept_id = d_id
  SELECT id, name, salary                            ORDER BY name;
   FROM employees
    WHERE dept_id = d_id                        END;
   ORDER BY name;

END;

    •    Definizioni di tipi di dato %TYPE e %ROWTYPE

Un attributo di Oracle %TYPE vi permette di definire i tipi di dato per i variabili PL/SQL
basati su tipi di colonne di tabelle. In MySQL, dovete specificare il tipo di dato in dettaglio.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                             1
                                                                                                   3
Nello stesso modo, un attributo %ROWTYPE vi permette di creare i variabili record basati su
righe di tabelle. In MySQL, dovete creare i singoli variabili e specificare i loro tipi di dato in
dettaglio.

Oracle                                          MySQL

v_emp_name employees.name%TYPE;                 v_emp_name VARCHAR(120)

v_emp_rec employees%ROWTYPE;                    v_   emp_id INT
                                                v_   emp_name VARCHAR(120)
                                                v_   emp_hire_date DATETIME
                                                v_   emp_salary INT
                                                v_   emp_dept_id TINYINT

    •    Conversione SQL in applicazioni Java

In applicazioni Java probabilmente dovete cambiare la sintassi di istruzioni SQL.

Oracle                                            MySQL
…                                                 …
PreparedStatement ps = null;                      PreparedStatement ps = null;
ResultSet rs = null;                              ResultSet rs = null;
String sql = “SELECT e.name, d.name” +            String sql = “SELECT e.name, d.name” +
  “FROM employees e, departments d” +              “FROM employees e LEFT OUTER JOIN” +
  “WHERE e.dept_id = d.id(+)”;                      “departments d ON e.dept_id = d.id”;

ps = conn.prepareStatement(sql);                  ps = conn.prepareStatement(sql);
rs = ps.executeQuery();                           rs = ps.executeQuery();
…                                                 …

    •    Conversione SQL in applicazioni PowerBuilder

In applicazioni PowerBuilder probabilmente dovete cambiare la sintassi di istruzioni SQL.

Oracle                                          MySQL
datawindow(units=0 processing=0                 datawindow(units=0 processing=0
print.orientation = 0                           print.orientation = 0
…                                               …
print.preview.buttons=no)                       print.preview.buttons=no)
table(column=(type=char(120)                    table(column=(type=char(120)
updatewhereclause=yes name=e_name               updatewhereclause=yes name=e_name
dbname="employees.name" )                       dbname="employees.name" )
column=(type=char(120)                          column=(type=char(120)
updatewhereclause=yes name=d_name               updatewhereclause=yes name=d_name
dbname="departments.name" )                     dbname="departments.name" )
retrieve="SELECT e.name, d.name                 retrieve=" SELECT e.name, d.name
  FROM employees e, departments d                 FROM employees e LEFT OUTER JOIN
  WHERE e.dept_id = d.id(+)”)                      departments d ON e.dept_id = d.id”)

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                           1
                                                                                                 4
Modi di aggiramento per funzionalità non supportata

Ci sono molte caratteristiche in Oracle PL/SQL che in questo momento non sono supportate
dal linguaggio procedurale SQL di MySQL. Se questa funzionalità viene usata in un
database di partenza, dovete applicare i vari modi di aggiramento per ricevere lo stesso
comportamento in MySQL. Ci sono degli esempi specifici:

    •   Collezioni PL/SQL

Potete usare tabelle temporanee e operazioni SQL DML (SELECT, INSERT, UPDATE, DELETE)
per sostituire questa caratteristica in MySQL.

    •   RAISE_APPLICATION_ERROR

Potete usare un UDF per sollevare lo sbaglio dalle stored procedure di MySQL.

    •   Pacchetto incorporato UTL_FILE

Potete usare un UDF per lavorare con i file dalle stored procedure di MySQL.

    •   La logica di business complessa

Come una soluzione comune, la logica di business complessa PL/SQL può essere convertita al
linguaggio Java.

Conclusione
La migrazione automatizzata verso il modello di MySQL concesso in licenza ha il valore
grandissimo. L'uso di SQLWays da Ispirer durante i proggetti difficili di migrazione da Oracle
a MySQL aumenta la qualità e riduce il tempo e i costi necessari per migrazione. Ci sono
molte cose importanti per la pianificazione della migrazione della logica di business e dei
contenuti di un database per l'applicazione esistente. Pianificazione profonda, analisi e
attenzione ai dettagli sono necessari per ogni fase del progetto di migrazione
Nonostante che la migrazione complessa di database da Oracle a MySQL, che include la
conversione complicata della logica di business, è un incarico difficile, il buon approccio e
l'uso dei tool per migrazione aiutano ad effettuare la migrazione a buon prezzo e senza
tanti rischi. Il prodotto di Ispirer SQLWays e i servizi di Ispirer garantiscono il gran valore
della migrazione durante la conversione complessa della logica di business.

Copyright © 1999-2013. Ispirer Systems Ltd. Tutti i diritti riservati.                            1
                                                                                                  5
Puoi anche leggere