Anbindung Oracle an Postgresql - Windows 11

Hat es jemand schon mal geschafft Oracle an Postgresql anzubinden über db4odbc und odbc Treiber ?

Ich habe im Internet einige Anleitungen für Linux gefunden. Da ich jedoch keine solche Maschine für Tests zur Verfügung, habe wollte ich das mit Windows 11 und Oracle 21c XE nach PostgreSQL 16.1 ausprobieren.

Darüber habe ich überhaupt keine Infos gefunden. Vielleicht geht es ja unter Windows überhaupt nicht.

Das Thema ist etwas off topic, aber vielleicht kann mir jemand einen Tip geben.

Danke schon mal im Voraus.

Was genau meinst Du mit “Anbindung”

oracle_fdw geht nicht über ODBC sondern direkt über OCI (also den Bibliotheken die auch sqlplus verwenden). Das habe ich unter Linux eigentlich ohne größere Probleme hinbekommen.

Ich meine nicht oracle_fdw. Das habe ich erfolgreich am laufen.

Ich will von Oracle über einen Dblink auf eine Tabelle in Postgresql zugreifen und Daten nach Oracle zurückliefern. Das geht laut Beschreibung im Internet mit der Oracle Technik HS-Agent (dg4obdc) und definiert über den ODBC Treiber eine “quasi” Oracle db mit der man dann von Oracle in der Form:
select * from tabelle@postgresql_datenbank zugreifen kann.

Wichtig ist, daß das Lesen von Daten aus der Postgresql Datenbank von Oracle aus getriggert werden kann. So was geht m.W. mit oracle_fdw nicht. Da geht es nur von PostgreSQL nach Oracle.

Das war der zweiter Treffer meiner Suchmachine mit dem Suchbegriff “dg4odbc”.
Bedeutet, ich weiß auch nichts dazu, aber Oracle weiß es.
Bei Oracle ist es erfahrungsgemäß immer gut, einen Supportvertrag zu haben.
Ansonsten ist die Funktion laut meiner Erinnerung auf die Enterprise Edition beschränkt.

Ob der Link zu Deiner Oracle Version passt, weiß ich nicht.

How to Configure DG4ODBC (Oracle Database Gateway for ODBC) on Windows 32bit to Connect to Non-Oracle Databases Post Install (Doc ID 466225.1)

Last updated on JUNE 08, 2023

Applies to:

Oracle Database - Enterprise Edition - Version 11.1.0.6 to 11.2.0.4 [Release 11.1 to 11.2]
Oracle Database Cloud Schema Service - Version N/A and later
Gen 1 Exadata Cloud at Customer (Oracle Exadata Database Cloud Machine) - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Oracle Database Backup Service - Version N/A and later
Microsoft Windows (32-bit)

Goal

Starting with 11g Oracle now provides a Database Gateway for ODBC for 32bit Windows operating systems which can be used to connect to any 3rd party database using a suitable 3rd party ODBC driver.

Please be aware:

- DG4ODBC is first ported to 64bit Windows platforms starting with 11.2. Using a 32bit DG4ODBC on a 64bit Windows operating system is NOT certified.

- HSOLEDB is no longer available for 11g on Windows.

- DG4ODBC 11.2 is the last version available for Windows 32bit and the 32bit version is not available with 12.1 and higher versions

Differences between the older product (Generic Connectivity or sometimes also called HSODBC) and DG4ODBC (Database Gateway for ODBC):

  • DG4ODBC is now a stand alone product. It is no longer required to have DG4ODBC running on the same machine and within the same ORACLE_HOME as the Oracle database.
  • DG4ODBC requires now a ODBC LEVEL 3 COMPLIANT ODBC driver.

The gateway is certified also for older Oracle releases like 10.2.0.4, 10.2.0.5 and for a small amount of 9.2 and 10.1 databases where the gateway compatibility patch bug <> has been ported to.

You’ll find the gateway compatibility patch on “My Oracle Support” by performing a simple search under the ‘Patches & Updates’ tab at the top of the page. Choose ‘Simple Search’ and enter 5965763 in the block for the patch number and select the appropriate platform from the Platform or Language list.

If the patch is not available for your platform and/or release you have to update the Oracle database to a newer version.

Solution

To view full details, sign in with your My Oracle Support account.

Es sieht so aus, als ob dafür eine Enterprise Edition notwendig ist und das mit einer XE Version unter Windows nicht möglich ist.

Da wäre ich mir nicht sicher. Der Link Doc ID 466225.1 ist keine State Of The Art Aussage, sondern Produkt spezifisch und wahrscheinlich älter. Ich meine, ich habe gelesen, das sei mittlerweile ein eigenständiges Produkt. Damit bestünde theoretisch die Möglichkeit, ohne Enterprise Preisaufschlag da dran zu kommen.
Aber da Du aus der XE Schiene kommst, möchtest Du wahrscheinlich gar kein Geld ausgeben.
Wie auch immer, wenn es kein Luxusproblem für Dich ist, schau halt einfach nach, zu welchen Konditionen man das nun bekommt.

Im Handbuch steht

Database Gateway for ODBC is included in all offerings.
All other Database Gateway products are available for all offerings, but require a separate product license.

Allerdings ist in der Tabelle XE nicht vorhanden, keine Ahnung was das bedeutet.

Im User’s Guide ist allerdings nicht beschrieben, wie man das installiert/aktiviert.

Aber die Frage ist in einem Oracle Forum (z.B. hier) wesentlich besser aufgehoben. Oder via Oracle mailing list da treiben sich auch ein paar Leute rum, die sowohl mit Oracle als auch mit Postgres arbeiten.

Ich habe nach einigem Suchen in der Doku gefunden, dass in der freien Version (XE) das ODBC-Gateway enthalten ist (sonst keine weiteren Gateways).

Ich habe es auf Linux probiert und nach einigen Versuchen und Versionskonflikten (unixODBC, PostgreSQL-ODBC Treiber) es schließlich mit Oracle 23c Free (so heißt die XE Version jetzt) geschafft eine Verbindung zu einer PostgreSQL 16.1 Datenbank per ODBC herzustellen und Daten auszutauschen.

Wahrscheinlich geht es mit der Windows-Version auch, aber es fehlen Einstellungen in den Konfigurationsdateien. Dazu finde ich leider keinerlei Infos im Internet.

Für meinen Proof of Concept ist das aureichend. Der Thread kann geschlossen werden.