- Tag 1: Assessment, Tooling und Ora2Pg
- 1. Migrationsplanung und Assessment
- Warum von Oracle zu PostgreSQL? Lizenzkostenvergleich, Feature-Parität, realistische Einschätzung.
- Oracle-Datenbank inventarisieren: Schemas, Objekte, PL/SQL-Umfang, Oracle-spezifische Features (RAC, Data Guard, ASM - kein 1:1-Äquivalent).
- Komplexitätsbewertung pro Objekttyp: direktes Äquivalent, Umbau nötig, nicht migrierbar.
- 2. Ora2Pg: Das zentrale Migrationswerkzeug
- Installation und Konfiguration (Oracle Instant Client, ora2pg.conf).
- Assessment Report (--estimate_cost): automatische Komplexitätsbewertung, Migrationslevel A-E interpretieren.
- Schema-Export (TABLE, VIEW, SEQUENCE, FUNCTION, PROCEDURE, TRIGGER, PACKAGE) und typische Nacharbeiten.
- Daten-Export (COPY/INSERT-Modus, Parallelisierung, Fehlerbehandlung).
- Ergänzende Tools im Überblick: ora_migrator, Amazon SCT, orafce Extension.
- Praxis-Übung:
Ora2Pg gegen Demo-Oracle-Datenbank: Assessment Report generieren, Schema exportieren, DDL in PostgreSQL laden und Fehler beheben, Daten für 3 Tabellen exportieren.
- Tag 2: Schema- und SQL-Konvertierung
- 3. Datentypen und Schema-Mapping
- Datentyp-Konvertierung: NUMBER, VARCHAR2, DATE (enthält Uhrzeit!), CLOB/BLOB, RAW, NVARCHAR2.
- Auto-Inkrement: Oracle SEQUENCE + TRIGGER -> PostgreSQL SERIAL / IDENTITY.
- Indexe: B-Tree (identisch), Bitmap (kein Äquivalent), Function-based -> Expression Index.
- Konzepte ohne direktes Äquivalent: Synonyme (-> Search Path / Views), DB Links (-> Foreign Data Wrappers), Materialized Views (ähnlich, aber kein Refresh-on-Commit).
- 4. SQL-Konvertierung: Oracle SQL -> PostgreSQL SQL
- Identische Syntax (Standard-SQL): SELECT, JOIN, GROUP BY, Subqueries - kein Aufwand.
- Konvertierungsmuster: DUAL -> entfällt, SYSDATE -> CURRENT_TIMESTAMP, ROWNUM -> LIMIT/OFFSET, CONNECT BY -> Recursive CTE, NVL -> COALESCE, DECODE -> CASE, MINUS -> EXCEPT, Outer Join (+) -> ANSI JOIN.
- Häufigste Fehlerquelle: Oracle behandelt leeren String als NULL, PostgreSQL nicht.
- orafce Extension: Oracle-kompatible Funktionen nachrüsten (NVL, DECODE, DBMS_OUTPUT) - Migrationsaufwand reduzieren vs. sauber konvertieren.
- Praxis-Übung:
15 Oracle-SQL-Queries konvertieren (ROWNUM, CONNECT BY, DECODE, NVL, Outer Join, MINUS, NULL vs. leerer String). orafce-Variante vs. native Konvertierung vergleichen.
- Tag 3: PL/SQL-Migration, Testing und Cutover
- 5. PL/SQL -> PL/pgSQL
- Gemeinsamkeiten (80 %): Block-Struktur, Variablen, Kontrollstrukturen, Cursor, Exception Handling - trivial konvertierbar.
- Syntaktische Unterschiede: Procedure -> Function RETURNS VOID (vor v14), Dollar Quoting, RAISE_APPLICATION_ERROR -> RAISE EXCEPTION, :NEW/:OLD -> NEW/OLD, Trigger als separate Funktion.
- Oracle Packages -> PostgreSQL: Kein Package-Äquivalent. Alternativen: Schema als Namespace, einzelne Funktionen mit Naming-Prefix. Ora2Pg-Konvertierung und typischer Nachbesserungsbedarf.
- Ora2Pg PL/SQL-Konvertierung: automatisch 70-90 % korrekt, 10-30 % manuelle Nacharbeit.
- Praxis-Übung:
5 PL/SQL-Objekte konvertieren (Procedure, Function, Trigger, Package, dynamisches SQL). Ora2Pg-Output mit manueller Konvertierung vergleichen.
- 6. Testing, Validierung und Cutover
- Testing-Strategie: Schema-Validierung (Objektzählung), Datenvalidierung (Zeilenzählung, Checksummen), funktionale Validierung (Stored Procedures mit Testfällen), SQL-Regression (Top-Queries auf beiden Systemen vergleichen).
- Typische Post-Migrations-Fehler: NULL vs. leerer String, Collation, Transaktions-Verhalten, Sequenz-Werte, Case Sensitivity.
- Applikations-Anpassungen: Connection Strings, ORM-Dialekt, Stored-Procedure-Aufrufe.
- Cutover-Planung: Parallelbetrieb, Downtime-Minimierung (Vorsynchronisation + Delta), Rollback-Plan.
- Praxis-Übung: Migrations-Validierung der Demo-Datenbank: Objektzählung, Zeilenzählung, 3 Stored Procedures testen, 5 Queries vergleichen.
- 7. Praxis-Workshop: Mein Oracle-Migrationsplan" (45 Min)
- Assessment der eigenen Oracle-Umgebung (Objekte, PL/SQL-Umfang, Oracle-spezifische Features).
- Phasenplan erstellen (Schema -> Daten -> PL/SQL -> Applikation -> Testing -> Cutover).
- Top-5-Risiken identifizieren und Mitigationsstrategie festlegen.
- Peer-Review und Timeline-Stresstest.
LernzieleJede teilnehmende Person verlässt das Seminar mit der
Fähigkeit, Ora2Pg produktiv einzusetzen (Assessment, Schema-Export, Daten-Export, PL/SQL-Konvertierung), einem
Konvertierungswissen für die häufigsten Oracle->PostgreSQL-Mapping-Muster (Datentypen, SQL-Syntax, PL/SQL->PL/pgSQL, Packages, Triggers), einer
Testing-Strategie (Schema-, Daten-, Funktionale und Performance-Validierung) und einem
individuellen Migrationsplan für die eigene Oracle-Umgebung.
ZielgruppenDatenbankprogrammierer, Datenbankadministratoren und Softwareentwickler, die bis dato mit Oracle gearbeitet haben.