Minimieren von SQL-Problemen bei Oracle-Migrationen

Dieser Artikel ist Teil fünf einer siebenteiligen Reihe, die Anleitungen zur Migration von Oracle zu Azure Synapse Analytics enthält. In diesem Artikel werden schwerpunktmäßig bewährte Methoden zum Minimieren von SQL-Problemen behandelt.

Übersicht

Eigenschaften von Oracle-Umgebungen

Das erste Datenbankprodukt von Oracle, das 1979 veröffentlicht wurde, war eine kommerzielle relationale SQL-Datenbank für Online-Transaktionsverarbeitungsanwendungen (OLTP) – mit viel niedrigeren Transaktionsraten als heute. Seit dieser ersten Version hat sich die Oracle-Umgebung weiterentwickelt, ist viel komplexer geworden und umfasst zahlreiche Funktionen. Zu den Funktionen gehören Client-Server-Architekturen, verteilte Datenbanken, Parallelverarbeitung, Datenanalyse, Hochverfügbarkeit, Data Warehousing, Data-In-Memory-Techniken und Unterstützung für Cloud-basierte Instanzen.

Tipp

Oracle hat Anfang der 2000er Jahre mit dem Konzept der „Data Warehouse Appliance“ Pionierarbeit geleistet.

Aufgrund der Kosten und Komplexität der Wartung und Aktualisierung älterer lokaler Oracle-Umgebungen möchten viele bestehende Oracle-Benutzer die Vorteile der Innovationen nutzen, die Cloud-Umgebungen bieten. Mit modernen Cloud-Umgebungen wie Cloud, IaaS und PaaS können Sie Aufgaben wie Infrastrukturwartung und Plattformentwicklung an den Cloud-Anbieter delegieren.

Viele Data Warehouses, die komplexe analytische SQL-Abfragen für große Datenmengen unterstützen, verwenden Oracle-Technologien. Diese Data Warehouses verfügen in der Regel über ein dimensionales Datenmodell wie Stern- oder Schneeflockenschemata und verwenden Data Marts für einzelne Abteilungen.

Tipp

Viele vorhandene Oracle-Installationen sind Data Warehouses, die ein dimensionales Datenmodell verwenden.

Die Kombination von SQL und dimensionalen Datenmodellen in Oracle vereinfacht die Migration zu Azure Synapse, da die Konzepte von SQL und grundlegenden Datenmodellen übertragbar sind. Microsoft empfiehlt, Ihr vorhandenes Datenmodell unverändert zu Azure zu verschieben, um Risiken, Aufwand und Migrationszeit zu reduzieren. Obwohl Ihr Migrationsplan möglicherweise eine Änderung des zugrunde liegenden Datenmodells beinhaltet, z. B. einen Wechsel von einem Inmon-Modell zu einem Datentresor, ist es sinnvoll, zunächst eine Ist-Migration durchzuführen. Nach der anfänglichen Migration können Sie dann Änderungen in der Azure-Cloudumgebung vornehmen, um von deren Leistung, elastischer Skalierbarkeit, integrierten Features und Kostenvorteilen zu profitieren.

Obwohl die SQL-Sprache standardisiert ist, implementieren einzelne Anbieter manchmal proprietäre Erweiterungen. Daher stellen Sie während Ihrer Migration möglicherweise SQL-Unterschiede fest, die Problemumgehungen in Azure Synapse erfordern.

Verwenden Sie Azure-Einrichtungen, um eine metadatengesteuerte Migration zu implementieren

Sie können den Migrationsprozess automatisieren und orchestrieren, indem Sie die Funktionen der Azure-Umgebung nutzen. Dieser Ansatz minimiert die Leistungseinbußen in der vorhandenen Oracle-Umgebung, die möglicherweise bereits fast ausgelastet ist.

Azure Data Factory ist ein cloudbasierter Datenintegrationsdienst, der die Erstellung datengesteuerter Workflows in der Cloud unterstützt, um die Datenverschiebung und Datentransformation zu orchestrieren und zu automatisieren. Sie können Data Factory verwenden, um datengesteuerte Workflows (Pipelines) zu erstellen und zu planen, die Daten aus unterschiedlichen Datenspeichern aufnehmen. Data Factory kann Daten mithilfe von Computediensten wie Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics und Azure Machine Learning verarbeiten und transformieren.

