Friday, October 2, 2009

x64 Architecture and Oracle.DataAccess - a rant

Though slightly off-topic, I want to take a moment to rant about something I have been trying to work out for a day now.

64/32 bit systems are a pain! Try being on a development team where some of the workstations are 32bit and others are 64. Its crazy. Beyond that, our server, W2008 is x64 as well.

Round 1. - MS. vs. Oracle - 32-bit allowances
Oracle has yet to publish a client-based, stable 64-bit driver for their ODAC/ODP.NET architecture. In order to get software designed to run under the current architecture, you have to jump through hoops, or enable processing 32-bit software on 64-arch. So, even if you have a driver that is only stable and useful in its 32-bit form, you can deprecate sections of you application to run in WOW64 mode, which allows for Works On Windows 64 mode to run the 32-bit process. DING - Round 1 to Microsoft.

Round 2. - Debugging Capabilities.
In order to remote debug, however, one must not run in the WOW64 mode because neither the 32 or 64 bit debuggers will attach properly and catch exceptions/breakpoints in the managed code. DING - Round 2 to Nobody.. Double-KO (Not really fair because Oracle had nothing to do with this, but hey, its always fun to KO another big guy)

Round 3. - AMD64/IA64/I64
Um. Ding.. No idea.

Round 4. - DLL / GAC / REGISTRY....
So, I tried to find a 64 bit oracle.dataaccess driver to use on Server 2008, and it is rather difficult. Their newest 11g pieces don't cut it, as they fail at the very beginning of installation. I also tried downloading various packages, but instead of including the files, the installers segment everything into JAVA jar files to be built on installation.. catch-22. Finally I found a post on the Oracle Forums where a guy had installed the Oracle Server and realized that it had installed the ODP.NET driver in good AMD64 fashion. Thus, the solution was to install the Oracle Database Server, with everything possible shut off in the installation, to get the DLL, to use in the VB project. Once that DLL was in the project and referenced correctly, all was set and well.
DING round 4 goes to Microsoft by default (the judges rule that even though Oracle produced a product that functions, the fact that it is a quest of napoleonic proportions to obtain, means that it defaults to MS.)