Konvertieren von Oracle-Schemas (OracleToSQL)

Nachdem Sie eine Verbindung mit Oracle hergestellt, mit SQL Server verbunden und Projekt- und Datenzuordnungsoptionen festgelegt haben, können Sie Oracle-Datenbankobjekte in SQL Server-Datenbankobjekte konvertieren.

Der Konvertierungsprozess

Beim Konvertieren von Datenbankobjekten werden die Objektdefinitionen von Oracle verwendet, in ähnliche SQL Server-Objekte konvertiert und diese Informationen dann in die SSMA-Metadaten geladen. Die Informationen werden nicht in die SQL Server-Instanz geladen. Anschließend können Sie die Objekte und deren Eigenschaften mit dem SQL Server Metadata Explorer anzeigen.

Während der Konvertierung gibt SSMA Meldungen im Ausgabebereich und Fehlermeldungen im Bereich „Fehlerliste“ aus. Verwenden Sie die Ausgabe- und Fehlerinformationen, um zu bestimmen, ob Sie Ihre Oracle-Datenbanken oder Ihren Konvertierungsprozess ändern müssen, um die gewünschten Konvertierungsergebnisse zu erhalten.

Festlegen von Konvertierungsoptionen

Überprüfen Sie vor dem Konvertieren von Objekten die Projektkonvertierungsoptionen im Dialogfeld "Projekteinstellungen ". Mithilfe dieses Dialogfelds können Sie festlegen, wie SSMA Funktionen und globale Variablen konvertiert. Weitere Informationen finden Sie unter Project Settings (Conversion) (OracleToSQL).For more information, see Project Settings (Conversion) (OracleToSQL).

Konvertierungsergebnisse

Die folgende Tabelle zeigt, welche Oracle-Objekte konvertiert werden, und die resultierenden SQL Server-Objekte:

Oracle-Objekte Resultierende SQL Server-Objekte
Functions Wenn die Funktion direkt in Transact-SQL konvertiert werden kann, erstellt SSMA eine Funktion.

In einigen Fällen muss die Funktion in eine gespeicherte Prozedur konvertiert werden. In diesem Fall erstellt SSMA eine gespeicherte Prozedur und eine Funktion, die die gespeicherte Prozedur aufruft.
Prozeduren Wenn die Prozedur direkt in Transact-SQL konvertiert werden kann, erstellt SSMA eine gespeicherte Prozedur.

In einigen Fällen muss eine gespeicherte Prozedur in einer autonomen Transaktion aufgerufen werden. In diesem Fall erstellt SSMA zwei gespeicherte Prozeduren: eine, die die Prozedur implementiert, und eine weitere, die zum Aufrufen der implementierenden gespeicherten Prozedur verwendet wird.
Pakete SSMA erstellt einen Satz gespeicherter Prozeduren und Funktionen, die durch ähnliche Objektnamen vereinheitlicht werden.
Sequenzen SSMA erstellt Sequenzobjekte (SQL Server 2012 oder SQL Server 2014) oder emuliert Oracle-Sequenzen.
Tabellen mit abhängigen Objekten, z. B. Indizes und Trigger SSMA erstellt Tabellen mit abhängigen Objekten.
Sicht mit abhängigen Objekten, z. B. Triggern SSMA erstellt Sichten mit abhängigen Objekten.
Materialisierte Sichten SSMA erstellt indizierte Ansichten auf SQL Server mit einigen Ausnahmen. Die Konvertierung verursacht einen Fehler, wenn die materialisierte Sicht mindestens eines der folgenden Konstrukte enthält:

Benutzerdefinierte Funktion

Nichtdeterministische Feld/Funktion/Ausdruck in SELECT-, WHERE- oder GROUP BY-Klauseln

Verwendung der Float-Spalte in SELECT*-, WHERE- oder GROUP BY-Klauseln (Sonderfall des vorherigen Problems)

Benutzerdefinierter Datentyp (einschließlich geschachtelter Tabellen)