Azure umfasst auch Azure Database Migration Services, um Sie bei der Planung und Durchführung einer Migration aus Umgebungen wie Oracle zu unterstützen. Der SQL Server-Migrationsassistent (SSMA) für Oracle kann die Migration von Oracle-Datenbanken automatisieren, einschließlich in einigen Fällen von Funktionen und Prozedurcode.

Tipp

Automatisieren Sie den Migrationsprozess mithilfe der Möglichkeiten von Azure Data Factory.

Wenn Sie beabsichtigen, Azure-Einrichtungen wie Data Factory zum Verwalten des Migrationsprozesses zu verwenden, erstellen Sie zunächst Metadaten, die alle zu migrierenden Datentabellen und ihren Speicherort auflisten.

SQL-DDL-Unterschiede zwischen Oracle und Azure Synapse

Der ANSI-SQL-Standard definiert die grundlegende Syntax für Data Definition Language (DDL)-Befehle. Einige DDL-Befehle wie CREATE TABLE und CREATE VIEW sind in Oracle und Azure Synapse gleich, wurden jedoch erweitert, um implementierungsspezifische Funktionen wie Indizierung, Tabellenverteilung und Partitionierungsoptionen bereitzustellen.

Tipp

Die SQL DDL-Befehle CREATE TABLE und CREATE VIEW haben standardmäßige Kernelemente, werden aber auch zur Definition implementierungsspezifischer Optionen verwendet.

In den folgenden Abschnitten werden die Oracle-spezifischen Optionen erörtert, die bei einer Migration zu Azure Synapse berücksichtigt werden müssen.

Überlegungen zu Tabelle/Ansicht

Wenn Sie Tabellen zwischen verschiedenen Umgebungen migrieren, werden normalerweise nur die Rohdaten und die sie beschreibenden Metadaten physisch migriert. Andere Datenbankelemente aus dem Quellsystem, wie Indizes und Protokolldateien, werden normalerweise nicht migriert, da sie in der neuen Umgebung möglicherweise unnötig oder anders implementiert sind. Beispielsweise entspricht die Option TEMPORARY in der CREATE TABLE-Syntax von Oracle dem Präfix eines Tabellennamens mit dem Zeichen # in Azure Synapse.

Leistungsoptimierungen in der Quellumgebung, wie z. B. Indizes, geben an, wo Sie Leistungsoptimierungen in der neuen Zielumgebung hinzufügen könnten. Wenn beispielsweise Bitmap-Indizes häufig in Abfragen innerhalb der Oracle-Quellumgebung verwendet werden, legt dies nahe, dass ein nicht gruppierter Index in Azure Synapse erstellt werden sollte. Andere native Techniken zur Leistungsoptimierung, wie z. B. die Tabellenreplikation, sind möglicherweise besser anwendbar als die reine Like-for-Like-Indexerstellung. SSMA für Oracle kann Migrationsempfehlungen für die Tabellenverteilung und Indizierung bereitstellen.

Tipp

Vorhandene Indizes zeigen Kandidaten für die Indizierung im migrierten Warehouse an.

SQL-Ansichtsdefinitionen enthalten DML-Anweisungen (SQL Data Manipulation Language), die die Ansicht definieren, normalerweise mit einer oder mehreren SELECT-Anweisungen. Berücksichtigen Sie beim Migrieren von CREATE VIEW-Anweisungen die DML-Unterschiede zwischen Oracle und Azure Synapse.

Nicht unterstützte Objekttypen der Oracle-Datenbank

