Normalmente no hay problema para conectarse a una base de datos Oracle más antigua con un controlador de cliente más nuevo, p. Ej. para conectarse a una base de datos de 10g u 11g con un cliente de 12g. El resto de la respuesta corresponde a problemas técnicos que pueden ocurrir en su programa .Net en el caso de que ya esté (quizás) instalado Oracle Client en la computadora que ejecuta su programa.
Actualización 2014:
Mientras tanto Oracle ha publicado un controlador administrado de .NET para la base de datos Oracle. Por lo tanto, en lugar de instalar un cliente Oracle local o entregar un cliente instantáneo junto con su aplicación, la forma preferida debería ser entregar solo el controlador administrado sin dependencias a las configuraciones locales. Entonces no tiene problemas con los clientes instalados, el GAC, la versión de la base de datos de Oracle, etc. Puede descargar el controlador administrado desde the Oracle website.
respuesta anterior, todavía es necesario si no se puede utilizar el controlador administrado:
Los problemas comienzan si usted no sabe si hay un cliente de Oracle instalado en sus estaciones de trabajo cliente . Si está hablando de GAC , supongo que no sabe si está instalado Oracle Client y, de ser así, qué versión es.
Si no desea confiar en un Cliente Oracle instalado, puede entregar un Oracle Instant Client con su aplicación .Net. Por ejemplo, puede descargar ODAC 11.2 Release 4 (11.2.0.3.0) with Oracle Developer Tools for Visual Studio, que le proporciona una instalación de Oracle Client para su estación de trabajo de desarrollador (con soporte de Visual Studio para desarrollo de DataSet y EntityFramework), así como todos los archivos necesarios para un cliente instantáneo.
Para un cliente de inmediato se necesitan los siguientes archivos (buscarlos en las subcarpetas de la instalación de ODAC):
- oci.dll
- OCIW32.DLL
- Oracle.DataAccess.dll
- orannzsbb11.dll
- oraociicus11.dll (si está utilizando el lenguaje Inglés, de lo contrario el correspondiente .dll)
- OraOpd11w.dll
- tnsnames.ora (si lo necesita)
Además se necesitan los siguientes archivos .dll desde el directorio de Windows:
Simplemente copie todos esos archivos en el directorio de trabajo de su aplicación (donde está el archivo .exe).
Ahora, ¿cómo le corresponde eso al GAC?
Si hay un cliente de Oracle instalado en el equipo del cliente, también hay un Oracle.DataAccess.dll en el GAC. También es posible, que una política se instaló que establece algo así como: Independiente del Oracle.DataAccess.dll su programa se hace referencia, se siempre utilizar la versión Oracle.DataAccess.dll de su GAC. Si instala el ODAC he vinculado anteriormente, usted encontrará que los archiveros bajo
C: \ Windows \ Microsoft.NET \ assembly \ GAC_32 \ Policy.4.112.Oracle.DataAccess \ v4.0_4.112.3.0__89b483f429c47342
El resultado es que su aplicación .Net siempre arroja una excepción si está intentando cargar Oracle.DataAccess.dll (con un mensaje de error como "El proveedor no es compatible ..."), si la máquina del cliente tiene otra versión de Oracle Client 11 instalada que la que está consultando en su aplicación.
Para resolver esto, puede configurar su app.conf para que la política editorial se tendrá en cuenta y siempre se carga la versión:
<configuration>
...
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342" />
<publisherPolicy apply="no" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Somos una agencia de Gobierno, por lo tanto, podemos controlar lo que está instalado en las máquinas . Esta será la misma versión de cliente, en todas partes. Pero tomo nota de su respuesta, por lo que si vemos un error extraño, sabré por dónde empezar a buscar. Gracias ! –
@ ultraman69 En este caso duerme tranquilo por la noche :) Dado que siempre usa el mismo cliente en todas las máquinas, ningún GAC o problema de política se interpondrá en su camino. Siempre que utilice las interfaces estándar de Oracle.DataAccess.dll, puede conectarse con cualquier versión de base de datos> 9.2. Por supuesto, 11g funciones específicas/SQL no funcionarán en versiones inferiores. – Desty
@Detsy tengo y servicio web y no puedo configurarlo en 32 bits. ¿Puedo usar la versión del cliente instantáneo de 64 bits de la ODC con los mismos pasos? – Laggel