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"/>
M'aburro….
Me cansas Polimalo.
Holaaaa…
Yo estoy padeciendo este problema, acabo de parchear a la 10.2.0.3 e incluso acabo de instalar un cliente 11g sobre la misma máquina server, pero me sigue cascando el mismo error de los paréntesis, ¿cómo decirle "al invento" que use ese cliente 11? Ya tengo el PATH establecido, pero no encuentro alguna manera de hacerle un DEFAULT_HOME o similar, ¿me darías alguna pista más? ¿Debo instalar ODAC 11g desde alguna otra parte que no sea el CD del cliente?
Gracias,
Chol.
Chol, si no me equivoco el Oracle Home por defecto se guarda en el registro, y no en una variable de entorno. Échale un repaso al comando buscar en el RegEdit a ver si aparece.
Lo que no me explico es como te seguía dando el problema la 10.2.0.3…
Hola,
Yo estoy pasando por algo parecide y quería sqber si me podrías ayudar por favor.
Igualmente intento trabajar con el ODAC pero me reporta otra excepción
«could not find file or assembly ‘Oracle.DataAcces version 4.112.2.0,
Culture = neutral. Pulbicy key = 89b483f429c47342’or one of its dependencies El sistema no puede encontrar el archivo especificado»
Ya he instalado varias versiones una y otra vez y no consigo algún efecto.
Sabes qué puedeo hacer ?
Gracias
Hola Demetrio,
No tengo demasiados detalles sobre tu configuración, y en todo caso, será diferente de la mía, así que no puede serte demasiado concreto. No obstante he encontrado bastantes referencias a ese respecto. En https://community.oracle.com/thread/3537075 por ejemplo, parece ser que la solución es instalar la versión de 32 bits de ODAC.
Un saludo.