Oracle-spezifische Features können oft durch Azure Synapse-Features ersetzt werden. Einige Oracle-Datenbankobjekte werden jedoch nicht direkt in Azure Synapse unterstützt. Die folgende Liste nicht unterstützter Oracle-Datenbankobjekte beschreibt, wie Sie in Azure Synapse eine gleichwertige Funktionalität erreichen können:

  • Indizierungsoptionen: In Oracle haben mehrere Indizierungsoptionen, z. B. Bitmap-Indizes, funktionsbasierte Indizes und Domänenindizes, keine direkte Entsprechung in Azure Synapse. Obwohl Azure Synapse diese Indextypen nicht unterstützt, können Sie eine ähnliche Reduzierung der Datenträger-E/A erreichen, indem Sie benutzerdefinierte Indextypen und/oder Partitionierung verwenden. Die Reduzierung der Datenträger-E/A verbessert die Abfrageleistung.

    Sie können herausfinden, welche Spalten indiziert sind und welchen Indextyp sie haben, indem Sie Systemkatalogtabellen und -ansichten wie ALL_INDEXES, DBA_INDEXES, USER_INDEXES, und DBA_IND_COL abfragen. Oder Sie können die dba_index_usage- oder v$object_usage-Ansichten abfragen, wenn die Überwachung aktiviert ist.

    Azure Synapse-Features wie die parallele Abfrageverarbeitung und das In-Memory-Caching von Daten und Ergebnissen machen es wahrscheinlich, dass weniger Indizes für Data Warehouse-Anwendungen erforderlich sind, um hervorragende Leistungsziele zu erreichen.

  • Gruppierte Tabellen: Oracle-Tabellen können so organisiert werden, dass Tabellenzeilen, auf die häufig zusammen zugegriffen wird (basierend auf einem gemeinsamen Wert), physisch zusammen gespeichert werden. Diese Strategie reduziert die Festplatten-E/A beim Abrufen von Daten. Oracle hat auch eine Hash-Cluster-Option für einzelne Tabellen, die einen Hash-Wert auf den Cluster-Schlüssel anwendet und Zeilen mit demselben Hash-Wert physisch zusammen speichert.

    In Azure Synapse können Sie ein ähnliches Ergebnis erzielen, indem Sie partitionieren und/oder andere Indizes verwenden.

  • Materialisierte Ansichten: Oracle unterstützt materialisierte Ansichten und empfiehlt eine oder mehrere davon für große Tabellen mit vielen Spalten, bei denen nur wenige Spalten regelmäßig in Abfragen verwendet werden. Materialisierte Ansichten werden vom System automatisch aktualisiert, wenn Daten in der Basistabelle aktualisiert werden.

    Im Jahr 2019 gab Microsoft bekannt, dass Azure Synapse materialisierte Ansichten mit der gleichen Funktionalität wie in Oracle unterstützen wird. Materialisierte Ansichten sind jetzt ein Vorschaufeature in Azure Synapse.

  • In-Datenbank-Trigger: In Oracle kann ein Trigger so konfiguriert werden, dass er automatisch ausgeführt wird, wenn ein auslösendes Ereignis eintritt. Auslösende Ereignisse können sein:

    • Eine DDL-Anweisung wie INSERT, UPDATE, oder DELETE wird ausgeführt. Wenn Sie einen Trigger definiert haben, der vor einer INSERT-Anweisung in einer Kundentabelle ausgelöst wird, wird der Trigger einmal ausgelöst, bevor eine neue Zeile in die Kundentabelle eingefügt wird.

    • Eine DDL-Anweisung wie CREATE oder ALTER wird ausgeführt. Dieses auslösende Ereignis wird häufig verwendet, um Schemaänderungen zu Überwachungszwecken aufzuzeichnen.

    • Ein Systemereignis wie das Starten oder Herunterfahren der Oracle-Datenbank.

    • Ein Benutzerereignis wie Anmeldung oder Abmeldung.

    Azure Synapse unterstützt keine Oracle-Datenbankauslöser. Sie können jedoch eine gleichwertige Funktionalität erreichen, indem Sie Data Factory verwenden, obwohl Sie dazu die Prozesse umgestalten müssen, die Trigger verwenden.

  • Synonyme: Oracle unterstützt die Definition von Synonymen als alternative Namen für mehrere Datenbankobjekttypen. Zu diesen Typen gehören Tabellen, Ansichten, Sequenzen, Prozeduren, gespeicherte Funktionen, Pakete, materialisierte Ansichten, Java-Klassenschemaobjekte, benutzerdefinierte Objekte oder andere Synonyme.

    Azure Synapse unterstützt derzeit nicht das Definieren von Synonymen. Wenn sich ein Synonym in Oracle jedoch auf eine Tabelle oder Ansicht bezieht, können Sie in Azure Synapse eine Ansicht definieren, die mit dem alternativen Namen übereinstimmt. Wenn sich ein Synonym in Oracle auf eine Funktion oder gespeicherte Prozedur bezieht, können Sie das Synonym in Azure Synapse durch eine andere Funktion oder gespeicherte Prozedur ersetzen, die das Ziel aufruft.

  • Benutzerdefinierte Typen: Oracle unterstützt benutzerdefinierte Objekte, die eine Reihe einzelner Felder mit jeweils eigener Definition und Standardwerten enthalten können. Diese Objekte können dann innerhalb einer Tabellendefinition genauso referenziert werden wie eingebaute Datentypen wie NUMBER oder VARCHAR.

    Azure Synapse unterstützt derzeit keine benutzerdefinierten Typen. Wenn die Daten, die Sie migrieren müssen, benutzerdefinierte Datentypen enthalten, „vereinfachen“ Sie sie entweder in einer herkömmlichen Tabellendefinition, oder normalisieren Sie sie in einer separaten Tabelle, wenn es sich um Datenarrays handelt.

