sql >> Base de Datos >  >> RDS >> Oracle

Determinar la ubicación del archivo tnsnames.ora relevante

Según Oracle, estas ubicaciones se buscan tnsnames.ora , resp. sqlnet.ora y ldap.ora :

  1. Archivos de Oracle Net en el directorio de trabajo actual (PWD/CWD)
  2. TNS_ADMIN definido por sesión o por script definido por el usuario
  3. TNS_ADMIN definida como una variable de entorno global
  4. TNS_ADMIN definido en el registro
  5. Archivos de Oracle Net en %ORACLE_HOME/network|net80\admin (Ubicación predeterminada de Oracle)

Sin embargo, no estoy seguro de si cada aplicación/controlador sigue esta lista. Obtuve esta lista del Documento de Oracle 111942.1 que hace referencia a Oracle 9i, por lo que podría estar desactualizada.

En la Guía del administrador de servicios de red de base de datos, el orden es

  1. TNS_ADMIN definido por la variable de entorno
  2. TNS_ADMIN definido en el registro (si TNS_ADMIN la variable de entorno no está presente)
  3. %ORACLE_HOME%/network/admin directorio (si TNS_ADMIN la 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, verifique también sus valores de registro.

Si sus archivos no ubicado en %ORACLE_HOME%\network\admin , recomiendo crear un enlace simbólico para él, solo para estar en el muy lado seguro, p. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin

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:

  1. Variable de entorno TNS_ADMIN
  2. Clave de registro HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
  3. Clave de registro HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN , resp. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN

    -> Solo si TNS_ADMIN La variable de entorno no está configurada.

  4. %ORACLE_HOME%\network\admin
  5. Directorio actual (que puede ser diferente al directorio donde se encuentra su aplicación)
  6. Carpeta donde se encuentra su aplicación

Actualización 2

Obviamente, no hay una búsqueda de soluciones, varía según los diferentes proveedores/controladores. Tal vez también dependa de la versión de Oracle.

Por ejemplo, el Servidor HTTP de Oracle lee TNS_ADMIN configuración 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:

  1. alias de origen de datos en la sección 'fuentes de datos' en <oracle.manageddataaccess.client> sección en el archivo de configuración de .NET (es decir, machine.config , web.config , user.config ).
  2. alias de origen de datos en tnsnames.ora archivo en la ubicación especificada por TNS_ADMIN en el archivo de configuración de .NET.
  3. alias de origen de datos en tnsnames.ora archivo presente en el mismo directorio que el .exe .
  4. alias de origen de datos en tnsnames.ora archivo presente en %TNS_ADMIN%
    (donde %TNS_ADMIN% es una configuración de variable de entorno).
  5. alias de origen de datos en tnsnames.ora archivo presente en %ORACLE_HOME%\network\admin
    (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:

  1. alias de origen de datos en dataSources sección debajo de <oracle.manageddataaccess.client> sección en el archivo de configuración de .NET (es decir, machine.config , web.config , user.config ).
  2. alias de origen de datos en tnsnames.ora archivo en la ubicación especificada por TNS_ADMIN en el archivo de configuración de .NET. Las ubicaciones pueden consistir en rutas de directorio absolutas o relativas.
  3. alias de origen de datos en tnsnames.ora archivo presente en el mismo directorio que el .exe .

Sin embargo, según algunas pruebas que realicé con el controlador administrado ODP.NET (4.121.2.0), toma %ORACLE_HOME%\network\admin y TNS_ADMIN Variable de entorno en cuenta. Bloqueos como la documentación no es 100% correcto.