Oracle to MySQL Migration

Werbung
Oracle nach MySQL Migration
Gespeicherte Prozeduren, Packages,
Trigger, Scripte und Anwendungen
White Paper
März 2009, Ispirer Systems Ltd.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
1
Einführung
Der Zweck vom diesen White Paper ist Faktoren, die Datenbank-Migration von Oracle nach
MySQL beeinflußen, zu beschreiben. Kosten- und Risikoaspekten werden detailliert
werden, als auch Werkzeuge und Methoden, die eine Konvertierung von hoher Qualität
gewährleisten.
Das ist wahr, dass die Sun MySQL Datenbank drastisch Gesamtbetriebskosten (eng. Total
Cost of Ownership (TCO)) reduzieren kann durch Reduzierung der Kosten für Lizenzen,
Hardware und Verwaltung. Das höchste Risiko der Übertragung auf die MySQL Plattform
ist Schwierigkeiten bei der Migration der Geschäftslogik von Oracle, besonders wenn die
bestehende Anwendungen intensiv PL/SQL Prozeduren, Trigger, Packages und Oracle
spezifische SQL-Anweisungen in Oracle benutzen.
Die Migration von Oracle nach MySQL kann problematisch, zeitaufwändig und teuer sein.
Immerhin, nachgewiesene Methoden und Werkzeuge können drastisch Kosten einer
Migration und dafür gebrauchte Zeit reduzieren, als auch Risiken wesentlich beseitigen.
Mithilfe unseres Migrationsprodukts SQLWays kann die Migration bewertet, durchgedacht
und hoch-automatisiert werden. Ein richtiger Einsatz der automatisirten Werkzeuge und
leistungsstarke Projektsverwaltung am Ort gewährleisten Einsparungen um mehr als 70%
im Vergleich mit Verwendung von traditionellen manuellen Techniken der Migration.
Zusammen mit Einsparungen, die mit Benutzung von MySQL verbunden sind, gibt es
Kosteneinsparungen, die mit Benutzung des Werkzeugs für Migration SQLWays
verbunden sind. SQLWays ist ein attraktives Angebot für Migration.
Herausforderungen
Die Oracle-Datenbank bietet fortschrittliche Möglichkeiten für Entwicklung der
Geschäftslogik an, die sich ganz innerhalb der Datenbank befindet und PL/SQL
gespeicherte Prozeduren, Funktionen, Packages und Trigger benutzt.
Oracle PL/SQL ist eine wartbare und perfomante prozedurale Erweiterung von SQL, die von
Oracle dringend empfohlen wird, denn sie verbessert Leistungsfähigkeit. In meisten
Anwendungen führt die Benutzungvon PL/SQL normalerweise zu einer großen Anzahl
von Prozeduren, Packages und Trigger. Datenbank MySQL benutzt kein PL/SQL, obwohl
sie ähnliche Funktionalität hat.
Gemeinsam mit der spezifischen Syntax von Oracle bietet PL/SQL viele nicht-ANSI
kompatibele Merkmale an, einschließlich der Merkmale, die es nur in Oracle gibt. Diese
spezifische Merkmale sind:
• Packages - shared-Variablen in Packages, eingebettete Packages
• %TYPE, %ROWTYPE, Ausnahmen
• Objektorientierte Merkmale: Objekttypen, Funktionen, und Sammlungen
• Business intelligence und XML Merkmale usw.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
2
Migration von Oracle nach MySQL kann eine komplizierte Aufgabe sein, besonders
wenn spezifische Merkmale von Oracle benutzt werden, wie z.B. die vorstehend
beschriebene Merkmale.
Dennoch kann diese Migration relativ einfach und risikolos sein: z.B. wenn eine ZielDatenbank relativ wenige Tabellen hat und eine einfache Geschäftslogik hat.
Weil Kosten und Risiken können sich abhängig vom Projekt variieren, barucht man eine
vorläufige Bewertung.
Bewertung
Das Ziel von Bewertung ist die Größe, Machbarkeit, Kosten und Risiken einer DatenbankMigration von Oracle nach MySQL zu bestimmen.
Bewertung einer Datenbank
Erstens müssen Sie Typen der migrierten Datenbankobjekte und ihre Anzahl bestimmen.
Datenbankobjekte schließen die folgenden objekte ein:
•
•
•
•
•
•
•
Tabellen
Sichten
Pozeduren
Funktionen
Packages
Trigger
Sequenzen, Synonyme usw.
Wenn Sie den PL/SQL Code konvertieren müssen (Prozeduren, Packages, Funktionen und
Trigger) oder Sichten/Abfragen, die spezifische Oracle SQL-Syntax enthalten, müssen Sie
kennenlernen, welche Merkmale benutzt werden und wieviel Merkmale es gibt. Unter der
Charakteristika, die gezählt werden müssen, gibt es:
•
•
•
•
•
•
•
Nicht-ANSI kompatible SQL-Funktionen, Operatoren und Anweisungen
Resultsets
Cursor Loops
Ausnahmen
Temp-Tabellen
Objekttypen und Funktionen
Sammlungen
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
3
•
•
•
•
Dynamic SQL
Eingebettete Packages
OLAP-Funktionen
XML-Funktionen usw.
Nachdem Sie die Übersicht einer Datenbank beendet haben, wäre es besser, MySQLÄquivalente oder Lösungen zu wählen und spezifische Oracle-Funktionalität zu ersetzen.
Sie können typische Lösungen dafür in den folgenden Kapiteln finden.
Bewertung einer Anwendung
Gemeinsam mit Schema und Geschäftslogik auf der Serverseite kann es ebenfalls
notwendig sein, SQL-Anweisungen in den Anwendungen zu modifizieren. Das ist wichtig
auszuwerten, wieviel gemacht werden muss, um eine Migration durchzuführen.
Am Anfang müssen Sie checken, welche Datenbank-API, um auf die Oracle Datenbank
zuzugreifen, in Ihren Anwendungen benutzt wird. Das ist notwendig kennenzulernen, wie
viel Quelle-Dateien einer Anwendung der spezifische Oracle Code enthält, die endlich
modifiziert werden müssen mit MySQL zu arbeiten.
Meisten Anwendungen benutzen eine standardisierte API wie ODBC, JDBC, oder ADO.NET
auf Oracle zuzugreifen, aber einige Anwendungen können eine native API benutzen wie
Oracle OCI oder Pro*C/C++. Sammlung von dieser Information ist obligatorisch.
Sogar wenn Sie eine standisierte API benutzen, wie z.B. solche API, die ODBC/JDBC Treiber
verwenden, müssen bestehende SQL-Anweisungen auch verändert werden. Zum Bespiel,
DECODE-Funktionen oder hinterlassene Outer Join Syntax (*) muss modifiziert werden. Es
wird empfohlen, eine Anzahl von nativen SQL-Anweisungen zu bestimmen.
Wenn eine Anwendung eine native API benutzt, wie z.B. Oracle OCI, müssen Sie dann den
Code von Datenbank-Zugriff vollständig umbauen und MySQL API oder ODBC verwenden.
Werkzeuge für Bewertung
Das ist wichtig zu verstehen, wieviel Wert spezifische Merkmale einer Datenbank haben. Wie
kann man besser die Benutzung dieser Merkmale bewerten?
Erstens müssen Sie die Anzahl von Tabellen, Prozeduren, Sichten, usw. bestimmen,
wie es in der folgenden Tabelle gezeigt wird. Um eine ausführlichere Analyse
durchzuführen, können Sie das Produkt SQLWays von Ispirer benutzen, um
statistische Information zu erhalten.
Hier gibt es ein Muster der Bewertung:
Datenbank
Tabellen
Sichten
Prozeduren
Funktionen
Trigger
Packages
Anzahl
350
280
420
135
50
10
Datenbank-Details
BLOBs
Outer Joins
Ref Cursors
Erweiterungen
Temp-Tabellen
37
155
89
450
34
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
4
Anwendung
Java/JDBC
Outer Joins
SQL-Funktionen
Resultsets
590 files
190
356
47
Migration - Behandlung Automatisierte Konvertierung
Nachdem Sie Ergebnisse der Bewertung bekommen haben, können Sie einen Plan Ihrer
Migration machen. Wenn Sie nur einige dutzend Prozeduren haben, können Sie manuelle
Konvertierung durchführen, aber wenn Sie einige hundert oder tausend Prozeduren
haben, wäre es viel besser unter den automatisierten Werkzeuge für Migration etwas für
sich wählen. SQLWays bietet auch eine Lösung für Sie .
Kosten und Risiken
Kosten und Risiken einer Konvertierung hängen von der Größe des Projekts ab. Bitte
bemerken Sie, dass Kosten und Risiken auch von Komplizierheit und Frequenz der OracleMerkmale in einer Datenbank oder Anwendung beeinflusst werden. Je mehr OracleMerkamale es gibt, desto schwieriger und teuerer eine Konvertierung ist. Umso mehr, je
mehr Oracle-Merkmmale benutzt werden, desto mehr automatisierte Werkzeuge Ihnen
helfen werden, den Erfolg zu erreichen.
Kosten einer Migration von Daten und DDL
Migration von Daten und DDL (Schema) Objekte wird normalerweise problemlos
durchgeführt, denn es gibt viele Werkzeuge auf dem Markt, die Ihnen bei solcher
Migration helfen können.
Typische ;igration von Daten und DDL schließt Konvertierung der folgenden Objekte ein:
•
•
•
•
Datentypen
Beschränkungen (Primär-und Fremdschlüßel, unique-Beschränkungen,NULL,defaults,usw.)
Verlagerung von Daten
Indexe
Obwohl es Unterschiede in Syntax zwischen Oracle und MySQL DDL-Anweisungen gibt,
haben beide Datenbanken ähnliche Datentypen (Charakter, Anzahl, Datum, Zeit, LOBs),
und Sie können ähnliche Integrität-Beschränkungen spezifizieren.
Muster-Bewertung einer DDL-/Daten-Migration:
Datenbank
Tabellen
LOBs
Max. Reihen der Tabellen
Max. Größe der Tabellen
Migrationsprozess
Bewertung
MySQL Konfiguration
Automatisierte Übertragung
Teste, Veränderungen der
Konfigurationen, nächste Iterationen
Gesamtzeit
<100 tables
10 columns
<10M
<300 Mb
2-8 hrs
4-16 hrs
2-4 hrs
4-12 hrs
12-40 hrs
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
5
Werkzeuge
Gratis, oder weniger als $500
Dank der Automatisierung ist der Preis einer Migration von DDL und Daten nicht direkt
proportional zur Anzahl von Tabellen und Daten. Zum Beispiel, der Preis einer Migration
für 100 und für 300 Tabellen kann derselbe sein, wenn Tabellem ähnliche Struktur und
Größe von Daten haben.
Als die Anzahl von Tabellen und ihre Größe sich steigern, brauchen Sie mehr Zeit um eine
MySQL Datenbank richtig einzustellen, Verlagerung von Daten anzupassen und auf
verschiedene Aufgabe sich zu konzentrieren, z.B. auf Schaffen von Indexen.
Risiken bei der typischen Migration von DDL und Daten
Typische Migration von DDL/Daten wenige Risiken bringt. Mithilfe SQLWays kann man die
ganze Übertragung einer Datenbank im Evaluierungsmodus realisieren, Daten übersehen,
und Anwendungen benutzen, die mit der neuen MySQL Datenbank verbunden werden:
Das ist ein üblicher Arbeitsablauf:
1. Übertragung der ganzen Datenbank im Evaluierungsmode zu realisieren
2. Fehler der Übertragung, Strukturen der Tabellen, Anzahl von Reihen in Datenbanken zu
checken
3. Daten in allen repräsentativen Tabellen übersehen und prüfen mithilfe SQL-Werkzeuge
wie z.B. Oracle SQL*Plus, MySQL Query Browser oder MySQL Befehlszeilen-Programm.
4. Die mit MySQL verbundene Ziel-Anwendung ausführen und prüfen
Komplizierte Datenmigrationen
Obwohl Migration von Daten/DDL im Vergleich mit Migration der Geschäftslogik
insgesamt relativ enfach ist, gibt es einige Bedingungen, die Migration von Daten/DDL
erschweren können:
•
Große Volumen von Daten
Wenn Sie große Volumen von Daten migrieren müßen, dann müssen Sie sich mehr um
Konfiguration von MySQL Servern bemühen.
Große Volumen von Daten können den Migrationsprozess beeinflussen, besonders in Bezug
auf die für Migration gebrauchte Zeit. Um die Zeit für Migration zu reduzieren, können Sie
die Migration auf der mitlaufenden Weise durchführen. Dadurch steigert sich die
Kompliziertheit einer Migration.
Also, die Übertragung von großen Datenvolumen kann Fehlerbehandlung erschweren, denn
Sie können sich nicht erlauben, die ganze Migration noch einmal zu laufen, wenn nur einige
Tabellen falsch konvertiert wurden.
Der Projekt kann Vorteile aus der Benutzung von Werkzeugen ziehen, die BULK INSERT
Optionen haben, weil die Werkzeuge, die Ergebnisse nach der Konvertierung jeder Reihe
zeigen, nicht mehr für die Konvertierung von großen Volumen von Daten gültig sind.
• Minimale Ausfallzeit
In einigen missionskritischen Umgebungen müssen Sie die Ausfallzeit möglichst minimieren.
Um diesen Anfoderungen zu entsprechen, müssen Sie den Migrationsprozess ausführlich
durchdenken, um die Verlagerung von Daten gleichzeitig durchzuführen, oder statische
Tabellen aus dem Ausfallzeitsfenster zu übertragen. Manchmal müssen
Replikationswekzeuge benutzt werden, um die Ausfallzeit zu reduzieren.
Leistungsanforderungen
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
6
Einige Umgebungen stellen sehr strenge Anforderungen an Leistungsfähigkeit der
Anwendungen. Während einer Migration nach MySQL ist es obligatorisch, dass die
bestehende Leistungsfähigkeit behalten und verbessert werden muss. Deshalb müssen Sie
mehr Zeit auf Design und Anpassungen einer Datenbank verwenden, umso mehr, sie
müssen Prüfungsmigrationen realisieren, um die Leistungsfähigkeit, die Sie nach der
Migration haben werden, zu analysieren.
Risikominderung für komplizierte Migrationen von DDL und Daten
Komplizierte Datenmigrationen können mit einem einfachen Doppelklick nicht realisiert
werden. Die Proof-of-Concept Migration muss durchgeführt werden um allen
Anforderungen gerecht zu werden.
Gewöhnlich wird der folgende Migrationsprozess für komplizierte Datenmigrationen
empfohlen:
•
•
•
Proof-of-Concept Migration um Durchführbarkeit der Anforderungen zu checken
Prüfungsmigration um die ganze Produktionsmigration zu emulieren und allumfassende
Teste durchzuführen
Productionsmigration
Kosten einer Konvertierung von Geschäftslogik
Wenn Ihre Datenbank einige dutzend Prozeduren und Trigger enthält, ist es einfacher, sie
manuell nach MySQL SP Syntax überzuschreiben. Aber wenn Sie einige tausend
Prozeduren und Trigger haben, dann ist manuelle Konvertierung ziemlich teuer. Sie
könnten über ein automatisiertes Migrationswerkzeug nachdenken.
Der Preis einer manuellen Konvertierung ist direkt proportional zur Anzahl von
Codezeilen, die Sie konvertieren müssen.Andererseits können automatisierte Werkzeuge
den Preis begrenzen und Migration der mehreren Millionen von Codezeilen vernünftig in
Bezug auf Kosten und Aufwand machen.
Abhängig von konvertierten Codezeilen kann automatisierte Konvertierung der
Geschäftslogik mithilfe eines Werkzeugs wie z.B. SQLWays 7-10 mal weniger als eine
manuelle Konvertieung kosten.
Vielfalt und Häufigkeit von spezifischen Oracle Merkamalen bestimmen die Kompliziertheit
von Migration der Geschäftslogik und den Automatisierungsgrad, den Werkzeuge
gewährleisten können.
Nach der Meinung unserer Experten, für effektive Automatisierung muss ein
Migrationswerkzeug wie z.B. SQLWays bis zu 95% von Geschäftslogik konvertieren.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
7
Projektabschätzung einer Mustermigration der Geschäftslogik auf der Serverseite sieht so aus:
Datenbank
Gespeicherte Prozeduren
Trigger
Funktionen
Packages
1000
300
250
10 (50 Prozeduren per Package)
Manuelle Konvertierung 5,000 Stnd (~30 Männer-Monate)
Personalkosten
$50,000-$250,000 (abhängig
vom Land)
Automatisierte Konvertierung
Bewertung, Besprechungen
der Lösungen
16-40 Stunden
Iterative Konvertierung,
Analyse
Teste
40-80 Stunden
Gesamtzeit
Gesamtkosten
96-200 Stunden
weniger als $5,000-$10,000
40-80 Stunden
Wenn Sie Migration von DDL/Daten mit Migration der Geschäftslogik vergleichen, werden
Sie sehen, dass die letztere bis zu 95% der Gesamtkosten für ein Prokekt betragen kann.
Das ist immer für große Projekte der Migrationen von Oracle nach MySQL gültig.
Risikominderung für Konvertierung der Geschäftslogik
Wenn es viele Codezeilen für Konvertierung gibt und wenn vielfältige DatenbankMerkamale von Oracle benutzt werden, dann müssen Sie einige wichtige Schritte
verfolgen, um alles zu konvertieren.
•
Erfahrung
Das Personal, das für ein Migrationsprojekt verantwortlich ist, muss Entwickler
einschließen, die Verwaltungskompetenz und Erfahrung sowohl in Oracle als auch in
MySQL besitzen. Sie müssen Größe, Herausforderungen, Aufgaben und Phasen einer
Migration verstehen, um eine Migration erfolgreich zu erfüllen.
• Allumfassende Bewertung
Am Anfang müssen Sie die allumfassende Bewertung der Datenbanken machen. Endlich
werden Sie wissen, welche Funktionalität Sie konvertieren müssen, welche Lösungen Sie
verwenden werden, um die nicht-ANSI-konforme Oracle Merkmale zu ersetzen.
Sie müssen bestimmen, ob es eine Lösung für jedes verwendete Merkmal gibt oder nicht.
Das ist nicht einfach, für einige Oracle Merkmale Äquivalente in MySQL zu finden, deshalb
Sie müssen die Oracle-Funktionalität manchmal völlig umbauen.
•
Proof-of-Concept für vollständigen Code
Automatisierte Werkzeuge wie SQLWays können Konvertieungen des vollständigen Code am
Anfang der Bewertung einer Migrationrealisieren. Es wird von uns emfohlen das für jede
komplizierte Migration zu machen, denn dadurch können Sie mögliche Probleme enthüllen
und den möglichen Automatisierungsgrad und Erfolgsfaktor einer Migration mithilfe eines
Werkzeugs feststellen.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
8
Umso mehr, dann werden Sie sicher, dass Konvertierung vom schwierigen PL/SQL Code zu
einem niedrigen Preis machbar ist.
•
Automatisierte Migration möglichst oft verwenden
Gemeinsam mit dem hohen Preis reduziert manuelle Migration die Erkennbarkeit der
Probleme während einer Anfangsphase, dass kann dazu führen, dass Sie die Migration
später umbauen müssen werden. Dadurch werden Aufwände und Kosten noch erhöht.
Im Vergleich dazu kann die Konvertierung mit Hilfe von automatisierten Werkzeugen zu
einem niedrigen Preis ständig wiederholt werden, und dabei gibt es immer zuständige
Feedback. Dadurch werden Sie Migrationen von hoher Qualität haben ohne erhebliche
Kostennachteile.
Insgesamt ist manuelle Konvertierung eine bemühende Aufgabe, die oft zu menschlichen
Fehler führt. Oft haben Entwickler verschiedene Ergebnisse einer Konvertierung für
den gleichen Code. Endlich führt das zu erheblichen Kosten und Zeitverlust während der
Prüfungsphase.
• Anfangsprüfung
Anfangsprüfungen werden gebraucht, um Projektrisiken zu minimieren. Sie können
Modulteste durchführen oder den Code übersehen, sogar wenn funktionale Teste auf der
Anwendungsebene noch nicht verfügbar sind.
Sie können Merkmale automatisierter Werkzeuge benutzen, um Testfälle zu generieren und
Prozeduren und Funktionen mit spezifischen Werten auzurufen und Ergebnisse zu
vergleichen. Bitte bemerken Sie, dass funktionale Teste dann jedenfalls auf der
Anwendungsebene durchgeführt werden müssen, aber die vorbeschriebene Methode auch
viele mögliche Probleme der Konvertierung entdecken kann.
Konvertierung einer Anwendung
Gemeinsam mit Konvertierung der Geschäftslogik auf der Serverseite in meisten
Fällen müssen Sie auch Ihre Anwendungen modifizieren, um mit MySQL zu arbeiten.
Manchmal gibt es nicht-ANSI SQL-Anweisungen in Java oder PowerBuilder
Anwendungen, i.e. Syntax, die von MySQL SQL-Syntax sich unterscheidet und
modifiziert werden muss.
Die typische Merkmale von Oracle-Syntax, die größte Sorgen bei der Migration von Oracle
nach MysSQL machen, sind Left Outer Join (+) Syntax-Scripte. Funktionen wie DECODE,
NVL, und SYSDATE müssen auch sorgfältig behandelt werden.
Sie können Namen der Funktionen nicht einfach durch Suchen/Ersetzen in solcher
Situationen ersetzen. In vielen Fällen haben Funktionen Syntax mit verschiedenen
Parametern oder brauchen sie Veränderungen von SQL-Anweisungen wie z.B. von left
outer join.
Umso mehr, Ersatz der Zeichenketten kann den Text in unbeabsichtigten Plätzen ändern,
wie z.B. Charakter einer Zeichenkette oder Anweisungen in Java-Sprache.
Die beste Behandlung ist ein Werkzeug wie z.B. SQLWays benutzen, das
automatisch den Code einer Anwendung modifizieren und SQL-Anweisungen nach
entsprechender MySQL Syntax konvertieren kann.
Solche Werkzeuge können richtig SQL-Anweisungen im Code identifizieren,
Konvertierung durchführen, Berichte über alle Veränderungen generieren und dadurch
die Konvertierung einer Anwendung erleichtern.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
9
Planung – Phasen einer Migration
Ausführliche Planung ist sehr wichtig für erfolgreiche Migration, und typische Phasen einer
Migration sind:
•
Bewertung
Bewertung (die früher in diesem Dokument beschrieben wurde) ist notwendig, um
Datenbanken und Anwendungen, die Sie migrieren möchten, zu analysieren, die Größe
einer Migration zu bestimmen, und jede spezifische Oracle Funktionalität, die nach
MySQL umgebaut werden muss, festzustellen.
Mit Bezug auf die Information, die während der Bewerungsphase gesammelt wurde,
können Sie Behandlungen bestimmen, die gebraucht werden müssen (manuelle oder
automatisierte Konvertierung), als auch Kosten und Risiken der Migration.
•
Vollständige Konvertierung am Anfang – Proof-of-Concept
Wenn Sie z.B.eine Datenbank mit 2,000 Prozeduren haben, können Sie SQLWays
verwenden, um den vollständigen Code zu konvertieren während der Phase Proof-ofConcept. Diese Methode wird von uns empfohlen, sogar wenn Sie entschieden haben,
jeden einzelnen Modul zu testen.
Ganz am Anfang während dieses Prozesses (wenn automatisierte Werkzeuge benutzt
werden) werden Feedback und Erkennbarkeit in Bezug auf Migration verfügbar. Das ist ein
direkter Kontrast zur manuellen Migration, bei der viele Arbeitsstunden gebraucht werden
bevor es klar wird, dass es ein Fallstrick bei der Migration gibt, und dass ein Rückschritt
benötigt ist.
Sie können einen integrierten und einheitlichen Ansatz verwenden durch Benutzung von
einem der automatisierten Lösungen wie SQLWays. Weil verschiedene Mitarbeiter
verschiedene Aufgaben einer Migration gleichzeitig lösen, werden sehr oft verschiedene
Behandlungen und Prozeduren für die gleiche Syntax verwendet. Aber endlich ist es
einfacher, eine Migration prüfen und modifizieren, wenn die Ergebnisse der Migration
integriert und einheitlich sind.
Idealerweise werden 100% fehlerfreie Objekte in MySQL während einer Anfangsphase
geschaffen. Darunter versteht man, dass alle Tabellen, Funktionen, Prozeduren, Trigger
erfolgreich in MySQL geschaffen wurden.
Weil 100% Automatisierungsgrad einer Konvertierung ist ziemlich schwer zu erreichen für
jede Version aller Konvertierungswerkzeuge. Deshalb bietet Ispirer-Team kostenlose
Customization an (1-2 Tage für eine Einstellung), um fast 100% Automatisierung ganz am
Anfang während einer Bewertungsphase festzustellen.
• Laufzeitteste, logische Teste und Prüfungen der Leistungen
Migration wird oft für jeden einzelnen Modul durchgeführt. Nachdem Sie
Geschäftslogik auf der Serverseite konvertiert haben, sogar bevor Anwendungen
konvertiert worden sind und Teste auf der Anwendungsebene verfügbar sind,
müssen Sie Konvertierung einer Datenbank prüfen.
Sie können einige repräsentative oder kritische Prozeduren wählen und Übersicht vom Code
machen. Natürlich können Sie alle Probleme der Konvertierung sogleich nicht enthüllen,
aber jedenfalls ist das am Anfang einer Migration sehr nützlich. Mit diesem Code können Sie
ansehen, wie die Lösungen angewendet werden, und die Qualität einer Konvertierung
bewerten .
Das wäre prima, eine Liste der Charakteristika einer Konvertierung zu machen, die Sie
ausführlich analysieren können.
Sogar wenn Sie eine Prozedur oder Funktion in einer Datenbank erschaffen können, ist das
nicht selbstverstädlich, dass es keine kritische Fehler gibt. Viele Fehler nach der Ausführung
der Prozeduren entdeckt werden können. Eine einfache und effektive Weise von Prüfung der
Prozeduren ist Testfälle zu generieren.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
1
0
SQLWays kann eine Reihe von Prozedur-Aufrufen mit verschiedenen input Parametern
generieren. Durch Übersicht des Code, kann SQLWays entdecken, welche Werte,
Zeichenketten und Datenkonstanten, Bedingungen der Flusskontrolle benutzt werden, und
vernünftige Testfälle in vielen Situationen generieren.
Um allumfassende und leistungsfähige Teste der Logik und Leistungsprüfungen
durchzuführen, Können Sie Testscripte mit realen Daten aufbauen und dabei verschiedene
Szenarien realisieren.
Wenn Sie automatisierte Software für Qualitätssicherung Ihrer Oracle Datenbank und
Anwendungen benutzen, können Sie auch diese Software modernisieren um sie auf MySQL
zu verwenden und allumfassende Migrationsteste sicherzustellen.
Typische Lösungen für Konvertierung - Muster
Obwohl Aufgaben und Lösungen für Konvertierung abhängig vom Projekt sich
unterscheiden, sind viele von ihnen typisch für alle Migrationen.
Achtung. Alle Konvertierungen, die hier unten beschrieben werden, werden von SQLWays
automatisch durchgeführt.
DDL
Sowohl Oracle als auch MySQL unterstützen eine CREATE TABLE Anweisung, aber es gibt
viele Unterschiede in Syntax.
•
Datentypen
Oracle
CREATE TABLE employees
(
id NUMBER(5),
name VARCHAR2(120),
hire_date DATE,
salary NUMBER(7),
dept_id NUMBER(2)
);
•
MySQL
CREATE TABLE employees
(
id INT,
name VARCHAR(120),
hire_date DATETIME,
salary INT,
dept_id TINYINT
);
Reservierte Wörter
Oracle und MySQL benutzen verschiedene Sets von reservierten Wörter, deshalb müssen
einige Spaltennamen in MySQL-Anfragen (Queries) angegeben werden.
Oracle
MySQL
SELECT product_id, limit
FROM product_data;
SELECT product_id, `limit`
FROM product_data;
Queries und PL/SQL Code
Sie müssen SQL-Anweisungen modifizieren meistens um Syntax von Funktionen und
Ausdrücken zu verändern. PL/SQL muss völlig nach MySQL SQL prozeduraler Syntax
konvertiert werden .
• Outer Joins
Oracle unterstützt spezifische Syntax von Outer Joins, die in alten Anwendungen verbreitet ist.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
1
1
Oracle
MySQL
SELECT e.name, d.name
FROM employees e, departments d
WHERE e.dept_id = d.id(+);
SELECT e.name, d.name
FROM employees e LEFT OUTER JOIN
departments d ON e.dept_id = d.id;
•
der Spalten ID-Werte zuweisen
Oracle unterstützt keine Auto-Increment- (Identität)-Spalten, und ein Sequenz-Objekt
wird benutzt, um neue ID-Werte aus der Anwendung oder Trigger zuzuweisen.
Obwohl ein einzelnes Objekt benutzt werden kann, um Werte der multiplen Tabellen in
Oracle zuzuweisen, wird es in vielen Fällen nur für eine Tabelle verwendet, und diese
Funktionalität kann nach einer Auto-Increment Spalte in MySQL konvertiert werden.
Während automatisierter Konvertierung untersucht SQLWays SQL-Anfragen und INSERTAnweisungen in Anwendungen, Prozeeduren und Trigger um ID-Zuweisung zu
identifizieren und sie nach Auto-Increment Spalten in MySQL zu konvertieren.
Oracle
MySQL
CREATE TABLE employees
(
id NUMBER(5) PRIMARY KEY,
name VARCHAR2(120),
hire_date DATE,
dept_id NUMBER(2)
);
CREATE TABLE employees
(
id INT AUTO_INCREMENT PRIMARY
KEY,
name VARCHAR(120),
hire_date DATETIME,
dept_id TINYINT
);
CREATE TRIGGER emp_id BEFORE
INSERT ON employees
FOR EACH ROW
BEGIN
SELECT emp_id_seq.nextval
INTO :new.id FROM dual;
END;
•
-- Trigger is no required anymore
Multiple Trigger in einem Ereigniss
In Oracle können Sie für eine Tabelle einige verschiedene Trigger für das gleiche
Ereigniss definieren (fzum Beispiel, einige Trigger in einem INSERT-Ereigniss für
"Employees table" (Angestellte-Tabelle).
Das ist in MySQL unmöglich, weil Sie müssen den ganzen Code für ein Ereigniss im
derselben Trigger einsetzen.
•
Packages und gemeinsame Variablen
In Oracle ist ein Package eine Reihe von verbundenen Prozeduren und Funktionen, die
Variablen teilen können. Prozeduren und Funktionen vom Package müssen nach einzelnen
Objekten in MySQL konvertiert werden.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
1
2
Variablen von Packages können auf eine Prozedur vom Package modifiziert werden.
Umso mehr, andere Package-Prozedur kann einen modernisierten Wert sichten oder
ersetzen. Um diese Funktionalität in MySQL zu ersetzen, können Sie SessionVariablen, die mit dem Zeichen @ anfangen, benutzen.
Oracle
MySQL
CREATE PACKAGE BODY emp_pack
AS
CREATE PROCEDURE new_employee
BEGIN
…
IF @processed IS NULL
THEN @processed = 0;
processed NUMBER DEFAULT 0;
PROCEDURE new_employee AS
BEGIN
…
processed := processed + 1;
END;
PROCEDURE raise_salary AS
BEGIN
…
processed := processed + 1;
END;
END;
•
@processed = @processed + 1;
END;
CREATE PROCEDURE raise_salary
BEGIN
…
IF @processed IS NULL
THEN @processed = 0;
@processed := @processed + 1;
END;
END;
Rückkehr von Resultsets
Sie müssen CURSOR-Variablen benutzen (REF CURSORs) als OUT Parameter um
Resultset von Oracle zurückzusenden. In vielen Fällen kann das einfach nach
SELECT-Anweisung in MySQL konvertiert werden.
Oracle
MySQL
CREATE PROCEDURE get_salaries
(d_id IN NUMBER, cur OUT
SYS_REFCURSOR)
AS
BEGIN
OPEN cur FOR
SELECT id, name, salary
FROM employees
WHERE dept_id = d_id
ORDER BY name;
CREATE PROCEDURE get_salaries (IN d_id
INT)
BEGIN
SELECT id, name, salary
FROM employees
WHERE dept_id = d_id
ORDER BY name;
END;
END;
•
%TYPE und %ROWTYPE Definitionen der Datentypen
Oracle %TYPE-Attribut erlaubt Ihnen, Datentypen für PL/SQL Variablen definieren, die sich
auf Typen der Spalten von Tabellen basieren. In MySQL müssen Sie den Datentyp
ausdrücklich spezifizieren.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
1
3
Auf der ähnlichen Weise erlaubt Ihnen ein %ROWTYPE-Attribut, Record-Variablen zu
erschaffen, die sich auf Reihen der Tabellen basieren. In MySQL müssen Sie einzelne
Variablen erschaffen und ihre Datentypen ausdrücklich spezifizieren.
Oracle
MySQL
v_emp_name employees.name%TYPE;
v_emp_name VARCHAR(120)
v_emp_rec employees%ROWTYPE;
v_
v_
v_
v_
v_
•
emp_id INT
emp_name VARCHAR(120)
emp_hire_date DATETIME
emp_salary INT
emp_dept_id TINYINT
SQL-Konvertierung in Java Anwendungen
In Java Anwendungen vielleicht werden Sie brauchen, Syntax der SQL-Anweisungen zu ändern.
Oracle
…
PreparedStatement ps = null;
ResultSet rs = null;
String sql = “SELECT e.name, d.name” +
“FROM employees e, departments d” +
“WHERE e.dept_id = d.id(+)”;
MySQL
…
PreparedStatement ps = null;
ResultSet rs = null;
String sql = “SELECT e.name, d.name” +
“FROM employees e LEFT OUTER JOIN” +
“departments d ON e.dept_id = d.id”;
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
…
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
…
•
SQL-Konvertierung in PowerBuilder Anwendungen
In PowerBuilder Anwendungen vielleicht werden Sie auch brauchen, Syntax der SQLAnwendungen ändern.
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. Alle Rechte vorbehalten.
1
4
Problemumgehungen für nicht unterstützte Funktionalität
Es gibt viele Merkmale in Oracle PL/SQL, die in diesem Moment von MySQL SQL
prozeduraler Sprache nicht unterstützt werden. Wenn diese Funktionalität in einer QuelleDatenbank benutzt wird, müssen Sie verschiedene Problemumgehungen anwenden, um
das gleiche Benehmen in MySQL zu erhalten. Hier gibt es einige spezifische Muster:
•
PL/SQL Sammlungen
Sie können temporale Tabellen und SQL DML Operationen benutzen (SELECT, INSERT,
UPDATE, DELETE) um dieses Merkmal in MySQL zu ersetzen.
•
RAISE_APPLICATION_ERROR
Sie können ein UDF benutzen um einen Fehler aus MySQL gespeicherten Prozeduren
hervorzurufen.
•
UTL_FILE eingebettetes Package
Sie können ein UDF benutzen um mit Dateien aus MySQL gespeicherten Prozeduren zu arbeiten.
•
Komplizierte Geschäftslogik
Als eine Standardlösung kann komplizierte PL/SQL Geschäftslogik nach Java Sprache konvertiert
werden.
Abschluss
Automatisierte Migration nach MySQL Lizenzierungsmodell bietet eine attraktive
Wertsteigerung. Indem Sie SQLWays von Ispirer für schwierige Projekte der Migration
von Oracle nach MySQL benutzen, erhöhen Sie die Qualität Ihrer Arbeit und dabei
sparen Sie Zeit und Geld. Es gibt viele Aspekte, auf die Sie Rücksicht nehmen
müssen, wenn Sie sich für Migration der Geschäftslogik und Objekte einer Datenbank
entschieden haben. Ausführliche Planung, Analyse und Liebe zum Detail sind wichtig für alle
Phasen des Migrationsprojekts.
Obwohl die komplizierte Datenbank-Migration von Oracle nach MySQL mit Konvertierung
der Geschäftslogik eine schwierige Aufgabe ist, richtige Behandlungen und Benutzung
automotisierter Werkzeuge erlauben Ihnen, eine Migration zu einem niedriegen Preis und
mit wenig Risiko durchzuführen. Das Produkt von Ispirer SQLWays und Services von Ispirer
gewährleisten hohe Qualität bei der komplizierten Konvertierung der Geschäftslogik.
Copyright © 1999-2013. Ispirer Systems Ltd. Alle Rechte vorbehalten.
1
5
Herunterladen