SQL-DDL-Generierung

Sie können vorhandene Oracle CREATE TABLE und CREATE VIEW-Skripts bearbeiten, um gleichwertige Definitionen in Azure Synapse zu erhalten. Dazu müssen Sie möglicherweise geänderte Datentypen verwenden und Oracle-spezifische Klauseln wie z. B. TABLESPACE entfernen oder ändern.

Tipp

Verwenden Sie vorhandene Oracle-Metadaten, um die Generierung von CREATE TABLE und CREATE VIEW DDL für Azure Synapse zu automatisieren.

Innerhalb der Oracle-Umgebung geben Systemkatalogtabellen die aktuelle Tabellen-/Ansichtsdefinition an. Im Gegensatz zur benutzerseitig verwalteten Dokumentation sind Systemkataloginformationen immer vollständig und mit aktuellen Tabellendefinitionen synchronisiert. Sie können auf Systemkataloginformationen zugreifen, indem Sie Dienstprogramme wie Oracle SQL Developer verwenden. Oracle SQL Developer kann CREATE TABLEDDL-Anweisungen generieren, die Sie bearbeiten können, um sie auf entsprechende Tabellen in Azure Synapse anzuwenden, wie im nächsten Screenshot gezeigt.

Der Screenshot zeigt die von Oracle SQL Developer generierte Anweisung zum Erstellen einer Tabelle.

Oracle SQL Developer gibt die folgende CREATE TABLE-Anweisung aus, die Oracle-spezifische Klauseln enthält, die Sie entfernen sollten. Ordnen Sie alle nicht unterstützten Datentypen zu, bevor Sie Ihre geänderte CREATE TABLE Anweisung auf Azure Synapse ausführen.

Der Screenshot zeigt die Quick DDL-Menüoption in Oracle SQL Developer.

Alternativ können Sie CREATE TABLE Anweisungen automatisch aus den Informationen in Oracle-Katalogtabellen generieren, indem Sie SQL-Abfragen, SSMA oder Migrationstools von Drittanbietern verwenden. Dieser Ansatz ist die schnellste und konsistenteste Methode zum Generieren von CREATE TABLE-Anweisungen für viele Tabellen.

Tipp

Tools und Dienste von Drittanbietern können Datenzuordnungsaufgaben automatisieren.

Drittanbieter bieten Tools und Dienste zur Automatisierung der Migration an, einschließlich der Zuordnung von Datentypen. Wenn in der Oracle-Umgebung bereits ein ETL-Tool eines Drittanbieters verwendet wird, verwenden Sie dieses Tool, um alle erforderlichen Datentransformationen zu implementieren.

SQL-DML-Unterschiede zwischen Oracle und Azure Synapse

Der ANSI SQL-Standard definiert die grundlegende Syntax für DML-Befehle wie SELECT, INSERT, UPDATE und DELETE. Obwohl Oracle und Azure Synapse beide DDL-Befehle unterstützen, implementieren sie in einigen Fällen denselben Befehl unterschiedlich.

Tipp

Die Standard-SQL-DML-Befehle SELECT, INSERT und UPDATE können in verschiedenen Datenbankumgebungen zusätzliche Syntaxoptionen haben.

In den folgenden Abschnitten werden die Oracle-spezifischen DML-Befehle erörtert, die bei einer Migration zu Azure Synapse berücksichtigt werden müssen.

Syntaxunterschiede in SQL DML

