visual studio odp net for dataaccess data oracle odp.net

studio - oracle dataaccess dll 2.112 2.0 download



¿Por qué la implementación de ODP.NET 11 xcopy no funciona en una máquina con Oracle DB 10 instalado? (4)

Si está utilizando el cliente oracle 10.2.0.1 o 10.2.0.2, Oracle Note 215255.1 indica que si aplica el patchset 10.2.0.3 soluciona el problema. Obtenga el parche de base de datos 10.2.0.3 (852MB) y aplique el parche al cliente. Sí, es el conjunto de programas completo del servidor de bases de datos, pero también se aplica al cliente.

Tengo una aplicación que usa una versión local de ODAC 11 debajo del directorio en el que se encuentra el archivo .exe. La idea es que queremos que nuestra aplicación use el ODAC 11 local independientemente de qué más haya instalado el usuario en su máquina.

Oracle.DataAccess.dll está en el mismo directorio que el .exe.

Funciona bien cuando la máquina cliente no tiene un cliente de Oracle instalado, pero aparece un error al iniciarlo en una máquina con Oracle Database 10.2.0.algo instalado:

The type initializer for ''Oracle.DataAccess.Client.OracleConnection'' threw an exception. [Stack Trace] The provider is not compatible with the version of Oracle client OracleException at Oracle.DataAccess.Client.OracleInit.Initialize() at Oracle.DataAccess.Client.OracleConnection..cctor()

Supongo que esto tiene algo que ver con la política de enlace de tiempo de ejecución, pero una búsqueda de "política de enlace de tiempo de ejecución de Oracle / ODAC / ODP.NET" en Google no ha encontrado nada útil.

¿Alguien sabe cómo resolver el problema?

Si no es este el problema específico, ¿alguien me puede indicar una visión general de cómo hacer lo que quiero hacer: asegurarse de que mi aplicación use el ODAC 11 sin importar nada?


Así que, según tengo entendido, el problema era que mientras Oracle.DataAccess.dll estaba en el mismo directorio que la aplicación, no podía encontrar sus homies de nivel inferior (oci, et al), de ahí el error de compatibilidad.

Resulta que si desea que una aplicación funcione con la implementación de ODAC 11 xcopy, independientemente de qué otra cosa haya instalado el usuario en su máquina, debe hacer dos cosas:

  1. Establezca la variable de entorno PATH para el proceso. (Yo ya estaba haciendo esto.)
  2. Establezca la variable de entorno ORACLE_HOME para el proceso. (No estaba haciendo esto.)

    Environment.SetEnvironmentVariable("PATH", Environment.CurrentDirectory + "//oracle//11.1//odac;" + Environment.CurrentDirectory + "//oracle//11.1//odac//bin;", EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable("ORACLE_HOME", Environment.CurrentDirectory + "//oracle//11.1//odac", EnvironmentVariableTarget.Process);

EDITAR: También es importante tener en cuenta que Oracle lanzará este error no solo por problemas medioambientales, sino también si uno de los archivos falta en la máquina de destino. Obtuve el mismo error en otras máquinas a pesar de la configuración de Entorno porque tenía Subversion configurado para ignorar los directorios llamados "bin", por lo que la DLL de OraOps no se estaba copiando al cliente.


Desea forzar a los controladores ODP.NET a utilizar la copia de oci.dll que está en su carpeta local, en lugar de la que ya está instalada.

Puedes forzar esto por cualquiera

  • estableciendo la variable PATH para que el sistema encuentre primero su copia de oci.dll (como en la respuesta de Josh Kodroff)

o

  • puede usar la sección de configuración de ODP.NET en app.config (o web.config) para establecer explícitamente el valor de "DllPath".

Para obtener detalles, consulte http://ora-00001.blogspot.com/2010/01/odpnet-minimal-non-intrusive-install.html y http://database.in2p3.fr/doc/oracle/Oracle_Database_11_Release_1_(11.1) _Documentation / win.111 / e10927 / featConfig.htm


Un artículo titulado "Implementar ODP.NET con Oracle Instant Client" que se encuentra en http://alderprogs.blogspot.com/2009/04/deploying-odpnet-with-oracle-instant.html dio lo que era para mí sobre la mejor explicación de cómo entregar una implementación simplificada de tipo xcopy con su aplicación. Solo se requieren 5 DLL de Oracle para soporte.

Dicho esto, las respuestas de ObiWanKenobi y Josh Kodroff proporcionan información adicional importante que coincide con mi experiencia.

Agregue a eso: http://www.brothersincode.com/post/Oracle-ODPnet-xcopy-deployment-for-aspnet.aspx