
In den meisten Artikeln über die Migration von MSSQL nach Oracle wird die Vorgehensweise einfach dargestellt. Beispielsweise wie ein Windows Applikations Installer "Next > Next > Finish" und damit sei die Sache abgehakt. Wer aber eine Migration schon einmal ausprobiert hat, wird schnell merken, dass das nicht so einfach ist. Die Antwort liegt meistens in den Datentypen und wie sie von Oracle migriert und erkannt werden. Alternativ können auch Berechtigungsprobleme vorliegen oder aber falsch interpretierte Prozeduren/Funktionen von TSQL.
In diesem Artikel werden wir Microsofts AdventureWorks Datenbank mit Oracle SQL Developer nach Oracle migrieren und dabei die häufigsten und bei uns aufgetretenen Fehler und deren Problemlösung beschreiben.
Vorbereitung der Oracle Datenbank
Für die Migration haben wir eine separate Pluggable Datenbank erstellt:
CREATE PLUGGABLE DATABASE MSSQL ADMIN USER msadmin IDENTIFIED BY "msadmin" ROLES=(DBA);
Der SQL Developer braucht ein Schema, in dem das Migrations-Repository erstellt werden kann. Dieses Schema kann nach der Migration gelöscht werden. Wir können also ruhig alle Rechte vergeben - alles andere wird automatisch von SQL Developer erstellt.
grant dba to migration_repo identified by migration_repo;
Oracle hat mit dem ersten Release von 12c die maximale Länge der Datentypen VARCHAR2
, NVARCHAR2
und RAW
auf 32767 Bytes erweitert. Um dieses Feature nutzen zu können, muss jedoch zuvor der Parameter max_string_size auf extended geändert werden und im Upgrade-Mode das Skript utl32k.sql ausgeführt werden:
SQL> alter pluggable database close immediate;
Pluggable database altered.
SQL> alter pluggable database open upgrade;
Pluggable database altered.
SQL> ALTER SYSTEM SET max_string_size='EXTENDED' SCOPE=both SID='*';
System altered.
SQL> @?/rdbms/admin/utl32k.sql
SQL> alter pluggable database close immediate;
Pluggable database altered.
SQL> alter pluggable database open;
Pluggable database altered.
SQL>
Die Konfiguration der PDB ist damit fertig.
Leistungspakete der Mainzer Datenfabrik
Als professioneller SQL Server Support und zertifizierter Microsoft Partner unterstützen wir Sie in allen Fragen und individuellen Problemen rund um Ihre Serverumgebung, egal ob vor Ort oder remote. Überzeugen Sie sich selbst von unserem vielfältigen Angebot und den individuellen Leistungspaketen.
SQL Developer Konfiguration
SQL Developer kann hier heruntergeladen werden.
Um sich mit dem SQL Developer auf die MSSQL Instanz zu verbinden brauchen wir folgendes Plugin: Download : jtds-1.3.1-dist.zip
Diese Datei müssen wir zunächst entpacken und dann im SQL Developer unter Preferences > Database > Third Party JDBC Drivers das jar-File im ausgepackten Verzeichnis auswählen.

Erstellen wir eine Verbindung zu dem Migrations-Repository

Erstellen wir anschließend eine Verbindung für die MSSQL Quellinstanz (Adventure Works)

Danach erstellen wir eine Verbindung für die Oracle Zielinstanz der Migration:

Wenn alle drei Verbindungen erstellt sind, können wir das Repository erstellen. Dies nehmen wir durch die Auswahl von “Migration Repository” > “Associate Migration Repository” im Kontextmenü der migration_repo Verbindung vor.

Nach dem Klick wird das Repository installiert.

Migration nach Oracle
Wenn das Repository erstellt ist, können wir mit einem Rechtsklick auf die Quellinstanz klicken und Migrate to Oracle auswählen.

Der erste Schritt gibt einen Überblick über die auszuführenden Schritte. Hier empfehlen wir einfach den Next-Button zu drücken.

Danach wählen wir die Verbindung zum Migrations-Repository aus

Im nächsten Fenster des Migrations-Wizards wird nach einem frei wählbaren Projektnamen gefragt.

Ferner muss ein Zielverzeichnis für Log- und Migrationsdateien erstellt werden

In Schritt 4 wählen wir die Verbindung zur Quellinstanz (hier MSSQL) aus

Wenn in der Quellinstanz mehrere Datenbanken sind, können wir im nächsten Schritt die DB auswählen, die wir migrieren möchten.

Danach kann man die Datentypkonversionen anpassen. Es gibt ein paar Datentypen, die nicht erkannt werden und diese kann man leider weder unter Add New Rule, noch unter advanced options zu den Datentypen hinzufügen. So werden diese Typen als RAW
erkannt und mit einer Länge von 8000 erstellt.

In Schritt 7 wählen wir, welche Objekte wir konvertieren möchten.

Im nächsten Schritt wählen wir die Verbindung zur Zielinstanz aus. Hier können wir noch einstellen, ob eventuell vorhandene Zielobjekte gleichen Namens zuvor gelöscht werden sollen. Da wir aber eine neuen PDB benutzen, brauchen wir das nicht.

In Schritt 9 wählen wir aus, ob die Daten Online oder Offline kopiert werden sollen. Dazu müssen wir noch die Quelle und das Ziel auswählen und auf Next drücken.

Die Zusammenfassung bestätigen wir mit Finish und warten bis die Konvertierung erfolgreich endet.