Es gibt einige Unterschiede in der SQL-DML-Syntax zwischen Oracle SQL und Azure Synapse T-SQL:

  • DUALTabelle: Oracle hat eine Systemtabelle namens DUAL, die aus genau einer Spalte namens dummy und einem Datensatz mit dem Wert X besteht. Die DUAL Systemtabelle wird verwendet, wenn eine Abfrage aus Syntaxgründen einen Tabellennamen erfordert, der Tabelleninhalt jedoch nicht benötigt wird.

    Eine Beispiel-Oracle-Abfrage, die die DUAL Tabelle verwendet, ist SELECT sysdate from dual;. Das Azure Synapse-Äquivalent SELECT GETDATE();. Um die Migration von DML zu vereinfachen, können Sie mithilfe der folgenden DDL eine entsprechende DUAL Tabelle in Azure Synapse erstellen.

    CREATE TABLE DUAL
    (
      DUMMY VARCHAR(1)
    )
    GO
    INSERT INTO DUAL (DUMMY)
    VALUES ('X')
    GO
    
  • NULLwerte: ein NULLWert in Oracle ist eine leere String, die durch einen CHAR- oder VARCHAR-String vom Typ length 0. In Azure Synapse und den meisten anderen Datenbanken NULL bedeutet etwas sonst. Seien Sie beim Migrieren von Daten oder beim Migrieren von Prozessen, die Daten verarbeiten oder speichern, vorsichtig, um sicherzustellen, dass NULL-Werte konsistent verarbeitet werden.

  • Oracle-Outer-Join-Syntax: Obwohl neuere Versionen von Oracle die ANSI-Outer-Join-Syntax unterstützen, verwenden ältere Oracle-Systeme eine proprietäre Syntax für Outer-Joins, die ein Pluszeichen (+) innerhalb der SQL-Anweisung verwendet. Wenn Sie eine ältere Oracle-Umgebung migrieren, stoßen Sie möglicherweise auf die ältere Syntax. Zum Beispiel:

    SELECT
        d.deptno, e.job
    FROM
        dept d,
        emp e
    WHERE
        d.deptno = e.deptno (+)
        AND e.job (+) = 'CLERK'
    GROUP BY
        d.deptno, e.job;
    

    Die äquivalente ANSI-Standardsyntax lautet:

    SELECT
        d.deptno, e.job
    FROM
        dept d
        LEFT OUTER JOIN emp e ON d.deptno = e.deptno
        and e.job = 'CLERK'
    GROUP BY
        d.deptno,
        e.job
    ORDER BY
        d.deptno, e.job;
    
  • DATE Daten: In Oracle kann der DATE Datentyp sowohl Datum als auch Uhrzeit speichern. Azure Synapse speichert Datum und Uhrzeit in separaten DATE, TIMEund DATETIME Datentypen. Überprüfen Sie bei der Migration von Oracle DATE-Spalten, ob sie sowohl Datum als auch Uhrzeit oder nur ein Datum speichern. Wenn sie nur ein Datum speichern, ordnen Sie die Spalte DATE zu, andernfalls DATETIME.

  • DATE Arithmetik: Oracle unterstützt das Subtrahieren eines Datums von einem anderen, z. B. SELECT date '2018-12-31' - date '2018-1201' from dual;. In Azure Synapse können Sie Datumsangaben unter Verwendung der DATEDIFF() Funktion subtrahieren, z.B. SELECT DATEDIFF(day, '2018-12-01', '2018-12-31');.

    Oracle kann ganze Zahlen aus Datumsangaben subtrahieren, z. B. SELECT hire_date, (hire_date-1) FROM employees;. In Azure Synapse können Sie mithilfe der DATEADD()-Funktion ganze Zahlen zu Datumsangaben addieren oder davon subtrahieren.

  • Aktualisierungen über Ansichten: In Oracle können Sie Einfüge-, Aktualisierungs- und Löschvorgänge für eine Ansicht ausführen, um die zugrunde liegende Tabelle zu aktualisieren. In Azure Synapse führen Sie diese Vorgänge für eine Basistabelle aus – nicht für eine Ansicht. Möglicherweise müssen Sie die ETL-Verarbeitung neu entwickeln, wenn eine Oracle-Tabelle über eine Ansicht aktualisiert wird.

  • Integrierte Funktionen: Die folgende Tabelle zeigt die Unterschiede in der Syntax und Verwendung einiger integrierter Funktionen.

