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
, undDBA_IND_COL
abfragen. Oder Sie können diedba_index_usage
- oderv$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
, oderDELETE
wird ausgeführt. Wenn Sie einen Trigger definiert haben, der vor einerINSERT
-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
oderALTER
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
oderVARCHAR
.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 TABLE
DDL-Anweisungen generieren, die Sie bearbeiten können, um sie auf entsprechende Tabellen in Azure Synapse anzuwenden, wie im nächsten Screenshot gezeigt.
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.
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:
DUAL
Tabelle: Oracle hat eine Systemtabelle namensDUAL
, die aus genau einer Spalte namensdummy
und einem Datensatz mit dem WertX
besteht. DieDUAL
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, istSELECT sysdate from dual;
. Das Azure Synapse-ÄquivalentSELECT GETDATE();
. Um die Migration von DML zu vereinfachen, können Sie mithilfe der folgenden DDL eine entsprechendeDUAL
Tabelle in Azure Synapse erstellen.CREATE TABLE DUAL ( DUMMY VARCHAR(1) ) GO INSERT INTO DUAL (DUMMY) VALUES ('X') GO
NULL
werte: einNULL
Wert in Oracle ist eine leere String, die durch einenCHAR
- oderVARCHAR
-String vom Typ length0
. In Azure Synapse und den meisten anderen DatenbankenNULL
bedeutet etwas sonst. Seien Sie beim Migrieren von Daten oder beim Migrieren von Prozessen, die Daten verarbeiten oder speichern, vorsichtig, um sicherzustellen, dassNULL
-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 derDATE
Datentyp sowohl Datum als auch Uhrzeit speichern. Azure Synapse speichert Datum und Uhrzeit in separatenDATE
,TIME
undDATETIME
Datentypen. Überprüfen Sie bei der Migration von OracleDATE
-Spalten, ob sie sowohl Datum als auch Uhrzeit oder nur ein Datum speichern. Wenn sie nur ein Datum speichern, ordnen Sie die SpalteDATE
zu, andernfallsDATETIME
.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 derDATEDIFF()
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 derDATEADD()
-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:
- Erfassen Sie einige repräsentative SQL-Anweisungen aus den Abfrageverlaufsprotokollen des Altsystems.
- Präfix dieser Abfragen mit der
EXPLAIN
Anweisung. - 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.