Webserver & Dienste

Oracle nach PostgreSQL migrieren: So planst du den Umstieg

Die Datenmigration ist selten das Problem, PL/SQL und die daran hängenden Anwendungen sind es. Rechne den Aufwand ehrlich am Anteil der Stored Procedures hoch, nicht an der Datenmenge, sonst kippt die Planung im ersten Projektdrittel.

Administrator konfiguriert einen Webserver am Laptop
Seit 1997 am Markt Präsenz & Live-Online 4,9 aus 503 Google-Bewertungen Auch Inhouse für dein Team
Worum es geht

Warum die Oracle-Ablösung selten am Schema scheitert, sondern am Code

In den meisten Häusern beginnt das Thema nicht in der Technik, sondern in der Beschaffung. Die jährlichen Lizenz- und Supportkosten stehen im Budget, ein License-Review kündigt sich an, und plötzlich steht die Frage im Raum, welche Datenbanken wirklich Oracle brauchen und welche auf PostgreSQL laufen könnten. Eine Antwort für die ganze Landschaft gibt es nicht: Eine reine OLTP-Anwendung mit weitgehend standardisiertem SQL ist ein anderer Fall als ein gewachsenes System mit PL/SQL-Packages, Oracle Text, Advanced Queuing oder Jobs aus DBMS_SCHEDULER.

Der Schemateil ist dabei der einfachere. Tabellen, Constraints, Indizes und Sequenzen lassen sich mit ora2pg weitgehend automatisch übersetzen, inklusive Typ-Mapping von NUMBER auf numeric oder bigint und von VARCHAR2 auf text. Der eigentliche Aufwand steckt in der Logik. PL/SQL-Packages haben in PostgreSQL kein direktes Gegenstück, Package-Variablen mit Sessionzustand musst du anders lösen, autonome Transaktionen fehlen im Kern, und Hierarchieabfragen mit CONNECT BY wollen als rekursive CTE neu geschrieben werden. ora2pg schätzt den Aufwand dafür, ersetzt aber kein Code-Review.

Drei Fehler siehst du immer wieder. Erstens wird die Anwendung vergessen, obwohl ROWNUM, NVL, DECODE, Abfragen gegen DUAL und Oracle-eigene Treiberdetails oft direkt im Applikationscode stecken. Zweitens wird das Verhalten unterschätzt: PostgreSQL behandelt einen Leerstring nicht wie NULL, sortiert abhängig von der Collation anders und arbeitet mit MVCC ohne Undo-Segmente, was Vacuum und Autovacuum zu einem echten Betriebsthema macht. Drittens fehlt der Rückweg. Wer ohne Parallelbetrieb, Datenabgleich und definiertes Fallback-Fenster umschaltet, hat im Fehlerfall keine Option mehr.

Miniatur-Szene: Webserver-Turm mit umkreisendem Globus, ein- und ausgehende Anfragepfeile, Zertifikatskarte

Migrationspfad von Oracle zu PostgreSQL

  1. 01 Assessment mit ora2pg-Report
  2. 02 Schema und Typ-Mapping
  3. 03 PL/SQL zu PL/pgSQL
  4. 04 Datenübernahme und Abgleich
  5. 05 Pläne und Tuning
  6. 06 Parallelbetrieb und Cutover
Was du mitnimmst

Der Migrationsweg in klaren Etappen

Eine Migration wird beherrschbar, wenn du sie nicht als ein Ereignis behandelst, sondern als Kette von Schritten mit jeweils eigenem Abnahmekriterium. Diese Reihenfolge hat sich in Projekten bewährt und lässt sich auf einzelne Schemas genauso anwenden wie auf eine ganze Instanz.

Bestand und Machbarkeit bewerten

Lass ora2pg im Report-Modus über das Schema laufen und schau dir die Aufwandsschätzung pro Objekttyp an. Views, Trigger, Packages, externe Tabellen und Datenbank-Links bekommen dabei sehr unterschiedliche Gewichte. Das Ergebnis ist deine Priorisierung: Welches Schema migrierst du zuerst, welches bleibt vorerst auf Oracle.

Schema und Datentypen sauber abbilden

Beim Typ-Mapping entscheidest du bewusst statt automatisch. NUMBER ohne Skalierung wird je nach Wertebereich zu bigint oder numeric, DATE zu timestamp, CLOB zu text. Sequenzen, Identity-Spalten und Default-Werte prüfst du einzeln, ebenso Index-Typen, denn ein Function-Based Index heißt in PostgreSQL Ausdrucksindex und braucht eine als IMMUTABLE markierte Funktion.

PL/SQL nach PL/pgSQL portieren

Packages löst du üblicherweise in Schemas mit einzelnen Funktionen auf, Sessionzustand ersetzt du durch temporäre Tabellen oder Konfigurationsparameter. Autonome Transaktionen bildest du über dblink oder eine Hintergrundverarbeitung ab, CONNECT BY über WITH RECURSIVE. Für Bulk-Logik lohnt der Blick auf mengenbasiertes SQL, weil zeilenweise Cursor in PostgreSQL selten die beste Wahl sind.

Daten übertragen und verifizieren

Für den Erstimport nutzt du COPY statt einzelner INSERTs, ora2pg kann den Export parallelisieren. Anschließend gleichst du ab: Zeilenzahlen pro Tabelle, Prüfsummen über fachliche Schlüssel und Stichproben bei Zahlen, Zeitzonen und Zeichenkodierung. Erst danach legst du Indizes und Constraints an und lässt ANALYZE laufen.