Oracle-Funktion BESCHREIBUNG Synapse-Äquivalent
ADD_MONTHS Eine bestimmte Anzahl von Monaten hinzufügen DATEADD
CAST Konvertieren eines integrierten Datentyps in einen anderen CAST
DECODE Bewerten einer Liste der Bedingungen CASE-Ausdruck
EMPTY_BLOB Erstellen einen leeren BLOB-Wert 0x Konstante (leere binäre String)
EMPTY_CLOB Erstellen eines leeren CLOB- oder NCLOB-Werts ''(leere String)
INITCAP Den ersten Buchstaben jedes Wortes groß schreiben Benutzerdefinierte Funktion
INSTR Position einer Teilstring einer String ermitteln CHARINDEX
LAST_DAY Abrufen des letzten Monatsdatums EOMONTH
LENGTH Abrufen der Stringlänge in Zeichen LEN
LPAD Linker Pad-String auf die angegebene Länge Ausdruck mit REPLICATE, RIGHT und LEFT
MOD Abrufen des Rests einer Teilung einer Zahl nach einer anderen %-Operator
MONTHS_BETWEEN Ruft die Anzahl der Monate zwischen zwei Datumsangaben ab. DATEDIFF
NVL NULL durch Ausdruck ersetzen ISNULL
SUBSTR Zurückgeben einer Teilstring aus einer String SUBSTRING
TO_CHAR für Datetime Konvertieren von Datumszeit in String CONVERT
TO_DATE Konvertieren einer String in einen DateTime-Wert CONVERT
TRANSLATE Eins-zu-eins-Ersetzung einzelner Zeichen Ausdrücke, die REPLACE oder eine benutzerdefinierte Funktion verwenden
TRIM Trimmen von führenden oder nachfolgenden Zeichen LTRIM und RTRIM
TRUNC für Datumszeit Abschneiden der Datumszeit Ausdrücke mit CONVERT
UNISTR Konvertieren von Unicode-Codepunkten in Zeichen Ausdrücke mit NCHAR

Funktionen, gespeicherte Prozeduren und Sequenzen

Wenn Sie ein Data Warehouse aus einer ausgereiften Umgebung wie Oracle migrieren, müssen Sie wahrscheinlich andere Elemente als einfache Tabellen und Ansichten migrieren. Überprüfen Sie für Funktionen, gespeicherte Prozeduren und Sequenzen, ob Tools innerhalb der Azure-Umgebung ihre Funktionalität ersetzen können, da es in der Regel effizienter ist, integrierte Azure-Tools zu verwenden, als die Oracle-Funktionen neu zu codieren.

Erstellen Sie als Teil Ihrer Vorbereitungsphase eine Bestandsaufnahme der zu migrierenden Objekte, definieren Sie eine Methode für deren Handhabung und weisen Sie in Ihrem Migrationsplan geeignete Ressourcen zu.

Microsoft-Tools wie SSMA für Oracle und Azure Database Migration Services oder Migrationsprodukte und -dienste von Drittanbietern können die Migration von Funktionen, gespeicherten Prozeduren und Sequenzen automatisieren.

Tipp

Produkte und Dienste von Drittanbietern können die Migration von Nicht-Datenelementen automatisieren.

In den folgenden Abschnitten wird die Migration von Funktionen, gespeicherten Prozeduren und Sequenzen erläutert.

Functions

Wie bei den meisten Datenbankprodukten unterstützt Oracle system- und benutzerdefinierte Funktionen innerhalb einer SQL-Implementierung. Wenn Sie eine Legacy-Datenbankplattform zu Azure Synapse migrieren, können Sie gewöhnliche Systemfunktionen normalerweise ohne Änderungen migrieren. Einige Systemfunktionen haben möglicherweise eine etwas andere Syntax, aber Sie können alle erforderlichen Änderungen automatisieren.

Codieren Sie für Oracle-Systemfunktionen oder beliebige benutzerdefinierte Funktionen, für die es in Azure Synapse keine Entsprechung gibt, diese Funktionen mithilfe der Sprache der Zielumgebung neu. Benutzerdefinierte Funktionen von Oracle sind in PL/SQL, Java oder C codiert. Azure Synapse verwendet die Transact-SQL-Sprache, um benutzerdefinierte Funktionen zu implementieren.

