Info2soft verwendet Cookies, um Ihnen ein besseres und angenehmeres Surferlebnis auf unserer Website zu ermöglichen. Datenschutzerklärung
Wird geladen...
Viele Unternehmen führen Migrationen von Oracle nach PostgreSQL durch, um Lizenzkosten zu senken, erweiterte Funktionen zu nutzen und eine höhere Flexibilität zu erzielen. Für viele Teams bietet der Wechsel zu PostgreSQL eine kostengünstigere und zukunftssichere Datenbankstrategie.
Dennoch ist die Migration von Oracle nach PostgreSQL nicht immer unkompliziert. Oracle‑Datenbanken enthalten oft komplexe Schemas, gespeicherte Prozeduren, Trigger und herstellerspezifische SQL‑Funktionen, die nicht direkt mit PostgreSQL kompatibel sind.
An dieser Stelle erweist sich Ora2Pg als äußerst nützlich. Ora2Pg ist ein beliebtes Open‑Source‑Migrationstool, das die Konvertierung von Oracle‑ nach PostgreSQL‑Datenbanken vereinfacht. Es analysiert Oracle‑Datenbankstrukturen, erstellt Migrationsberichte, wandelt Schemas in PostgreSQL‑kompatibles SQL um und exportiert Daten, die in PostgreSQL importiert werden können.
Lesen Sie einfach weiter; wir zeigen die detaillierten Schritte für die Migration von Oracle nach PostgreSQL mithilfe von Ora2Pg. Dieser Leitfaden wurde in einer CentOS‑Umgebung getestet und behandelt unter anderem Installation, Konfiguration, Tests, Migrationsbewertung, Export‑ und Importschritte.
Führen Sie diese strukturierten Schritte (getestet unter CentOS 7/8) aus, um das Tool mit allen erforderlichen Abhängigkeiten zu erstellen und einzurichten:
Verwenden Sie YUM, um obligatorische Pakete für die Kompilierung und den Betrieb von ora2pg zu installieren:
sudo yum install gcc postgresql-devel perl-DBI perl-ExtUtils-MakeMaker perl-devel perl-DBD-Pg -y
Überprüfen Sie die Installation mit perl -MDBI -e ‚print $DBI::VERSION‘, um sicherzustellen, dass keine Perl‑Module fehlen.
1. Laden Sie die Oracle Basic‑ und SDK‑RPM‑Dateien (12.2+) aus dem offiziellen Oracle‑Repository herunter und installieren Sie diese lokal:
sudo yum install oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm -y
2. Konfigurieren Sie die Umgebungsvariablen in ~/.bash_profile:
export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
Testen Sie die Konnektivität mit sqlplus benutzername/passwort@oracle_host:1521/service_name, um zu bestätigen, dass der Client funktioniert.
Dieses Modul ermöglicht ora2pg die Verbindung zu Oracle; installieren Sie es der Einfachheit halber über CPAN:
cpan DBD::Oracle
Validieren Sie mit perl -MDBD::Oracle -e ‚print $DBD::Oracle::VERSION‘ (keine Fehler = Erfolg).
Laden Sie die stabile Version v20.0 herunter und kompilieren Sie diese:
wget https://github.com/darold/ora2pg/archive/refs/tags/v20.0.tar.gz
tar -xvf v20.0.tar.gz && cd ora2pg-20.0
perl Makefile.PL
make && sudo make install
Bestätigen Sie die globale Installation mit ora2pg -v (es sollte „ora2pg v20.0“ angezeigt werden).
Das Konfigurieren der Datei ora2pg.conf ist der kritische Schritt für die Oracle‑Migration nach PostgreSQL. In dieser Datei wird festgelegt, wie Ora2Pg eine Verbindung zu Ihrer Oracle‑Instanz herstellt, welche Daten migriert werden und wie die Ausgabe für die PostgreSQL‑Kompatibilität formatiert wird.
Nach der Installation befindet sich die Standard‑ora2pg.conf üblicherweise unter:
/usr/local/share/ora2pg/ora2pg.conf.dist
Kopieren Sie die Vorlage in eine nutzbare Konfigurationsdatei (behalten Sie das Original bei):
cp /usr/local/share/ora2pg/ora2pg.conf.dist /etc/ora2pg.conf
Bearbeiten Sie /etc/ora2pg.conf mit einem Texteditor (z. B. vim), um diese an Ihre Oracle‑/PostgreSQL‑Umgebung anzupassen – aktualisieren Sie diese unverzichtbaren Parameter:
# PostgreSQL‑Version (11+ empfohlen)
PG_VERSION = 14
# Oracle‑Verbindungszeichenfolge (Format: dbi:Oracle:host=ORACLE_HOST;port=1521;sid=ORACLE_SID)
ORACLE_DSN = dbi:Oracle:host=192.168.1.100;port=1521;sid=ORCL
# Oracle‑Zugangsdaten (mindestens Lesezugriff)
ORACLE_USER = oracle_migration_user
ORACLE_PWD = Ihr_sicheres_Passwort
# Ziel‑Oracle‑Schema für die Migration
SCHEMA = HR
# Aktivieren des vollständigen Schema‑Exports
EXPORT_SCHEMA = 1
# Export von Benutzerberechtigungen
USER_GRANTS = 1
# Festlegen des Transaktionsmodus auf schreibgeschützt (vermeidet Oracle‑Sperrprobleme)
TRANSACTION = READONLY
Prüfen Sie mit einer kurzen ora2pg‑Prüfung auf Syntaxfehler und Konnektivität:
ora2pg -t SHOW_VERSION -c /etc/ora2pg.conf
Bei erfolgreicher Ausführung wird die ora2pg‑Version angezeigt und die Oracle‑Client‑Konnektivität bestätigt.
Bevor Sie Migrationsskripte oder Berichte erstellen, empfiehlt es sich, die Ora2Pg‑Konnektivität zu testen, um fehlgeschlagene Migrationen, defekte Exporte und späteren Zeitaufwand zu vermeiden.
Führen Sie diese einfachen Tests durch, um Ihre Einrichtung zu validieren:
Bestätigen Sie zunächst, dass ora2pg Ihre Konfigurationsdatei erkennt und ohne zentrale Fehler ausgeführt wird:
ora2pg -t SHOW_VERSION -c /etc/ora2pg.conf
Bei erfolgreichem Ergebnis wird die ora2pg‑Version (z. B. „ora2pg v20.0“) ausgegeben und bestätigt, dass das Oracle‑DBD‑Modul geladen ist. Wird „DBD::Oracle not found“ angezeigt, installieren Sie das Perl‑Modul DBD::Oracle erneut (Schritt 3 der Ora2pg‑Installation).
Führen Sie einen gezielten Test durch, um zu prüfen, ob ora2pg Ihre Oracle‑Instanz erreichen kann:
ora2pg -t TEST_CONNECTION -c /etc/ora2pg.conf
Bei Erfolg wird „Oracle connection OK“ angezeigt – häufige Fehler, die hier behoben werden müssen:
Führen Sie abschließend einen kurzen Scan Ihres Ziel‑Oracle‑Schemas durch, um sicherzustellen, dass ora2pg dessen Objekte lesen kann:
ora2pg -t SHOW_SCHEMA -c /etc/ora2pg.conf
Dieser Befehl listet alle Tabellen, Ansichten und Sequenzen in Ihrem Ziel‑Schema (z. B. HR) auf – eine vollständige Liste bestätigt, dass ora2pg vollen Lesezugriff hat und für die Migrationsbewertung bereit ist.
Oracle verfügt über viele herstellerspezifische Funktionen (Synonyme, Pakete wie DBMS_*, spezielle PL/SQL‑Logik, verschachtelte Transaktionen), die Ora2Pg nicht automatisch konvertieren kann. Sie sollten das Migrationsrisiko und die geplante Ausfallzeit bewerten, um zu entscheiden, ob Sie fortfahren.
So führen Sie die Migrationsbewertung mit Ora2Pg durch
Führen Sie diesen Befehl aus, um Ihr Oracle‑Schema zu scannen und einen detaillierten, handlungsorientierten Bericht zu erstellen.
ora2pg -t SHOW_REPORT --estimate_cost -c /etc/ora2pg.conf > oracle_to_postgres_assessment.txt
Der Parameter –estimate_cost berechnet einen Migrationsschwierigkeitsgrad (1‑10) und gliedert den Aufwand nach Objekttyp auf (Tabellen, PL/SQL, Partitionen, Berechtigungen usw.).
Prüfen Sie die Datei oracle_to_postgres_assessment.txt und kategorisieren Sie die Objekte nach Konvertierbarkeit:
Verwenden Sie den Schwierigkeitsgrad des Berichts zur Ressourcenzuweisung:
Nachdem Sie die Konnektivität validiert und eine Migrationsbewertung abgeschlossen haben, können Sie Oracle mit den folgenden Schritten nach PostgreSQL migrieren.
Wählen Sie einen Exportmodus passend zu Ihrer Bewertung aus (z. B. nur Schema‑Export für hochkomplexes PL/SQL, vollständiger Export für risikoarme Datenbanken)
Vollständiger Export (Schema + Daten + Berechtigungen):
ora2pg -c /etc/ora2pg.conf -o oracle_to_postgres_migration.sql -d
Benutzerdefinierte Exportoptionen (für zielgerichtete Migrationen)
✵ Reiner Schema‑Export (keine Daten, ideal zum ersten Test der Struktur):
ora2pg -c /etc/ora2pg.conf -o oracle_schema_only.sql -t SCHEMA
✵ Reiner Daten‑Export (für bereits vorhandene Postgres‑Schemas):
ora2pg -c /etc/ora2pg.conf -o oracle_data_only.sql -t DATA
✵ Reiner Berechtigungs‑Export (Benutzerzugriffsrechte):
ora2pg -c /etc/ora2pg.conf -o oracle_grants_only.sql -t GRANTS
Importieren Sie niemals ein nicht validiertes Skript – beheben Sie Oracle‑spezifische Syntax, die ora2pg ggf. übersehen hat (gemäß Ihrer Bewertung):
1. Suchen Sie nach nicht konvertierbaren Oracle‑Schlüsselwörtern (z. B. SYNONYM, DBMS_*, NESTED TABLE):
grep -i "SYNONYM\|DBMS_" oracle_to_postgres_migration.sql
2. Beheben Sie die gefundenen Probleme (z. B. Ersetzen von Synonymen durch Postgres‑Ansichten, Umschreiben von PL/SQL in PL/pgSQL)
3. Testlauf des Skripts in Postgres, um Syntaxfehler zu erkennen:
psql -h Ihr_postgres_host -U postgres_user -d ziel_db -f oracle_to_postgres_migration.sql --dry-run
Verwenden Sie einen dedizierten Postgres‑Migrationsbenutzer (mit CREATE‑/INSERT‑Berechtigungen), um das validierte Skript zu laden:
psql -h Ihr_postgres_host -p 5432 -U postgres_migration_user -d ziel_postgres_db -f oracle_to_postgres_migration.sql > migration_import_log.txt 2>&1
Dies dient dem Import des Skripts und der Protokollierung aller Ausgaben‑/Fehlermeldungen zur Fehlerbehebung.
1. Vergleichen Sie Postgres mit Ihrer Oracle‑Quelle, um sicherzustellen, dass keine Daten/Objekte fehlen:
Auflisten der importierten Tabellen (Anzahl mit Oracle abgleichen):
SELECT table_name FROM information_schema.tables WHERE table_schema = 'hr';
2. Validieren Sie die Zeilenanzahl für kritische Tabellen (z. B. employees):
-- Postgres‑Anzahl
SELECT COUNT(*) FROM hr.employees;
-- Oracle‑Anzahl (Vergleichswert)
SELECT COUNT(*) FROM hr.employees;
3. Testen Sie wichtige Constraints (Primär‑/Fremdschlüssel), um die Datenintegrität sicherzustellen:
SELECT employee_id, COUNT(*) FROM hr.employees GROUP BY employee_id HAVING COUNT(*) > 1;
Dies prüft auf doppelte Primärschlüssel und sollte 0 Zeilen zurückgeben.
Hinweis:
Trotz sorgfältiger Einrichtung können bei einer Oracle‑zu‑Postgres‑Migration mit ora2pg typische Fehler auftreten. Im Folgenden finden Sie die häufigsten Probleme und einfache Lösungen, um den Ablauf auf Kurs zu halten.
1. Fehlende Perl‑Module (DBD::Oracle / DBI‑Fehler)
Dieser Fehler tritt auf, wenn erforderliche Perl‑Bibliotheken fehlen oder beschädigt sind. Installieren Sie die Module DBD::Oracle und DBI neu und bestätigen Sie mit Versionsprüf‑Befehlen, dass diese korrekt geladen werden.
2. Pfadprobleme des Oracle Instant Client
Ora2pg kann aufgrund falscher Umgebungsvariablen keine Oracle‑Client‑Dateien finden. Prüfen und korrigieren Sie ORACLE_HOME und LD_LIBRARY_PATH und laden Sie anschließend Ihr Systemprofil neu.
3. Oracle‑Verbindungs‑ oder Authentifizierungsfehler
Falsche Zugangsdaten, ungültiges DSN‑Format oder Netzwerk‑Blockaden verursachen Verbindungsfehler. Überprüfen Sie Benutzername, Passwort, Host, Port und SID‑/Servicename in ora2pg.conf.
4. Importfehler von PostgreSQL‑SQL‑Skripten
Diese werden durch Oracle‑spezifische Syntax verursacht, die ora2pg nicht automatisch konvertieren kann. Verwenden Sie Ihren Migrationsbericht, um nicht unterstützte Objekte zu finden und diese manuell umzuschreiben.
5. Fehlgeschlagener Export von Berechtigungen
Der Oracle‑Migrationsbenutzer verfügt nicht über ausreichende Lesezugriffsrechte. Gewähren Sie die erforderlichen Lesezugriffe auf das Ziel‑Schema und führen Sie den Export erneut aus.
6. Langsamer Export bei großen Datensätzen
Ora2pg läuft bei großen Tabellen standardmäßig langsam, da es single‑threaded verarbeitet. Verwenden Sie den Parameter –parallel, um den Multi‑Thread‑Export zu aktivieren und den Vorgang zu beschleunigen.
7. Konvertierungsprobleme bei Partitionen oder erweiterten Objekten
Einige Oracle‑Partitionen und benutzerdefinierte Objekte lassen sich nicht direkt auf Postgres abbilden. Passen Sie die Einstellungen in ora2pg.conf an und korrigieren Sie nicht unterstützte Strukturen manuell.
Ora2Pg ist zwar ein praktisches Open‑Source‑Tool für kleine, wenig komplexe Oracle‑zu‑PostgreSQL‑Migrationen, weist jedoch kritische Einschränkungen für Unternehmens‑Szenarien auf – insbesondere bei großen Datensätzen (100 GB+) und geschäftskritischen Produktivumgebungen.
Für Unternehmen, die eine schnellere, zuverlässigere Migration ohne Ausfallzeit suchen, bietet i2Stream von Info2Soft – ein führendes heterogenes Datenbank‑Replikationsprodukt – eine Lösung für die zentralen Schwachstellen von ora2pg und stellt Unternehmens‑Funktionen für die Oracle‑zu‑Postgres‑Migration bereit.
Wichtige Vorteile von i2Stream gegenüber Ora2Pg:
Die Oracle‑zu‑PostgreSQL‑Migration mit Ora2Pg ist eine gute Wahl für kleine, wenig komplexe Szenarien. Wenn Sie die schrittweisen Abläufe in diesem Leitfaden befolgen, gelingt Ihnen eine reibungslose grundlegende Migration von Oracle‑ nach PostgreSQL‑Datenbanken.
Für einige Unternehmens‑Anwendungsfälle – mit unvermeidlicher Ausfallzeit, großen Datensätzen – ist jedoch i2Stream von Info2Soft die bessere Wahl. Seine unternehmensgerechte heterogene Replikationsfunktion ermöglicht Migrationen ohne Ausfallzeit, Echtzeit‑Synchronisierung und automatisierte Datenvalidierung. Alle zentralen Schwachstellen von ora2pg werden behoben, sodass ein risikoarmer, effizienter Übergang möglich ist.
Zusätzlich verfügt i2Stream über eine breite Kompatibilität mit vielen weiteren Datenbanken; Sie können Daten zwischen Oracle, MySQL, MS SQL Server und weiteren Systemen migrieren.