La instalación de ODAC.NET para Windows x64, no es trivial. Si usas Windows 2008 x64, Vista x64, 2003 x64, o XP x64, y necesitas desarrollar usando los Oracle Data Access Components, lo siguiente te interesa.

Imagino que a estás alturas habrás visto por internet multitud de alternativas para solucionarlo, pero ninguna te ha convencido, así que pondré aquí un resumen, y la solución sencilla y fácil.

El problema viene, porque el cliente de Oracle, usado entre otros por ODAC, no soporta ser ejecutado desde directorios que contienen paréntesis, como es el caso de Program Files (x86) usado en Windows x64 para instalaciones de software de 32 bits, por ejemplo el cliente de Oracle. Se manifiesta normalmente con el mensaje de error ORA-12154: TNS:could not resolve the connect identifier specified o ORA-6413: Connection not open. Cause 64-bit Microsoft OS's install 32-bit applications into the following location "C:\Program Files (x86)\…".

La primera opción para arreglarlo, pasa por aplicar algunos parches de Oracle en nuestra instalación. Lamentablemente esos parches solo están accesibles para usuarios que pagan el soporte a Oracle en el Metalink.

La segunda consiste en reinstalar todos los programas que usemos en una carpeta que no contenga paréntesis, ellos afecta a todas las herramientas que deban usar el cliente de Oracle. En este caso, no suele ser suficiente la creación de un hardlink de una ubicación a otra, se debe forzosamente reinstalar.

La tercera consiste en utilizar ODAC de Oracle 11g (11.0.6.20), que no tienen ese problema, aunque no siempre es una transición suave cuando nos referimos a entornos ya existentes.

La clave, está en que aunque no se dice en ningún sitio, el paquete de Oracle 10g Release 3 Client (10.2.0.2.3), incluye también una versión de ODAC, que en este caso, no tiene el problema con las rutas que contienen paréntesis, y por tanto soluciona el problema, por lo que reemplaza a los ODAC 10g Release 2 (10.2.0.2.21) y anteriores.

A la hora de agragar la referencia al assembly ODAC en nuestro proyecto, las cosas quedan así:

<!– ODAC 10g Release 2 –>
<add assembly="Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89B483F429C47342"/>

<!–ODAC 10g Release 3 –>
<add assembly="Oracle.DataAccess, Version=1.102.3.0, Culture=neutral, PublicKeyToken=89B483F429C47342"/>

<!– ODAC 11g –>
<add assembly="Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89B483F429C47342"/>