COUNT(distinct <Feld>)

FETCH

OUTER-Joins (LEFT, RIGHT oder FULL)

Unterabfrage, andere Sicht

OVER, RANK, LEAD, LOG

MIN, MAX

UNION, MINUS, INTERSECT

HAVING
Trigger SSMA erstellt Trigger anhand der folgenden Regeln:

BEFORE-Trigger werden in INSTEAD OF-Trigger konvertiert.

AFTER-Trigger werden in AFTER-Trigger konvertiert.

INSTEAD OF-Trigger werden in INSTEAD OF-Trigger konvertiert. Mehrere INSTEAD OF-Trigger, die für denselben Vorgang definiert sind, werden zu einem Trigger kombiniert.

Trigger auf Zeilenebene werden mithilfe von Cursorn emuliert.

Zusammengesetzte Trigger werden anstelle von Triggern konvertiert. Mehrere zusammengesetzte Trigger werden in einen einzelnen Trigger kombiniert

Kaskadierende Trigger werden in mehrere einzelne Trigger konvertiert.
Synonyme Synonyme werden für die folgenden Objekttypen erstellt:

Tabellen und Objekttabellen

Sichten und Objektsichten

Gespeicherte Prozeduren

Functions

Synonyme für die folgenden Objekte werden aufgelöst und durch direkte Objektverweise ersetzt:

Sequenzen

Pakete

Java-Klassen-Schemaobjekte

Benutzerdefinierte Objekttypen

Synonyme für ein anderes Synonym können nicht migriert werden und werden als Fehler markiert.

Synonyme werden für materialisierte Ansichten nicht erstellt.
User Defined Types SSMA bietet keine Unterstützung für die Konvertierung von benutzerdefinierten Typen. Benutzerdefinierte Typen, einschließlich ihrer Verwendung in PL/SQL-Programmen, werden mit speziellen Konvertierungsfehlern gekennzeichnet, die durch die folgenden Regeln geführt werden:

Die Tabellenspalte eines benutzerdefinierten Typs wird in VARCHAR(8000) konvertiert.

Das Argument des benutzerdefinierten Typs in eine gespeicherte Prozedur oder Funktion wird in VARCHAR(8000) konvertiert.

Die Variable des benutzerdefinierten Typs in PL/SQL-Block wird in VARCHAR(8000) konvertiert.

Eine Objekttabelle wird in eine Standardtabelle konvertiert.

Eine Objektsicht wird in eine Standardsicht konvertiert.

Konvertieren von Oracle-Datenbankobjekten

Um Oracle-Datenbankobjekte zu konvertieren, wählen Sie zuerst die Objekte aus, die Sie konvertieren möchten, und lassen Sie dann SSMA die Konvertierung durchführen. Um Ausgabemeldungen während der Konvertierung anzuzeigen, wählen Sie im Menü "Ansicht" die Option "Ausgabe" aus.

So konvertieren Sie Oracle-Objekte in SQL Server-Syntax

  1. Erweitern Sie im Oracle-Metadaten-Explorer den Oracle-Server, und erweitern Sie dann Schemas.

  2. Zu konvertierende Objekte auswählen:

    • Um alle Schemas zu konvertieren, aktivieren Sie das Kontrollkästchen neben Schemas.

    • Wenn Sie eine Datenbank konvertieren oder weglassen möchten, aktivieren Sie das Kontrollkästchen neben dem Schemanamen.

    • Wenn Sie eine Kategorie von Objekten konvertieren oder weglassen möchten, erweitern Sie ein Schema, und aktivieren oder deaktivieren Sie dann das Kontrollkästchen neben der Kategorie.

    • Wenn Sie einzelne Objekte konvertieren oder weglassen möchten, erweitern Sie den Kategorieordner, und aktivieren oder deaktivieren Sie dann das Kontrollkästchen neben dem Objekt.

  3. Um alle ausgewählten Objekte zu konvertieren, klicken Sie mit der rechten Maustaste auf Schemas, und wählen Sie "Schema konvertieren" aus.

    Sie können auch einzelne Objekte oder Kategorien von Objekten konvertieren, indem Sie mit der rechten Maustaste auf das Objekt oder den übergeordneten Ordner klicken und dann "Schema konvertieren" auswählen.

