2009-07-21 64 views
8

Puede estar haciendo la pregunta incorrecta aquí, estoy dispuesto a cambiarla si es así.¿Se requiere ODP.NET para Oracle 11g Client?

Tengo un proyecto que utiliza el proveedor de Oracle de Microsoft.NET (nuestro plan es cambiar a ODP pero aún no lo hemos hecho).

Estoy intentando que este proyecto se base en un servidor de compilación de Windows 2008 (x64). Se construye bien, pero nuestras pruebas unitarias fallan cuando llegan a la base de datos Oracle.

Inicialmente había instalado el cliente de 32 bits oracle 9i, que es el que usamos actualmente en nuestros cuadros de desarrollo de winxp y el servidor de compilación 2003 anterior. Pero ahora recibe un mensaje como: intento de cargar las bibliotecas cliente de Oracle lanzó BadImageFormatException. Este problema ocurrirá cuando se ejecuta en modo de 64 bits con los componentes de cliente de Oracle de 32 bits instalados.

Intentamos compilar en la plataforma x86, pero eso no cambió el mensaje de error.

Ahora tengo instalado el cliente 11g de 64 bits pero recibo un mensaje que dice que System.Data.OracleClient requiere el software de cliente Oracle versión 8.1.7 o superior.

Entonces, ¿qué instalación de Oracle debería estar utilizando?

Editar:

pude conseguir que esto funcione. Resultó que fue la prueba la que causó el problema, forzando a NUnit a ejecutarse en modo de 32 bits: http://geekswithblogs.net/Lance/archive/2006/12/28/102191.aspx Pude hacer que las pruebas funcionaran con el viejo controlador de 32 bits. Esta sería una respuesta repugnante a la pregunta, así que no la estoy usando, pero gustosamente otorgaré la respuesta correcta a cualquiera que brinde buena información sobre la transición a los controladores de Oracle de 64 bits.

Respuesta

9

Cuando se trata de Oracle, me gusta usar Oracle Instant Client:

  • No tiene que instalar nada en las máquinas de destino (incluidas las cajas dev).
  • Puede asegurarse de que su aplicación se ejecutará con el cliente específico que eligió.
  • Incluso podría tener varias aplicaciones para trabajar con diferentes versiones de cliente en la misma computadora.
  • Como una desventaja, agrega un peso significativo a su aplicación (~ 19Mb como mínimo).

Compruebe What is the minimum client footprint required to connect C# to an Oracle database? para obtener más información. Para saber cómo configurar un proyecto de Visual Studio que funcionará tanto en x86 como en máquinas x64, consulte la publicación de mi blog Oracle Instant Client in Visual Studio.

0

He encontrado muchas veces que el error "requiere software de cliente Oracle versión 8.1.7 o superior" es un error notoriamente engañoso. Desde recuerdos lejanos, parece recordar que esto generalmente indica un problema de permisos de archivos IO. Creo que es posible que el proceso de trabajo de ASP.NET (o la identidad bajo la que se ejecuta una aplicación) requiera algún tipo de permiso de lectura o escritura en una carpeta en la jerarquía de la carpeta del cliente oracle ...

1

Creo que el mensaje "System.Data.OracleClient requiere software de cliente Oracle versión 8.1.7 o superior" es similar a "El cliente de Oracle no está instalado, instalado pero no se encuentra o no se instala, pero es necesario 8.1.7 o superior".

Comprobar el regedit si los valores están justo debajo de la tecla:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraOdac11g_home1 

Dónde OraOdac11g_home1 depende del nombre de inicio de Oracle para su instalación.

Además, intente conectarse a través de Visual Studio para ver si es posible.

0

Esto puede ser una causa de múltiples hogares oráculo en el medio ambiente. Elimine la versión anterior de Oracle Home en su sistema de compilación. intente generar la construcción de nuevo con la casa individual. Hay algunos problemas con la versión 9i ODP.NET y la conectividad 10G/11G

1

He tenido un problema que podría estar relacionado con lo que está viendo.

inicialmente tenían el sólo el cliente de Oracle 10g instalado en mi máquina y el número de versión del componente .Net Oracle.DataAccess era 10.2.0.100 - esto era para .Net tiempo de ejecución v1.0.3705

he instalado ODP.Net y la versión del componente Oracle.DataAccess ahora es v2.102.2.20 y se ejecuta en .Net runtime v2.0.50727 - No puedo encontrar la referencia de por qué Oracle hizo esto - fue algo relacionado con poner los números de versión en línea con el tiempo de ejecución versión

Me tomó un día resolver esto. Todavía no usamos el cliente 11g y no he usado el cliente 8i por años, así que no sé cuáles serían los números de versión para esos clientes, pero lo verificaría si fuera tú qué.

En resumen, Oracle de back-rastreó los números de versión de los componentes que podrían estar haciendo su componente 11g aparecer fuera de la fecha en contraposición a Oracle componentes 8i

3

Agrego una nueva respuesta ya que a partir de este otoño (2012) está disponible el código administrado ODP Beta. Ver this link para más información. Es para nosotros muy estable y lo estamos utilizando en la producción, principalmente debido a las siguientes razones:

  • Sin instalación (excepto en marco de la entidad donde se necesita un simple registro)
  • es más pequeño que la versión no administrado , la huella es de aproximadamente 6 MB.
  • no es "poco sensible", es decir, cualquier CPU finalmente trabajar con ODP :)
  • tipos cartografía C# más intuitivo < - tipos> Oracle (y resuelto algunos problemas con EF y la generación de modelo de base de datos)
  • Admite EZCONNECT (no todas las versiones del ODP no administrado), es decir, no tiene más problemas con tnsnames.ora.

Pero para la transición a 64 bits, descargue el controlador PAO administrado y cambiar la referencia a Oracle.DataAccessOracle.ManagedDataAccess y recompilar :)

Cuestiones relacionadas