Performance und Ausführungspläne prüfen

Der Planer arbeitet anders als der von Oracle, und Optimizer-Hints gibt es nicht. Statt dessen justierst du work_mem, shared_buffers, effective_cache_size und die Statistikziele, liest Pläne mit EXPLAIN ANALYZE und beobachtest über pg_stat_statements, welche Abfragen wirklich teuer sind. Genau hier zahlt sich Tuning-Wissen aus, wie es der PostgreSQL Advanced-Training zu Performance-Tuning vermittelt.

Betrieb aufbauen, bevor du umschaltest

Backup mit pg_basebackup oder pgBackRest, Point-in-Time-Recovery, Streaming-Replikation, Monitoring und ein geübtes Restore-Verfahren gehören vor den Go-live. Der PostgreSQL Aufbaukurs zu Backup und Datenintegrität deckt diesen Teil ab, der PostgreSQL für Administratoren Grundkurs die Basis darunter.

Wissen prüfen

Teste dich und finde deinen Weg

Bevor du einen Kurs buchst, lohnt sich eine ehrliche Standortbestimmung. Die Tests sind kostenlos und ohne Anmeldung.

Gut zu wissen

Häufige Fragen zu Migration von Oracle zu PostgreSQL

Noch etwas offen? Wir sind ohne Warteschleife für dich da.

Frag uns direkt
Wie viel einer Oracle-Datenbank kann ora2pg automatisch migrieren?
Struktur und Daten übernimmt ora2pg in der Regel weitgehend automatisch, also Tabellen, Constraints, Indizes, Sequenzen und den Inhalt. Bei Views, Triggern und PL/SQL-Packages liefert das Werkzeug eine Übersetzung als Entwurf und eine Aufwandsschätzung, die du fachlich prüfen und meist nacharbeiten musst. Wie hoch der manuelle Anteil ausfällt, hängt fast ausschließlich davon ab, wie viel Geschäftslogik in der Datenbank liegt.
Welche Oracle-Funktionen haben in PostgreSQL kein direktes Gegenstück?
Am häufigsten stolpern Teams über Packages mit Sessionzustand, autonome Transaktionen, Optimizer-Hints, hierarchische Abfragen mit CONNECT BY, Advanced Queuing und Real Application Clusters. Für die meisten Punkte gibt es tragfähige Ersatzlösungen, etwa rekursive CTEs, dblink, Streaming-Replikation oder externe Queue-Systeme, aber es ist eine Design-Entscheidung und keine reine Syntaxübersetzung.
Wie stelle ich sicher, dass nach der Migration keine Daten fehlen?
Verlass dich nicht auf ein einzelnes Kriterium. Vergleiche Zeilenzahlen pro Tabelle, bilde Prüfsummen über fachliche Schlüssel und Beträge, prüfe Grenzfälle bei NULL und Leerstring, kontrolliere Zeitzonen sowie Zeichenkodierung und lass die Anwendung im Parallelbetrieb gegen beide Systeme lesen. Erst wenn diese Vergleiche über mehrere Durchläufe stabil sind, ist der Cutover vertretbar.
Ist PostgreSQL für unternehmenskritische Systeme mit Support verfügbar?
Ja, PostgreSQL selbst ist quelloffen und lizenzkostenfrei, kommerzieller Support ist über spezialisierte Anbieter und über die Enterprise-Distributionen erhältlich. Für den Vergleich der Gesamtkosten solltest du diesen Support, den Migrationsaufwand und den Schulungsbedarf deines Teams mit einrechnen, statt nur die eingesparten Lizenzgebühren gegenüberzustellen.
Lohnt sich der Umstieg auch von MySQL, MariaDB oder SQL Server?
Der methodische Ablauf ist derselbe, nur die Reibungspunkte verschieben sich. Bei MySQL und MariaDB geht es eher um Storage-Engines, laxe Typprüfung und abweichendes Verhalten bei Datumswerten, bei SQL Server um T-SQL, Identity-Spalten und die Sortierreihenfolge. Die Schritte Assessment, Schema, Logik, Datenabgleich und Betriebsaufbau gelten unverändert.

Zuletzt geprüft am 26. Juli 2026.

Das sagen Teilnehmer

Echte Stimmen aus unseren IT-Kursen

Sehr intensiver Lehrgang, hat mich für meine Arbeit ein gutes Stück voran gebracht.
Rückmeldung aus dem Kurs „Monitoring mit Prometheus und Grafana - Grundkurs“
Es war eine sehr gute Lernatmosphäre und der Trainer verstand sein Thema sehr gut.
Rückmeldung aus dem Kurs „SELinux Training: Grundlagen und Administration (SEL1)“
Persönlich für dich da

Deine Ansprechpartner

Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Hilft dir, aus dem Linux-Programm den passenden Kurs oder Lernpfad zu finden.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant mit dir Inhouse-Trainings, die exakt auf eure Systemlandschaft und Distributionen zugeschnitten sind.

Nächster Schritt

Migration mit belastbarem PostgreSQL-Wissen angehen

Wenn dein Team den Umstieg selbst tragen soll, braucht es Sicherheit in Administration, Backup und Tuning. Bei cmt findest du dafür den PostgreSQL für Administratoren Grundkurs, den Aufbaukurs zu Backup und Datenintegrität sowie das Advanced-Training zum Performance-Tuning, wahlweise als Live-Online-Termin oder als Inhouse-Schulung auf eure Landschaft zugeschnitten. Sprich uns an, wenn du vorab klären willst, welcher Kurs zu eurem Migrationsstand passt.