Anzeigen von Konvertierungsproblemen

Einige Oracle-Objekte werden möglicherweise nicht konvertiert. Sie können die Erfolgsraten der Konvertierung ermitteln, indem Sie den Zusammenfassenden Konvertierungsbericht anzeigen.

So zeigen Sie einen Zusammenfassungsbericht an

  1. Wählen Sie im Oracle-Metadaten-Explorer Schemas aus.

  2. Wählen Sie im rechten Bereich die Registerkarte "Bericht " aus.

    Dieser Bericht zeigt den Zusammenfassenden Bewertungsbericht für alle Datenbankobjekte, die bewertet oder konvertiert wurden. Sie können auch einen Zusammenfassungsbericht für einzelne Objekte anzeigen:

    • Um den Bericht für ein einzelnes Schema anzuzeigen, wählen Sie das Schema im Oracle-Metadaten-Explorer aus.

    • Um den Bericht für ein einzelnes Objekt anzuzeigen, wählen Sie das Objekt im Oracle-Metadaten-Explorer aus. Objekte mit Konvertierungsproblemen weisen ein rotes Fehlersymbol auf.

Bei Objekten, bei denen die Konvertierung fehlgeschlagen ist, können Sie die Syntax anzeigen, die zu einem Konvertierungsfehler führte.

So zeigen Sie einzelne Konvertierungsprobleme an

  1. Erweitern Sie im Oracle-Metadaten-Explorer Schemas.

  2. Erweitern Sie das Schema, das ein rotes Fehlersymbol anzeigt.

  3. Erweitern Sie unter dem Schema einen Ordner mit einem roten Fehlersymbol.

  4. Wählen Sie das Objekt mit einem roten Fehlersymbol aus.

  5. Klicken Sie im rechten Bereich auf die Registerkarte "Bericht ".

  6. Oben auf der Registerkarte "Bericht " befindet sich eine Dropdownliste. Wenn in der Liste "Statistik" angezeigt wird, ändern Sie die Auswahl in "Quelle".

    SSMA zeigt den Quellcode und mehrere Schaltflächen direkt über dem Code an.

  7. Klicken Sie auf die Schaltfläche "Nächstes Problem ". Dies ist ein rotes Fehlersymbol mit einem Pfeil, der auf die rechte Seite zeigt.

    SSMA hebt den ersten problematischen Quellcode hervor, der im aktuellen Objekt gefunden wird.

Für jedes Element, das nicht konvertiert werden konnte, müssen Sie bestimmen, was Sie mit diesem Objekt tun möchten:

  • Sie können den Quellcode für Prozeduren auf der Registerkarte SQL ändern.

  • Sie können das Objekt in der Oracle-Datenbank ändern, um problematischen Code zu entfernen oder zu überarbeiten. Um den aktualisierten Code in SSMA zu laden, müssen Sie die Metadaten aktualisieren. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Oracle Database (OracleToSQL).For more information, see Connecting to Oracle Database (OracleToSQL).

  • Sie können das Objekt aus der Migration ausschließen. Deaktivieren Sie im SQL Server-Metadaten-Explorer und Oracle-Metadaten-Explorer das Kontrollkästchen neben dem Element, bevor Sie die Objekte in SQL Server laden und Daten aus Oracle migrieren.

Nächster Schritt

Der nächste Schritt im Migrationsprozess besteht darin, die konvertierten Objekte in SQL Server zu laden.

Weitere Informationen

Migrating Oracle Databases to SQL Server (OracleToSQL) (Migrieren von Oracle-Datenbanken zu SQL-Server (OracleToSQL))