La guía o código que verás en este post es la resolución más rápida y válida que hallamos a esta duda o problema.
Solución:
Una solución es instalar Clientes Oracle x86 (32 bits) y x64 en su máquina, luego no importa en qué arquitectura se esté ejecutando su aplicación.
Aquí una instrucción para instalar el cliente Oracle x86 y x64 en una máquina:
Supuestos: Oracle Home se llama OraClient11g_home1
, La versión del cliente es 11gR2
-
Opcionalmente, elimine cualquier cliente de Oracle instalado (consulte ¿Cómo desinstalar / eliminar por completo Oracle 11g (cliente)? Si tiene problemas)
-
Descargue e instale Oracle x86 Client, por ejemplo en
C:Oracle11.2Client_x86
-
Descargue e instale Oracle x64 Client en una carpeta diferente, por ejemplo para
C:Oracle11.2Client_x64
-
Abra la herramienta de línea de comandos, vaya a la carpeta% WINDIR% System32, normalmente
C:WindowsSystem32
y crea un enlace simbólicoora112
a la carpetaC:Oracle11.2Client_x64
(ver la sección de comandos a continuación) -
Cambie a la carpeta% WINDIR% SysWOW64, normalmente
C:WindowsSysWOW64
y crea un enlace simbólicoora112
a la carpetaC:Oracle11.2Client_x86
, (vea abajo) -
Modificar el
PATH
variable de entorno, reemplace todas las entradas comoC:Oracle11.2Client_x86
yC:Oracle11.2Client_x64
porC:WindowsSystem32ora112
, respectivas susbin
subcarpeta. Nota:C:WindowsSysWOW64ora112
no debe estar en el entorno PATH. -
Si es necesario, configure su
ORACLE_HOME
variable de entorno aC:WindowsSystem32ora112
-
Abra su Editor de registro. Establecer valor de registro
HKLMSoftwareORACLEKEY_OraClient11g_home1ORACLE_HOME
paraC:WindowsSystem32ora112
-
Establecer valor de registro
HKLMSoftwareWow6432NodeORACLEKEY_OraClient11g_home1ORACLE_HOME
paraC:WindowsSystem32ora112
(noC:WindowsSysWOW64ora112
) -
¡Estás listo! Ahora puede usar el cliente Oracle x86 y x64 sin problemas juntos, es decir, una aplicación x86 cargará las bibliotecas x86, una aplicación x64 carga las bibliotecas x64 sin ninguna modificación adicional en su sistema.
-
Probablemente sea una buena opción configurar su
TNS_ADMIN
variable de entorno (resp.TNS_ADMIN
entradas en el Registro) a una ubicación común, por ejemploTNS_ADMIN=C:OracleCommonnetwork
.
Comandos para crear enlaces simbólicos:
cd C:WindowsSystem32
mklink /d ora112 C:Oracle11.2Client_x64
cd C:WindowsSysWOW64
mklink /d ora112 C:Oracle11.2Client_x86
Notas:
Ambos enlaces simbólicos deben tener el mismo nombre, p. Ej. ora112
.
A pesar de su carpeta de nombres C:WindowsSystem32
contiene las bibliotecas x64, mientras que C:WindowsSysWOW64
contiene las bibliotecas x86 (32 bits). No se confunda.
En mi situación, Oracle 11.2 Cliente de 32 bitsera instalado en mi Windows de 64 bits 2008 R2 OS.
Mi solución: En la Configuración avanzada de Grupo de aplicaciones asignado a mi ASP.NET aplicación, configuro Habilitar aplicaciones de 32 bits para Cierto.
Consulte a continuación la versión independiente .ashx script de prueba que utilicé para probar la capacidad de conectarme a Oracle. Antes de realizar el cambio del grupo de aplicaciones, su respuesta fue:
[Running as 64-bit] Connection failed.
… y después del cambio del grupo de aplicaciones:
[Running as 32-bit] Connection succeeded.
TestOracle.ashx – Script para probar una conexión de Oracle a través de System.Data.OracleClient:
Usar: Cambie el usuario, la contraseña y las variables del sistema principal según corresponda.
Tenga en cuenta que esta secuencia de comandos se puede utilizar de forma independiente sin alterar el archivo de proyecto de la aplicación web ASP.NET. Simplemente colóquelo en la carpeta de su aplicación.
<%@ WebHandler Language="C#" Class="Handler1" %>
<%@ Assembly Name="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" %>
using System;
using System.Data.OracleClient;
using System.Web;
public class Handler1 : IHttpHandler
private static readonly string m_User = "USER";
private static readonly string m_Password = "PASSWORD";
private static readonly string m_Host = "HOST";
public void ProcessRequest(HttpContext context)
context.Response.ContentType = "text/plain";
string result = TestOracleConnection();
context.Response.Write(result);
public bool IsReusable
get return false;
private string TestOracleConnection()
string result = IntPtr.Size == 8 ?
"[Running as 64-bit]" : "[Running as 32-bit]";
try
string connString = String.Format(
"Data Source=0;Password=1;User ID=2;",
m_Host, m_User, m_Password);
OracleConnection oradb = new OracleConnection();
oradb.ConnectionString = connString;
oradb.Open();
oradb.Close();
result += " Connection succeeded.";
catch
result += " Connection failed.";
return result;
Tuve el mismo problema en una PC con Windows 10. Copié el proyecto de mi computadora anterior a la nueva, ambas de 64 bits, e instalé Oracle Client de 64 bits en la nueva máquina. Recibí el mismo mensaje de error, pero después de probar muchas soluciones sin ningún efecto, lo que realmente funcionó para mí fue esto: En su Visual Studio (el mío es 2017) vaya a Herramientas> Opciones> Proyectos y soluciones> Proyectos web
En esa página, marque la opción que dice: Use la versión de 64 bits de IIS Express para sitios web y proyectos
Si entiendes que te ha sido de utilidad este post, nos gustaría que lo compartas con más seniors de esta forma nos ayudas a dar difusión a nuestra información.