Oracle 32- und 64-Bit gleichzeitig

von ibk Software AG

Auf einem Produktions-PC macht es meist wenig Sinn BPS sowohl als 32- als auch als 64-Bit Anwendung auf dem gleichen PC zu installieren. Es gibt aber sehr wohl Fälle wieso man das doch tun möchte, z.B. auf einem Administrations- oder Entwicklungs-PC, oder während der Migration auf 64-Bit. Das Problem liegt allerdings auf der Datenbank Seite. Oracle nennt z.B. die OCI-DLL's beider Ausgaben gleich, sodass sie nicht im gleichen Suchpfad sein können.

Man könnte jetzt also einfach die Suchpfade entsprechend varieren bevor die Anwendung gestartet wird. Es gibt allerdings es eine elegantere Lösung mit Windows Bordmitteln, und sie funktioniert nicht nur bei BPS sondern bei allen Anwendungen. Der «Trick» ist, das System so einzurichten dass alle 32-Bit Anwendungen automatisch auf 32-Bit Oracle DLL's zugreifen, und 64-Bit Anwendungen automatisch auf entsprechende 64-Bit Oracle DLL's.

Windows hat in den 64-Bit Editionen zu diesem Zweck selber verschiedene Verzeichnisse: Das Verzeichnis System32 wird von 64-Bit Anwendungen eingebunden, während das Verzeichnis SysWOW64 automatisch als Ersatz bei 32-Bit Anwendungen eingebunden wird. Das klingt vielleicht gerade verkehrt, ist aber tatsächlich so. Die scheinbar vertausche Benennung ist besser verständlich wenn man weiss, dass die Abkürzung WOW von Microsoft als «Windows (32-Bit) On Windows (64-Bit)» definiert ist. WOW ist also der Layer der es 32-Bit Anwendungen erlaubt auf 64-Bit Windows zu laufen.

Ein typischer Fall wäre ein Windows Server auf dem die Oracle Server Software (natürlich in 64-Bit) installiert ist, und BPS darauf als 32-Bit Anwendung installiert werden soll. Wir installieren also zusätzlich den Oracle Instant Client in einer 32-Bit Version. Die relevanten Dateien finden sich im angenommen Fall wie folgt:

  • 64-Bit Version von oci.dll in C:\oracle\product\11.2.0\dbhome_1\bin
  • 32-Bit Version von oci.dll in C:\oracle32\instantclient
  • tnsnames.ora in C:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN

Eine Administrator Konsole öffnen:

[Windows-Taste] cmd [Ctrl]+[Shift]+[Enter]

Dann die folgenden Befehle eingegeben um symbolische Verknüpfungen zu erstellen:

mklink /d %SystemRoot%\SysWOW64\orabin C:\oracle32\instantclient\

mklink /d %SystemRoot%\System32\orabin C:\oracle\product\11.2.0\dbhome_1\bin\

In der PATH Umgebungsvariable wird C:\oracle\product\11.2.0\dbhome_1\bin ersetzt durch %SystemRoot%\System32\orabin. Zusätzlich erstellen wir (falls noch nicht vorhanden) die Umgebungsvariable TNS_ADMIN mit dem Wert C:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN.

Jetzt können sowohl 32- als auch 64-Bit Anwendungen auf dem Server installiert werden, und funktionieren automatisch mit der richtigen OCI Library zusammen.

Zurück