Esta pregunta se puede tratar de diversas formas, por lo tanto te dejamos la solución más completa para nosotros.
Solución:
Basándose en sus rutas, tiene dos clientes instalados como sospecha (Toad y dbforge son herramientas, no clientes, por lo que su terminología está un poco fuera de lugar). Uno de 32 bits, el otro de 64 bits. Parece que Toad es de 32 bits según su ruta de instalación, pero ejecútelo y vaya a Ayuda | Paquete de soporte. Verá que el encabezado superior será “INFORMACIÓN DE LA APLICACIÓN (32 bits)” o “INFORMACIÓN DE LA APLICACIÓN (64 bits)” solo para confirmar. Toad 11.6 fue el primero en introducir una versión de 64 bits.
Toad solo verá el cliente de Oracle que es para la misma plataforma que él. Entonces, su cliente de 64 bits es irrelevante por el bien de Toad. El C: Windows TNS parece ser una carpeta utilizada para la carpeta TNS_ADMIN dada su ubicación extraña y el hecho de que Toad la ve. En el símbolo del sistema, ejecute SET TNS_ADMIN y vea si informa “TNS_ADMIN = C: Windows TNS”. Si lo hace, entonces todas las herramientas deberían usar ese tnsnames.ora. Esa es una anulación global si lo desea, que apunta a la carpeta que contiene sus archivos de configuración de red. Si no tiene configurado TNS_ADMIN como variable de entorno, búsquelo en su registro raíz de Oracle: HKEY_LOCAL_MACHINE Software Oracle.
Si usa un conjunto común de conexiones para todas sus herramientas, eliminaría todos sus archivos tnsnames.ora. También reubicaría esa carpeta C: Windows TNS en un lugar más apropiado como C: Oracle Admin y crearía su tnsnames.ora, sqlnet.ora y ldap.ora (si corresponde) allí. Cree una variable de entorno TNS_ADMIN que apunte a esa ubicación.
Según Oracle, estas ubicaciones se buscan tnsnames.ora
, resp. sqlnet.ora
y ldap.ora
:
- Archivos de Oracle Net en el directorio de trabajo actual (PWD / CWD)
TNS_ADMIN
definido por sesión o por script definido por el usuarioTNS_ADMIN
definido como una variable de entorno globalTNS_ADMIN
definido en el registro- Archivos de Oracle Net en
%ORACLE_HOME/network|net80admin
(Ubicación predeterminada de Oracle)
Sin embargo, no estoy seguro de si cada aplicación / controlador sigue esta lista. Obtuve esta lista del documento Oracle 111942.1 que se refiere a Oracle 9i, por lo que podría estar desactualizada.
En la Guía del administrador de Database Net Services, el orden es
TNS_ADMIN
definido por la variable de entornoTNS_ADMIN
definido en el registro (siTNS_ADMIN
variable de entorno no está presente)%ORACLE_HOME%/network/admin
directorio (siTNS_ADMIN
variable de entorno no está presente)
Recomendaría definir una variable de entorno para TNS_ADMIN
y use solo un archivo tnsnames.ora. Para estar seguro, compruebe también los valores de su registro.
Si sus archivos son no situado en %ORACLE_HOME%networkadmin
, Recomiendo crear un enlace simbólico para ello, solo para estar en el muy lado seguro, por ejemplo mklink /d %ORACLE_HOME%networkadmin c:Oraclecommonsettingsadmin
Otra nota, no tienes que “jugar” con tu archivo tnsnames.ora. Con Process Monitor de Microsoft Sysinternals puede monitorear el acceso a cada archivo, es decir, el filtro sería Path contains tnsnames
Actualizar
Cuando ejecuto una prueba en mi máquina, obtengo el siguiente orden:
- Variable ambiental
TNS_ADMIN
- Clave de registro
HKEY_CURRENT_USERSOFTWAREORACLEKEY_Oracle_Home_NameTNS_ADMIN
-
Clave de registro
HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_Oracle_Home_NameTNS_ADMIN
, resp.HKEY_LOCAL_MACHINESOFTWAREWow6432NodeORACLEKEY_Oracle_Home_NameTNS_ADMIN
-> Solo si
TNS_ADMIN
La variable de entorno no está configurada. %ORACLE_HOME%networkadmin
- Directorio actual (que puede ser diferente al directorio donde se encuentra su aplicación)
- Carpeta donde se encuentra su aplicación
Actualización 2
Obviamente, no hay búsqueda de arreglos, varía para diferentes proveedores / controladores. Quizás también dependa de la versión de Oracle.
Por ejemplo, el Servidor HTTP de Oracle lee TNS_ADMIN
ajuste de opmn.xml
archivo de configuración.
Otro ejemplo, para el controlador administrado ODP.NET (Oracle.ManagedDataAccess) beta versión, encontré este pedido en Oracle Managed y TNS Names:
- alias de fuente de datos en la sección ‘dataSources’ en
sección en el archivo de configuración .NET (es decirmachine.config
,web.config
,user.config
). - alias de la fuente de datos en el
tnsnames.ora
archivo en la ubicación especificada porTNS_ADMIN
en el archivo de configuración .NET. - alias de la fuente de datos en el
tnsnames.ora
archivo presente en el mismo directorio que el.exe
. - alias de la fuente de datos en el
tnsnames.ora
archivo presente en%TNS_ADMIN%
(donde
%TNS_ADMIN%
es una configuración de variable de entorno). - alias de la fuente de datos en el
tnsnames.ora
archivo presente en%ORACLE_HOME%networkadmin
(donde
%ORACLE_HOME%
es una configuración de variable de entorno).
En la documentación oficial (12c Release 4 (12.1.0.2.4)) dice:
- alias de la fuente de datos en el
dataSources
sección debajo
sección en el archivo de configuración .NET (es decirmachine.config
,web.config
,user.config
). - alias de la fuente de datos en el
tnsnames.ora
archivo en la ubicación especificada porTNS_ADMIN
en el archivo de configuración .NET. Las ubicaciones pueden constar de rutas de directorio absolutas o relativas. - alias de la fuente de datos en el
tnsnames.ora
archivo presente en el mismo directorio que el.exe
.
Sin embargo, según algunas pruebas que hice con el controlador administrado ODP.NET (4.121.2.0), se necesita %ORACLE_HOME%networkadmin
y TNS_ADMIN
Variable de entorno en cuenta. Bloqueos como si la documentación no fuera 100% correcta.