Migrare da Oracle a SQL Server con SSMA Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Migrare da Oracle a SQL Server con SSMA
Agenda La migrazione di database Perché migrare Le parti coinvolte Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Schema Dati TRASFORMAZIONE: SQL statements Stored procedures Triggers Viste Record Cursori Sequenze User-defined functions Packaged functions Tabelle Indici Constraints Defaults SQL Server Oracle Re-host di un database da un RDBMS a un altro
La migrazione di database Applicazione PL/SQL T-SQL SQL Server Oracle
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) Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Rischi di una migrazione manuale Con una migrazione manuale si va incontro ai seguenti rischi da mettere in conto: Mesi di lavoro Può spesso costare più di 100K $ Test: L’applicazione convertita alla fine funziona veramente ? 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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à Prerequisiti Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Ridurre tempi e costi Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Test e integrazione Performance tuning
Installazione e configurazione Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Installazione e configurazione Extension Pack Extension Pack Connessione source Caricamento oggetti DB Generazione assessment reports Stima tempi Conversione oggetti Salvataggio script Migrazione dati Connessione target Esecuzione script salvati Test Redirect applicazione su DB target J2SE 1.4.2 Microsoft SSMA
Source DB - Object panel Target DB - Object panel Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Uno sguardo a SSMA Source DB - Object panel Source DB - Code panel Source panel Target DB - Code panel Target DB - Object panel Target panel
Menu File e Tools: Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Menu File e Tools:
Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Allow sequence-to-identity conversion 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 Mostra le dialog per accedere alle sequenze di sistema. Abilitato soltanto se “Insert into identity” è attivo Convert transaction processing statements 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
Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ View Menu
View – Synchronized Mode
View – Zebra mode Evidenzia con colori entità correlate Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ View – Zebra mode Evidenzia con colori entità correlate To enter this mode, click Zebra Mode on the View menu. In this mode, code components in the source object are correlated with the corresponding components in the target object, as shown in figure below. After converting a procedure, the code will appear with different colors corresponding to code components. Thereafter, simply click on the component to see how it is being converted for the target database. Zebra Mode is extremely useful for code migration, providing help in understanding the changes made to code structure during conversion.
View – Show Diff Mode
Processo di migrazione Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Test e integrazione Performance tuning
Comprendere il tool di assessment Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Comprendere il tool di assessment
Assessment di migrazione Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Assessment di migrazione Comprendere il report di assessment Total Objects Numero totale di oggetti nel database. Person Hours (tot) Stima in ore per una conversione manuale Complexity Complessità del lavoro di traduzione All (tot) 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) Numero complessivo di tipologie di dichiarazioni di record Record Type Decl (Conv%) Numero complessivo di dichiarazioni record convertibili automaticamente Record Var Decl (Tot) 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) Numero di variabili record dichiarate ed utilizzate Record Var Uses Conv%) Numero di variabili record convertibili automaticamente Pragma Numero di statment pragma Rownum Numero di statement rownum Exception Handler 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 Report directory La cartella di output del report Queries list Informazioni statistiche ed altro
Demo. Generazione report Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Demo. Generazione report
Processo di migrazione Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Test e integrazione Performance tuning
Migrazione di schemi È un processo suddiviso in due fasi: Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Microsoft SSMA può: Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Code Panels View Parsed SQL View Con formattazione / indentazione To aid readability by database developers and database administrators, the Parsed SQL view displays formatted SQL code with proper indentation (see a figure below).
Code Panels View Zebra Parsed SQL View Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Code Panels View Zebra Parsed SQL View Relazioni tra src e dst evidenziate con colori ! In this view, SQL code is color-coded. If the source database object has just been converted, the source and target code panels will show color-coded, correlated code elements
Parameters View Interfaccia dei parametri Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Parameters View Interfaccia dei parametri This view is provided for procedures and functions (see a figure below). In this view arguments of procedures and functions displayed like table. This mode is applied to Source Database code panel only.
Demo. Migrazione oggetti schema Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Demo. Migrazione oggetti schema
Processo di migrazione Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Test e integrazione Performance tuning
Migrazione dei dati Operazione “single click” Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Migrazione dei dati Operazione “single click” Le colonne sono mappate automaticamente Dopo la conversione viene creato un report di migrazione
Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Demo. Migrazione dei dati
Processo di migrazione Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Test e integrazione Performance tuning
Conversione del codice Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Conversione del codice Criticità Trigger Cursori System packages Differenze sintattiche
Conversione del codice Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 T-SQL PL/SQL T-SQL Before trigger Instead of trigger After trigger :new and :old Tabelle Inserted e deleted
Opzioni Menu Tools – Project Options [F12] Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Opzioni Menu Tools – Project Options [F12] SSMA provides a number of configuration options that affect its behavior. All of them are accessed by clicking Project Options on the Tools menu.
Project Options
Opzioni avanzate Type mapping al volo (piccola demo) Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Opzioni avanzate Type mapping al volo (piccola demo) Type mapping allows users to customize default type conversion behavior. For every supported Oracle type, there is a default mapping to a SQL Server type (for example, a table column of type NUMBER(38, 0) will be converted by SSMA as a column of type NUMERIC(38, 0)), but in some cases you may want to override this behavior and provide your own mapping. Type mapping in SSMA can be specified individually for one object in the source database, all objects in a category (such as procedures or functions) or schema, all objects in the database, or all objects in the entire project.
Opzioni avanzate Schema mapping Un “map” per volta Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Opzioni avanzate Schema mapping Un “map” per volta Oggetti di sistema non possono essere mappati Default schema mapping now exists in SQL Converter. Every Oracle schema (user) is mapped to a database/user combination during conversion to SQL Server. Schema mapping allows users to map any Oracle schema (except system schemas) to the default SQL Server database and any user within this database. Users can manage schema mapping only when SSMA is connected to both databases. You can manage schema mapping in two ways: by selecting the Oracle root element in the source tree and selecting its properties, or selecting any Oracle schema in the source tree and selecting its properties too.
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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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) Sequence-to-identity conversion provides an alternative approach to simulating Oracle sequences in SQL Server. By default, sequences are converted with the help of special sequence emulators that provide accurate replacement for Oracle sequences. But in some cases, you might want to use the IDENTITY property of columns in SQL Server to achieve the same goals. SSMA supports conversion of sequences into IDENTITY columns, but not all uses of sequence can be correctly represented in this case. To use sequence-to-identity conversion, you must enable this feature in options. Press F12, and on the SQL Converter tab, select Allow sequence to identity conversion. When sequence-to-identity conversion is enabled, Columns mode for every table in the source database displays an additional column, Sequence/Identity (see figure below). It is used to specify which column of the table should have the IDENTITY property after conversion and to bind one of the sequences in the source database to this column. For example, to bind sequence SEQUENCE1 to column ID of the selected table, you need to select SEQUENCE1 in the Sequence/Identity cell for the ID column. Note: Only one column in the table may be selected for sequence-to-identity conversion, and every sequence can be bound to only one column. The table that has sequence bound to the IDENTITY column will be converted with the proper IDENTITY clause. You can see this in SQL mode for the converted table. If sequence is selected for sequence-to-identity conversion, statements accessing this sequence will be converted in a slightly different manner: 1) INSERT statements that perform insertions of <sequence>.nextval into the IDENTITY column are modified to exclude the IDENTITY column. For example, a statement with SEQUENCE1 bound to ID column of TABLE1, INSERT INTO TABLE1(ID,A,B) VALUES (SEQUENCE1.nextval,1,2); will be converted to a statement like this one: INSERT INTO TABLE1(A,B) VALUES (1,2) 2) SELECT <sequence>.nextval INTO :new.<identity_column> statements in BEFORE triggers are skipped during conversion. 3) Statements retrieving <sequence>.currval are changed to use emulation function. All other uses of sequence or IDENTITY column will produce errors. If you enable insertions to IDENTITY column, INSERT statements that specify values other than <sequence>.nextval for IDENTITY column will be converted, too, but with this option enabled, converted code may affect emulation of currval for <sequence>.
Demo. Migrazione logica di business Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Demo. Migrazione logica di business
Altre opzioni Mostrare le differenze Salvare le script Oracle e SQL SHOW DIFF Salvare le script Oracle e SQL
Processo di migrazione Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Processo di migrazione Assessment progetto Migrazione schema Migrazione dati Migrazione logica business Test codice migrato Migrazione applicazione Test e integrazione Performance tuning
Testing SSMA è in grado di testare automaticamente: View Funzioni Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Suggerimento Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Migration tester workflow Reporting dei test Numero di oggetti testati Numero di test effettuati Successi e fallimenti
Demo. Test codice migrato Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Demo. Test codice migrato
Risorse http://www.microsoft.it http://www.microsoft.com/sql Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ 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 Migration Day Roma 5 dic 2005 http://www.codearchitects.com/ Migrare da Oracle a SQL Server con SSMA Giuseppe Dimauro CTO Code Architects srl Microsoft MSDN Regional Director gdimauro@codearchitects.com www.codearchitects.com www.dotnet2themax.it www.ugisharepoint.it