I am developing an application that talks to Oracle 11g 64 bit DB on VS 2010. The development machine is Windows XP (32 bit). I will need to develop and test on the dev machine, but the released app will run on a 64 bit windows environment. I am confused whether the ODAC version (32/64 bit) depends on the 32/64 bit DB server or on whether the client is 32 or 64 bit?
It depends on the client, and more specifically what the application is running as. The server has no impact.
A 32 bit application requires the 32 bit client, and a 64 bit application requires the 64 bit client.
So... on your 32 bit XP machine, you need a 32 bit client. Assuming it's a .net application, you'll need to compile it in AnyCPU (the default) or x86 mode.
On the 64 bit production machine, you need a 32 bit client if you are running a 32 bit application (compiled as x86). You'll need a 64 bit client if you're running a 64 bit application (compiled in AnyCPU or x64 mode).
With that in mind, what you want to do if it's a .net app is just build it in AnyCPU mode. Install 32 bit ODAC on your dev machine and 64 bit on the production one, and make sure the version numbers on the two match. Make sure Copy Local = False on your Oracle.DataAccess.dll reference, and it should all work as you want it to.
Edited by: Tridus on Feb 8, 2013 8:02 AM