Migrare da Oracle a SQL Server con SSMA Agenda La migrazione di database Perché migrare Le parti coinvolte Sfide, criticità e rischi di una migrazione manuale Migrare usando SSMA - benefici Processo di migrazione La migrazione di database Migrazione: Schema Dati TRASFORMAZIONE: Oracle SQL statements Stored procedures Triggers Viste Record Cursori Sequenze User-defined functions Packaged functions Tabelle Indici Constraints Defaults SQL Server Re-host di un database da un RDBMS a un altro La migrazione di database Applicazione PL/SQL Oracle T-SQL SQL Server Oracle e SQL Server Alcune differenze Diverso modello di gestione delle transazioni Data types diversi Gestione eccezioni (solo SQL Server 2000) Packages e package objects Sequenze (Oracle) vs. identities (MSSQL) Perchè migrare Total cost of ownership (TCO) Tempi e costi di produzione ridotti Standardizzazione e consolidamento Feature più robuste Manuntenzione facilitata Upgrade da un sistema “legacy” Le parti coinvolte in una migrazione SQL Statements Stored Procedures Triggers Functions Views Constraints, indici e defaults Data types Gestione delle eccezioni Data migration Sfide Implementazioni basate su cursori Oracle system packages Gestione delle eccezioni Mostrare result set Concatenare stringhe Gestire SQL dinamico Implementare trigger Rischi di una migrazione manuale Con una migrazione manuale si va incontro ai seguenti rischi da mettere in conto: Test: L’applicazione convertita alla fine funziona veramente ? Mesi di lavoro Può spesso costare più di 100K $ Le logiche di business e l’integrazione delle applicazioni sono spesso difficoltose da migrare E le performance ? Le operazioni critiche da un punto di vista del core business sono intaccate ? Installazione SSMA-V2-Setup Installazione Installazione delle estensioni per: Oracle SQL Server Estensioni Installing system database scripts... Creating database with default parameters and server... Changing null password for 'ssma' to inputted ... Registering extended stored procedures... Creating of all objects in database SYSDB for CONTEXT_INFO... Creating package variables procedures... Creating of all objects in database SYSDB for exception handling support... Creating of all objects in database SYSDB for support of NULL statement... Creating of all objects in database SYSDB for sequence handling support... Installing scripts to emulate Oracle date/time manipulation functions... Installing scripts to emulate Oracle mathematical functions... Estensioni Installing scripts to emulate Oracle miscellaneous functions... Installing scripts to emulate Oracle string manipulation functions... Creating of all objects in database SYSDB for implementation of package UTL_FILE... Creating of all objects in database SYSDB for implementation utility routines... Creating test platform database with default parameters and server... Changing null password for 'dbtest' to inputted ... Creating test platform database objects... Installing MS SQL Server Server-Side Components ... Setting Globalization Registry Key for server NBDIMAURO ... Installing Extensions Library file for x86 architecture Extract: SQLServerConverterExtensions.dll... 100% Installation was successful. Microsoft SSMA Suite completa di strumenti di migrazione Valutazione Migrazione Test Riduce clamorosamente i tempi di porting/conversione/migrazione É prodotto da Microsoft Download gatuito Microsoft SSMA Compatibilità Oracle 8, Oracle 8i, Oracle 9i, Oracle 10g SQL Server 2000, SQL Server 2005 Prerequisiti Windows 2000, XP, 2003 Java runtime environment 1.4.2 Obiettivi Ridurre i rischi di migrazione Assicurare una migrazione corretta Assicurare che i database migrati siano effettivamente funzionanti con le applicazioni Assicurare che il nuovo database funzioni allo stesso modo o meglio del DB originale Ridurre tempi e costi Automatizzare parzialmente o completamente ampie porzioni di un progetto di conversione con SSMA Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Performance tuning Test e integrazione Installazione e configurazione Extension Pack Connessione source Connessione target Caricamento oggetti DB Esecuzione script salvati Generazione assessment reports J2SE 1.4.2 Stima tempi Microsoft SSMA Conversione oggetti Salvataggio script Migrazione dati Extension Pack Test Redirect applicazione su DB target Uno sguardo a SSMA Source panel Source DB Object panel Target panel Target DB Object panel Source DB Code panel Target DB - Code panel Menu File e Tools: Opzioni Opzioni Generate ROWID column Allow sequence-to-identity conversion Genera nello schema di uscita una colonna rowid. Riduce notevolmente la percentuale di conversione di Trigger e Sp Trasforma sequence in colonne identity. Rappresenta la strada da preferire laddove percorribile Allow insertion to IDENTITY columns Se selezionato permette l’inserimento in colonne di tipo identity. Verificare compatibilità con la logica business Opzioni Show system sequences Convert transaction processing statements Mostra le dialog per accedere alle sequenze di sistema. Abilitato soltanto se “Insert into identity” è attivo Abilita/disabilita la conversione di comandi SQL per le transazioni Convert exceptions Abilita o disabilita la conversione per la gestione di eccezioni Opzioni – mapping dei dati View Menu View – Synchronized Mode View – Zebra mode Evidenzia con colori entità correlate View – Show Diff Mode Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Performance tuning Test e integrazione Comprendere il tool di assessment Assessment di migrazione Benefici Integrato in SSMA Valutazione della complessita della migrazione Valutazione dei tempi di migrazione Mostra la percentuale di oggetti immediatamente convertibili I report possono essere salvati Comprendere il tool di assessment Creazione di report Assessment di migrazione Permette di valutare: Numero totale di righe di codice. Numero totale di statement SELECT, INSERT, DELETE e UPDATE Numero totale di CURSORI, RECORD, e ECCEZIONI. Numero totale e percentuale di componenti convertibili automaticamente. Stima complessità migrazione. Stima dei tempi necessari per migrare manualmente. Assessment di migrazione Comprendere il report di assessment Total Objects Person Hours (tot) Complessità del lavoro di traduzione All (tot) Stima in ore per una conversione manuale Complexity Numero totale di oggetti nel database. Numero complessivo di oggetti statement SELECT, INSERT, DELETE e UPDATE SELECT (Conv%) Percentuale di comandi SELECT che verranno convertiti automaticamente Assessment di migrazione Comprendere il report di assessment Record Type Decl (Tot) Record Type Decl (Conv%) Numero complessivo di dichiarazioni record convertibili automaticamente Record Var Decl (Tot) Numero complessivo di tipologie di dichiarazioni di record Numero complessivo di variabili record dichiarate Record Var Decl (Conv%) Numero complessivo di variabili record convertibili automaticamente Assessment di migrazione Comprendere il report di assessment Record Var Uses (Tot) Record Var Uses Conv%) Numero di statement rownum Exception Handler Numero di statment pragma Rownum Numero di variabili record convertibili automaticamente Pragma Numero di variabili record dichiarate ed utilizzate Numero di exception handlers Unparsed (Tot) Salvare il report Salvare il report ... In formato csv Extended HTML Report Opzioni Generate expanded HTML database report Report directory È il default. Genera il report in formato HTML esaustivo La cartella di output del report Queries list Informazioni statistiche ed altro Demo. Generazione report Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Performance tuning Test e integrazione Migrazione di schemi È un processo suddiviso in due fasi: Generazione degli script di creazione degli oggetti dello schema Gli script creano tabelle e oggetti correlati I tipi di dati corrispondenti vengono individuati cercando di evitare errori di troncamento delle informazioni Deployment delle script Sincronizzazione del database con SSMA Gli script possono essere utilizzati direttamente con i tool di SQL Server Migrazione di schemi Conversione da PL/SQL a T-SQL Tipi di dati diversi Operatori diversi Sintassi diverse Oggetti diversi Microsoft SSMA può: Convertire Emulare Segnalare con dei warning Code Panels View SQL View Code Panels View Columns View Code Panels View Parsed SQL View Con formattazione / indentazione Code Panels View Zebra Parsed SQL View Relazioni tra src e dst evidenziate con colori ! Parameters View Interfaccia dei parametri Demo. Migrazione oggetti schema Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Performance tuning Test e integrazione Migrazione dei dati Operazione “single click” Le colonne sono mappate automaticamente Dopo la conversione viene creato un report di migrazione Migrazione dei dati I due server vengono configurati come linked server Possibile scegliere fra due provider: Oracle OLEDB Provider Microsoft OLEDB Provider for Oracle SSMA suggerisce Oracle Provider (supporta anche la migrazione di tipi binary) Demo. Migrazione dei dati Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Performance tuning Test e integrazione Conversione del codice Criticità Trigger Cursori System packages Differenze sintattiche Conversione del codice SSMA converte automaticamente Codice contenente logica business Dynamic SQL Oracle System packages Conversione di funzioni e trigger Funzioni PL/SQL vengono convertite in funzioni T-SQL Trigger PL/SQL vengono convertite in trigger TSQL PL/SQL T-SQL Before trigger Instead of trigger After trigger After trigger :new and :old Tabelle Inserted e deleted Opzioni Menu Tools – Project Options [F12] Project Options Opzioni avanzate Type mapping al volo (piccola demo) Opzioni avanzate Schema mapping Un “map” per volta Oggetti di sistema non possono essere mappati Esempio di migrazione create or replace FUNCTION "ITEM_OWNER".FTest1(x in integer, y in integer) return integer is Result integer; begin Result := x + y + 0; return(Result); end FTest1; CREATE FUNCTION u2.FTEST1 ( @x numeric(38), @y numeric(38) ) RETURNS numeric(38) AS BEGIN DECLARE @Result numeric(38) BEGIN SET @Result = (@x + @y + 0) RETURN @Result END RETURN null END Convertire sequence in identity da INSERT INTO TABLE1(ID,A,B) VALUES (SEQUENCE1.nextval,1,2); a INSERT INTO TABLE1(A,B) VALUES (1,2) Demo. Migrazione logica di business Altre opzioni Mostrare le differenze SHOW DIFF Salvare le script Oracle e SQL Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Performance tuning Test e integrazione Testing SSMA è in grado di testare automaticamente: View Funzioni Stored procedure SQL statements Prepara test per: SQL Server e driver JDBC Linked Server ad Oracle Testing Prerequisito SSMA Option Pack TEST_PLATFORM user in Oracle Test_Platform_DB database in SQL Server Suggerimento Effettuare il backup dei dati prima di testare Migration tester workflow Reporting dei test Numero di oggetti testati Numero di test effettuati Successi e fallimenti Demo. Test codice migrato Risorse http://www.microsoft.it http://www.microsoft.com/sql http://www.microsoft.com/sql/solutions/ssm/default.mspx http://msdn.microsoft.com Migrare da Oracle a SQL Server con SSMA Giuseppe Dimauro CTO Code Architects srl Microsoft MSDN Regional Director [email protected] www.codearchitects.com www.dotnet2themax.it www.ugisharepoint.it