Bereits 2005 habe ich bei tutorials.de einen Beitrag zum Thema Datenbanklinks zu Nicht-Oracle Datenbanken über Heterogene Services geschrieben. Bei dem Versuch das Tutorial von damals wieder nachzustellen scheiterten wir leider kläglich. Grund war der fehlende Agent hsodbc.exe der sich nirgends im Softwareverzeichnis, also im ORACLE_HOME finden
ließ.
Eine längere Recherche brachte uns die Erkenntnis, dass Heterogene Services in der 64Bit Version von Oracle wohl nicht unterstützt werden. Ohne einen tieferen Sinn hinter der Problematik zu suchen musste eine Lösung gefunden werden.
Der erste Versuch und Vorschlag aus dem Internet lautete: Die hsodbc.exe aus dem ORACLE_HOME eines 32Bit Servers kopieren und analog unter 64Bit einrichten. Die Fehlermeldungen beim Aufruf des Database Links verhießen nichts Gutes.
Der zweite Ansatz war der Aufbau einer 32Bit HS Bridge. Klingt sehr kompliziert, ist aber so einfach wie auch genial:
Anstatt der sinnlosen Bemühungen die heterogenen Services unter 64Bit zum Laufen zu bringen, wurde auf einem dritten System, bzw. auf dem Zielsystem mit der Fremd-Datenbank die Oracle EE 32Bit Server Software installiert. Wichtig ist, dass keine Datenbank notwendig ist, sondern ausschließlich ein Listener Prozess welcher die hsodbc.exe startet und als Service per NET8 zur Verfügung stellt. Hierfür ist lediglich die Pflege der LISTENER.ORA notwendig, sowie die im Artikel bei Tutorials de beschriebene ODBC Konfiguration. nach der Konfiguration kann ein neuer Listener Prozess mit dem Befehl “lsnrctl start” angelegt und gleichzeitig gestartet werden.
Die bedeutet, die HS Konfiguration wird auf dem 32Bit System durchgeführt. Auf dem 64Bit System genügt ein Eintrag in die TNSNAMES.ORA welcher auf den HS Service des 32Bit Systems verweist, also auf den 32Bit Listener. Dabei wichtig ist der Zusatz “(HS=OK)”
FREMDDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (POTOCOL=TCP)(HOST=)(PORT=1521))
)
(CONNECT_DATA =
(SERVICE_NAME=fremddb)
)
(HS=OK)
)
Schlagworte: 32Bit, 64Bit, Heterogene Services, Listener, NET8, ODBC, Oracle, Tnsnames