Gespeicherte Prozeduren

Die meisten modernen Datenbankprodukte unterstützen das Speichern von Prozeduren innerhalb der Datenbank. Oracle stellt die PL/SQL-Sprache für diesen Zweck bereit. Eine gespeicherte Prozedur enthält normalerweise sowohl SQL-Anweisungen als auch prozedurale Logik und gibt Daten oder einen Status zurück.

Azure Synapse unterstützt gespeicherte Prozeduren mit T-SQL, sodass Sie alle migrierten gespeicherten Prozeduren in T-SQL neu codieren müssen.

Sequenzen

In Oracle ist eine Sequenz ein benanntes Datenbankobjekt, das mit CREATE SEQUENCE erstellt wird. Eine Sequenz stellt eindeutige numerische Werte über die CURRVAL und NEXTVAL Methoden bereit. Sie können die generierten eindeutigen Nummern als Ersatzschlüsselwerte für Primärschlüssel verwenden. Azure Synapse implementiert CREATE SEQUENCE nicht, aber Sie können Sequenzen mithilfe von IDENTITY-Spalten oder SQL-Code implementieren, der die nächste Sequenznummer in einer Serie generiert.

Verwenden von EXPLAIN zum Überprüfen von Legacy-SQL

Tipp

Ermitteln Sie potenzielle Probleme bei der Migration mithilfe realer Abfragen aus den vorhandenen Systemabfrageprotokollen.

Unter der Annahme eines gleichartigen migrierten Datenmodells in Azure Synapse mit denselben Tabellen- und Spaltennamen besteht eine Möglichkeit zum Testen von Legacy-Oracle-SQL auf Kompatibilität mit Azure Synapse wie folgt:

  1. Erfassen Sie einige repräsentative SQL-Anweisungen aus den Abfrageverlaufsprotokollen des Altsystems.
  2. Präfix dieser Abfragen mit der EXPLAIN Anweisung.
  3. Führen Sie die EXPLAIN-Anweisungen in Azure Synapse aus.

Jede inkompatible SQL generiert einen Fehler, und die Fehlerinformationen können verwendet werden, um den Umfang der Umcodierungsaufgabe zu bestimmen. Bei diesem Ansatz müssen Sie keine Daten in die Azure-Umgebung laden, Sie müssen nur die relevanten Tabellen und Ansichten erstellen.

Zusammenfassung

Vorhandene ältere Oracle-Installationen werden in der Regel so implementiert, dass die Migration zu Azure Synapse relativ unkompliziert ist. Beide Umgebungen verwenden SQL für analytische Abfragen großer Datenmengen und verwenden im Allgemeinen eine Form von dimensionalem Datenmodell. Diese Faktoren machen Oracle-Installationen zu einem guten Kandidaten für die Migration zu Azure Synapse.

Zusammenfassend lauten unsere Empfehlungen zur Minimierung der Aufgabe der Migration von SQL-Code von Oracle zu Azure Synapse:

  • Migrieren Sie Ihr vorhandenes Datenmodell unverändert, um Risiken, Aufwand und Migrationszeit zu minimieren, selbst wenn ein anderes Datenmodell geplant ist, z. B. ein Datentresor.

  • Machen Sie sich mit den Unterschieden zwischen der Oracle SQL-Implementierung und der Azure Synapse-Implementierung vertraut.

  • Verwenden Sie die Metadaten und Abfrageprotokolle aus der vorhandenen Oracle-Implementierung, um die Auswirkungen einer Änderung der Umgebung zu bewerten. Planen Sie einen Ansatz, um die Unterschiede zu verringern.

  • Automatisieren Sie den Migrationsprozess, um Risiken, Aufwand und Migrationszeit zu minimieren. Sie können Microsoft-Tools wie Azure Database Migration Services und SSMA verwenden.

  • Erwägen Sie die Verwendung spezialisierter Tools und Dienste von Drittanbietern, um die Migration zu optimieren.

Nächste Schritte

Weitere Informationen zu Tools von Microsoft und Drittanbietern finden Sie im nächsten Artikel dieser Reihe:Tools für die Migration von Oracle Data Warehouse zu Azure Synapse Analytics.