Oracle-zu-PostgreSQL-Migration – Teil 2: Neue Funktionen in KeepTool 17 für PL/SQL, Sequenzen, Policies und Berechtigungen

    Veröffentlicht 26. März 2026

    Einleitung

    In diesem Artikel setzen wir unsere Workshop-Reihe zur Migration von Oracle Datenbanken nach PostgreSQL fort.

    In Teil 1 haben wir die Migrationsfunktionen vorgestellt, die mit KeepTool 16 eingeführt wurden, darunter:

    • Erstellen von Tabellenstrukturen in PostgreSQL
    • Erstellen von Strukturen für mehrere Tabellen
    • Migration von Trigger-Logik
    • Erstellen von Views in PostgreSQL
    • Kopieren von Daten von Oracle nach PostgreSQL
    • Umschreiben von SQL-Abfragen für PostgreSQL

    In Teil 2 konzentrieren wir uns auf die neuen Funktionen in KeepTool 17 für die Migration von Oracle-Datenbanken nach PostgreSQL. Im Einzelnen betrachten wir:

    • die Migration von PL/SQL-Prozeduren, Funktionen und Package Bodies nach PostgreSQL
    • die Migration von Sequenzen nach PostgreSQL
    • die Migration von Policies nach PostgreSQL
    • die Migration von Berechtigungen nach PostgreSQL
    • das Erstellen von Kommentaren für Constraints in PostgreSQL
    • die Kombination aus deterministischen Migrationstools und dem AI Assistant

    Wenn Sie eine Migration einer Oracle-Datenbank nach PostgreSQL planen, helfen Ihnen diese neuen Funktionen dabei, einen noch größeren Teil der Konvertierung zu automatisieren und dabei dennoch die volle Kontrolle über das Endergebnis zu behalten.


    Migration von PL/SQL-Prozeduren, Funktionen und Package Bodies nach PostgreSQL

    Einer der wichtigsten Schritte bei einer Oracle-zu-PostgreSQL-Migration ist die Umwandlung von Oracle-PL/SQL-Logik in PostgreSQLs PL/pgSQL-Sprache.

    Um diesen Prozess zu unterstützen, hilft KeepTool bei der Migration von Oracle-Prozeduren, Funktionen und Package Bodies in PostgreSQL-kompatible Definitionen. Dadurch schreibt Hora den Code so um, dass er sich in einer PostgreSQL-Datenbank deutlich einfacher ausführen lässt.

    Aufteilung von Package Bodies

    Die PostgreSQL Community Edition unterstützt keine Packages. Deshalb zerlegt KeepTool jedes Oracle-Package in einzelne Prozeduren und Funktionen.

    Der ursprüngliche Name der Prozedur oder Funktion wird dabei mit dem Package-Namen kombiniert, getrennt durch zwei Unterstriche:

    • packagename__procedurename
    • packagename__functionname

    Dieser Ansatz funktioniert gut, weil PostgreSQL nicht die 30-Zeichen-Begrenzung für Bezeichner kennt, die Oracle hat. Außerdem bleiben so alle Prozeduren und Funktionen desselben Packages logisch zusammengefasst.

    Zusätzlich erstellt KeepTool eine Prozedur mit dem Namen:

    • packagename__initialization

    Diese Prozedur enthält die Logik aus dem Initialisierungsblock des ursprünglichen Packages. Mit anderen Worten: Jeder Code, der sich zwischen BEGIN ... END am Ende des Package Body befindet, wird in diese generierte Initialisierungsprozedur verschoben.

    Bevor Sie eine andere Prozedur oder Funktion aus dem Package aufrufen, sollten Sie deshalb zunächst diese Initialisierungsprozedur ausführen.

    Globale Package-Variablen

    Globale Package-Variablen werden durch PostgreSQL-Konfigurationsparameter ersetzt.

    Diese Werte werden immer als varchar gespeichert. Gleichzeitig ist keine vorherige Deklaration erforderlich, und die Namen sind case-sensitive.

    Beispiel für die Variable current_id im Package my_package:

    Lesen:

      nullif(current_setting('my_package.current_id', true), '')::int8

    Schreiben:

      perform set_config('my_package.current_id', <value>::varchar, false)

    So migrieren Sie PL/SQL-Logik nach PostgreSQL

    Um die Migration zu starten, verwenden Sie den Kontextmenüpunkt „DDL for PostgreSQL DB“ im Grid PL/SQL Overview.

    Dieser Befehl unterstützt jetzt auch die Mehrfachauswahl, sodass Sie mehrere Prozeduren, Funktionen oder Package Bodies in einem einzigen Vorgang migrieren können. Je nach Größe des Codes kann der Prozess einige Sekunden dauern. Anschließend zeigt Hora den migrierten Code an.

    Das Migrationstool konvertiert automatisch etwa 95 % der Oracle-SQL-Statements in ANSI-SQL. Allerdings können sehr komplexe Anweisungen weiterhin manuelle Anpassungen erfordern.

    Unter anderem erledigt das Tool Folgendes:

    • Es deklariert Record-Variablen für Cursor-FOR-Schleifen.
    • Es wandelt Oracle-Schlüsselwörter in Kleinbuchstaben um.
    • Es ersetzt Oracle-spezifische Datentypen, zum Beispiel DATE durch TIMESTAMP(0), wenn dies sinnvoll ist.
    • Es schreibt nicht unterstützte Oracle-Funktionen in PostgreSQL-kompatible Syntax um.
    • Es fügt das Schlüsselwort CALL für Prozeduraufrufe ein.
    • Es passt die Syntax von Variablendeklarationen an.
    • Es konvertiert die Syntax der Exception-Behandlung.
    • Es schreibt den Zugriff auf Sequenzen um.
    • und vieles mehr

    Nach der Migration sollten Sie den erzeugten Code immer in Ihrer PostgreSQL-Datenbank ausführen und auf Fehler prüfen.

    In manchen Fällen sind weiterhin manuelle Änderungen notwendig. Insbesondere sollten Sie auf implizite Datentypkonvertierungen achten. PostgreSQL ist im Allgemeinen strenger als Oracle, sodass explizite Konvertierungen erforderlich sein können.


    Migration von Sequenzen nach PostgreSQL

    Um Sequenzen zu migrieren, verwenden Sie den Kontextmenüpunkt „DDL for PostgreSQL DB“ im Grid Sequences Overview.

    Auch hier wird die Mehrfachauswahl unterstützt, sodass Sie mehrere Sequenzen in einem Arbeitsschritt migrieren können. Sobald der Vorgang abgeschlossen ist, zeigt Hora den erzeugten PostgreSQL-Code an.

    Für Teams, die eine größere Oracle-zu-PostgreSQL-Migration durchführen, wird die Konvertierung von Sequenzen dadurch schneller und konsistenter.


    Migration von Policies nach PostgreSQL

    Um Policies zu migrieren, verwenden Sie den Kontextmenüpunkt „DDL for PostgreSQL DB“ im Grid Schema | Policies.

    Auch in diesem Bereich steht die Mehrfachauswahl zur Verfügung, sodass mehrere Policies gleichzeitig migriert werden können. Nach Abschluss der Konvertierung zeigt Hora den resultierenden Code an.

    Dadurch wird die Migration von Policies im Rahmen einer umfassenderen PostgreSQL-Modernisierung deutlich einfacher.


    Migration von Objektprivillegien nach PostgreSQL

    Objektberechtigungen werden automatisch zusammen mit den Datenbankobjekten migriert, die Sie nach PostgreSQL konvertieren. Zusätzlich werden die entsprechenden GRANT-Anweisungen an die erzeugte DDL angehängt.

    Das ist besonders wichtig für prozedurale Logik, weil sich die PostgreSQL-Syntax für Berechtigungen deutlich von Oracle unterscheidet. Zum Beispiel müssen Grants für Prozeduren und Funktionen in PostgreSQL die vollständige Liste der formalen Parametertypen enthalten.

    KeepTool erzeugt diese Syntax automatisch und spart dadurch Zeit, während gleichzeitig Fehler bei der Migration reduziert werden.


    Erstellen von Kommentaren für Constraints in PostgreSQL

    Hora erzeugt automatisch Kommentare für Constraints. Dabei handelt es sich um eine nützliche PostgreSQL-Funktion, die in Oracle in dieser Form nicht verfügbar ist.

    Diese Kommentare können in Anwendungen genutzt werden, um benutzerfreundlichere Fehlermeldungen bei Constraint-Verletzungen anzuzeigen. Zum Beispiel ist folgender Ablauf typisch:

    • den Constraint-Namen aus der ursprünglichen PostgreSQL-Fehlermeldung auslesen
    • den Kommentar zu diesem Constraint nachschlagen
    • den Kommentar anschließend als aussagekräftige Meldung in der Anwendung anzeigen

    Sie können die erzeugten Kommentare außerdem manuell weiter anpassen, damit sie für Endanwender noch hilfreicher werden.


    Deterministische Migrationstools versus AI Assistant

    Bei der Planung einer Oracle-zu-PostgreSQL-Migration stellt sich oft die Frage, ob man sich besser auf die integrierten Migrationstools von KeepTool oder auf KI-basierte Logik verlassen sollte.

    KI entwickelt sich rasant weiter und steht inzwischen auch direkt in unseren Tools zur Verfügung. Trotzdem hat KI weiterhin eine wichtige Einschränkung: Sie basiert auf Wahrscheinlichkeiten und nicht auf deterministischen Regeln. Dadurch kann derselbe Prompt im Laufe der Zeit leicht unterschiedliche Ergebnisse liefern.

    Genau hier haben deterministische Migrationstools einen klaren Vorteil. Jedes Mal, wenn Sie sie ausführen, erzeugen sie dasselbe Ergebnis und liefern damit eine hohe Konsistenz. Diese Konsistenz ist gerade in großen Migrationsprojekten von großem Wert.

    Selbst wenn anschließend noch etwas manuelle Nachbearbeitung erforderlich ist, bieten deterministische Tools einen stabilen und wiederholbaren Ausgangspunkt. Danach können Sie den integrierten AI Assistant für verbleibende Verfeinerungen nutzen, etwa um Sonderfälle zu optimieren oder die Lesbarkeit des Codes zu verbessern.

    In der Praxis ist oft die Kombination aus beiden Ansätzen am besten:

    • Verwenden Sie KeepTools deterministische Migrationslogik für die Kernkonvertierung.
    • Nutzen Sie anschließend den AI Assistant für Nachbearbeitung und letzte Anpassungen.

    Zusammenfassung

    Mit KeepTool 17 wird die Oracle-zu-PostgreSQL-Migration noch umfassender.

    Sie können jetzt nicht nur Tabellen, Views, Trigger und SQL-Statements migrieren, sondern auch PL/SQL-Logik, Sequenzen, Policies, Berechtigungen und sogar Constraint-Kommentare.

    Insgesamt entsteht dadurch ein vollständigerer und konsistenterer Migrations-Workflow, der die Zuverlässigkeit deterministischer Konvertierung mit der Flexibilität KI-gestützter Nachbearbeitung verbindet.

    Wenn Sie eine Migration einer Oracle-Datenbank nach PostgreSQL planen, bietet Ihnen KeepTool 17 einen praktischen und effizienten Weg, den Prozess zu beschleunigen und gleichzeitig die Kontrolle über das Endergebnis zu behalten.

    ➡️ KeepTool kostenlos testen

    Die Oracle-Tools von KeepTool wurden speziell für Entwickler, DBAs und Support-Teams entwickelt.
    Basierend auf über 25 Jahren Erfahrung optimieren wir unsere Software kontinuierlich, um Ihre Datenbankanalyse und -dokumentation schneller, effizienter und übersichtlicher zu gestalten.