oracle sqlplus toad

oracle - Determinación de la ubicación del archivo tnsnames.ora relevante



sqlplus toad (2)

Instalé los controladores Oracle 11g de 32 y 64 bits. Busqué en mi PC archivos con el nombre "tnsnames.ora" y encontré 3 en las siguientes ubicaciones:

1. C:/Oracle/product/11203_32bit/CLIENT_1/NETWORK/ADMIN 2. C:/Oracle/product/11203_64bit/CLIENT_1/NETWORK/ADMIN 3. C:/Windows/TNS

La existencia de la tercera ubicación del archivo tnsnames.ora me sorprende.

Tengo los siguientes clientes de Oracle instalados en mi PC:

"C:/Program Files (x86)/Quest Software/Toad for Oracle 11.6/Toad.exe" "C:/Program Files/Devart/dbForge Studio Express for Oracle/dbforgeoracle.exe"

Según la ubicación de cada programa (Archivos de programa (x86) frente a c: / Archivos de programa), esto me sugiere que Toad, un programa de 32 bits, debería usar el controlador de 32 bits y dbForge debería usar el controlador de 64 bits.

dbForge parece usar el archivo tnsnames.ora en la ubicación # 2 o # 3. Sé esto renombrando sistemáticamente todos menos uno de los archivos tns y luego verificando si los nombres de conexión leídos del archivo están disponibles al intentar crear una nueva conexión desde la aplicación.

Sin embargo, ¡TOAD parece reconocer solo el archivo tnsnames.ora en la ubicación # 3 y no reconoció el archivo tnsnames.ora en la ubicación 2! (Siendo que era un programa de 32 bits, no esperaba que reconociera el archivo tns en la ubicación 2 y ese fue el caso). Para resumir la prueba TOAD en aras de una claridad esperanzadora, TOAD solo reconoció el archivo tns en la ubicación 3.

Otros colegas no tienen un archivo tns en la ubicación 3 en sus máquinas. No estoy seguro de por qué lo hago. Cuando ejecuto Toad, muestra los siguientes 2 Inicio, con el Inicio de 32 bits como el activo.

OraClient11g_home1 (11.2.0.3) ORACLE_HOME:C:/app/C39293/product/11.2.0/client_1 ORACLE_HOME_NAME:OraClient11g_home1 ORACLE_HOME_KEY:HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraClient11g_home1 ORACLE_SID: NLS_LANG:AMERICAN_AMERICA.WE8MSWIN1252 SQLPATH: LOCAL: Client DLL:C:/app/C39293/product/11.2.0/client_1/oci.dll TNSNames.ora: SQLNet.ora: LDAP.ora: Login.sql: GLogin.sql: In system PATH:No Home is valid:No OraClient11g_home1_32bit (11.2.0.3) ORACLE_HOME:c:/oracle/product/11203_32bit/CLIENT_1 ORACLE_HOME_NAME:OraClient11g_home1_32bit ORACLE_HOME_KEY:HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraClient11g_home1_32bit ORACLE_SID: NLS_LANG:AMERICAN_AMERICA.WE8MSWIN1252 SQLPATH:c:/oracle/product/11203_32bit/CLIENT_1/dbs LOCAL: Client DLL:c:/oracle/product/11203_32bit/CLIENT_1/bin/oci.dll TNSNames.ora: SQLNet.ora: LDAP.ora: Login.sql: GLogin.sql:c:/oracle/product/11203_32bit/CLIENT_1/sqlplus/admin/glogin.sql In system PATH:Yes

P1: ¿OraClient11g_home1 es mi hogar de 64 bits o tengo instalados dos clientes Oracle?

P2: ¿Por qué el TOAD de 32 bits no usa tns en la ubicación n. ° 1 en lugar de usar solo el que está en la ubicación n. ° 3?

P3: Si dejo el archivo tns en la ubicación 3, tanto dbForge como TOAD funcionan, pero me gustaría saber por qué para poder entender con precisión cómo mover la información tns de una máquina a otra.


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 apagada). Uno de 32 bits, el otro de 64 bits. Parece que Toad es de 32 bits en función de su ruta de instalación, pero ejecútelo y vaya a Ayuda | Paquete de soporte. Verá que el encabezado superior será "INFORMACIÓN DE APLICACIÓN (32 bits)" o "INFORMACIÓN DE 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. Por lo tanto, su cliente de 64 bits es irrelevante por el bien de Toad. 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 estar usando ese tnsnames.ora. Eso es una anulación global si lo hace, apunta a la carpeta que contiene sus archivos de configuración de red. Si no tiene TNS_ADMIN establecido como una 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 sus 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, en 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 en sesión o por script definido por el usuario
  3. TNS_ADMIN definido 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 Oracle 111942.1 que hace referencia a Oracle 9i, por lo que podría estar desactualizada.

En la Guía del administrador de Database Net Services, el orden es

  1. TNS_ADMIN definido por la variable de entorno
  2. TNS_ADMIN definido en el registro (si la variable de entorno TNS_ADMIN no está presente)
  3. Directorio %ORACLE_HOME%/network/admin (si la variable de entorno TNS_ADMIN no está presente)

Recomendaría definir una variable de entorno para TNS_ADMIN y usar solo un archivo tnsnames.ora. Para estar seguro, verifique también sus valores de registro.

Si sus archivos no se encuentran en %ORACLE_HOME%/network/admin , le recomiendo crear un enlace simbólico, solo para estar seguro, por ejemplo, mklink /d %ORACLE_HOME%/network/admin c:/Oracle/common/settings/admin

Otra nota, no tiene que "jugar" con su 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 la variable de entorno TNS_ADMIN no está establecida.

  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 búsqueda de soluciones, varía para diferentes proveedores / controladores. Tal vez también depende de la versión de Oracle.

Por ejemplo, el servidor HTTP de Oracle lee la configuración TNS_ADMIN del opmn.xml configuración opmn.xml .

Otro ejemplo, para la versión beta de ODP.NET Managed Driver (Oracle.ManagedDataAccess), encontré este pedido en Oracle Managed y TNS Names :

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

En la documentation oficial (12c Release 4 (12.1.0.2.4)) dice:

  1. alias de origen de datos en la sección dataSources en la sección <oracle.manageddataaccess.client> en el archivo de configuración .NET (es decir, machine.config , web.config , user.config ).
  2. alias de origen de datos en el archivo tnsnames.ora en la ubicación especificada por TNS_ADMIN en el archivo de configuración .NET. Las ubicaciones pueden consistir en rutas de directorio absolutas o relativas.
  3. alias de origen de datos en el archivo tnsnames.ora 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 tiene en cuenta %ORACLE_HOME%/network/admin y la variable de entorno TNS_ADMIN . Bloqueos como la documentación no es 100% correcta.