Según Oracle, estas ubicaciones se buscan tnsnames.ora , resp. sqlnet.ora :
- ruta actual (asociada con la aplicación cliente en ejecución)
- Variable de entorno
TNS_ADMINdefinido para la sesión - Variable de entorno
TNS_ADMINdefinido para el sistema - Clave de registro de Windows
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(para 64 bits) oHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(para 32 bits) %ORACLE_HOME%\network\admin
Sin embargo, no estoy seguro de si cada aplicación/controlador/versión sigue esta lista. Oracle proporcionó esta lista en relación con la versión 9i. Creo que VBScript la administrará para consultar estas carpetas.
Si ORACLE_HOME no está configurado por la variable de entorno, debe consultar el Registro HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (para 64 bits) o HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (para 32 bits)
Para ORACLE_HOME_NAME tienes que navegar a tu Oracle bin carpeta (que se encuentra a través de %PATH% Variable de entorno) y abra el archivo oracle.key . Este es un archivo de texto simple que contiene solo el ORACLE_HOME_NAME valor, p. OraClient11g_home1 .
Sin embargo, normalmente solo hay un Oracle Home debajo de HKLM\SOFTWARE\ORACLE , por lo que busca y lee el archivo oracle.key podría ser una exageración.
Actualizar
Cuando ejecuto una prueba en mi máquina (con Oracle Client 11.2) obtengo el siguiente orden:
- Variable de entorno
TNS_ADMIN HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, resp.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Solo siTNS_ADMINLa variable de entorno no está configurada.%ORACLE_HOME%\network\admin- Directorio actual (que puede ser diferente al directorio donde se encuentra su aplicación)
- Carpeta donde se encuentra su aplicación
Para un análisis profundo, debe buscar tnsnames.ora , sqlnet.ora y ldap.ora . El nombre de la base de datos de Oracle se puede resolver a través de cada uno de ellos, es decir, se puede establecer una conexión incluso cuando tnsnames.ora y sqlnet.ora no existen.