tnsname ora name example ejemplo configurar conectar con 12c 11g oracle connection tnsnames tns

name - Oracle-¿Qué archivo de nombres TNS estoy usando?



tnsnames.ora oracle 12c (11)

A veces tengo problemas de conexión con Oracle porque no puedo entender qué archivo tnsnames.ora está utilizando mi cliente de base de datos.

¿Cuál es la mejor manera de resolver esto? ++ feliz por varias soluciones de plataforma.


¿No debería ser siempre "$ ORACLE_ HOME / network / admin / tnsnames.ora"? Luego puede hacer "echo $ oracle_ home" o el equivalente * nix.

@Pete Holberton Tienes toda la razón. Lo que me recuerda, hay otra llave inglesa en proceso llamada TWO_ TASK

Según http://www.orafaq.com/wiki/TNS_ADMIN
TNS_ADMIN es una variable de entorno que apunta al directorio donde se encuentran los archivos de configuración SQL * Net (como sqlnet.ora y tnsnames.ora).


Codeslave pregunta "¿No debería ser siempre" $ ORACLE_ HOME / network / admin / tnsnames.ora "? La respuesta es no, no lo es. Considere estas dos invocaciones de tnsping en la misma máquina:

C:/Documents and Settings/me>D:/Oracle/10.2.0_DB/BIN/tnsping orcl TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 09-OCT-2 008 14:30:12 Copyright (c) 1997, 2007, Oracle. All rights reserved. Used parameter files: D:/Oracle/10.2.0_DB/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL))) OK (40 msec) C:/Documents and Settings/me>tnsping orcl TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 09-OCT-2 008 14:30:21 Copyright (c) 1997, 2005, Oracle. All rights reserved. Used parameter files: D:/oracle/10.2.0_Client/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = XXXX)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL))) OK (20 msec) C:/Documents and Settings/me>

Tenga en cuenta las dos ubicaciones de archivo de parámetros diferentes, que dependen del ejecutable de tnsping que esté ejecutando (y tal vez desde dónde se ejecuta). Para las redes de Oracle basadas en tnsnames, el uso de la variable TNS_ADMIN es la única forma de asegurarse de obtener un archivo tnsnames.ora consistente. (NOTA: respuesta centrada en Windows)


De manera predeterminada, tnsnames.ora se encuentra en el directorio $ ORACLE_HOME / network / admin en los sistemas operativos UNIX y en el directorio ORACLE_HOME / network / admin en los sistemas operativos Windows. tnsnames.ora también se puede almacenar en las siguientes ubicaciones:

El directorio especificado por la variable de entorno TNS_ADMIN (o valor de registro)

En sistemas operativos UNIX, el directorio de configuración global. Por ejemplo, en el sistema operativo Solaris, este directorio es / var / opt / oracle

Si tiene varias ORACLE_HOMES, tenga en cuenta cuál está utilizando, ya que la ubicación del archivo tnsnames.ora puede variar de una ORACLE_HOME a la siguiente.

Para la persona que mencionó la variable de entorno TWO_TASK, se usa para establecer un nombre de servicio de base de datos predeterminado para conectarse (que podría ser una base de datos en otro servidor). El nombre del servicio que configuró TWO_TASK se busca en el archivo tnsnames.ora cuando se conecta.


En mi máquina de desarrollo tengo tres versiones diferentes de software de cliente Oracle. Administro el archivo tnsnames.ora en uno de ellos. En los otros dos, tnsnames.ora archivo tnsnames.ora :

ifile=path_to_tnsnames.ora_file/tnsnames.ora

De esta manera, si por algún motivo un cliente utiliza el archivo tnsnames.ora incorrecto, siempre terminará en la versión actualizada.


Hay otro lugar donde se almacena la ubicación TNS: si está utilizando Windows, abra regedit y navegue a My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1 donde KEY_OraClient10_home1 es su hogar Oracle. Si hay una entrada de cadena llamada TNS_ADMIN , el valor de esa entrada apuntará al archivo TNS que Oracle está usando en su computadora.


La forma más fácil es probablemente verificar la variable de entorno PATH del proceso que se conecta a la base de datos. Lo más probable es que el archivo tnsnames.ora esté en el primer directorio bin de Oracle en la ruta .. / network / admin. La variable de entorno TNS_ADMIN o el valor en el registro (para el hogar actual de Oracle) pueden anular esto.

Usar filemon como sugerido por otros también hará el truco.


No es una respuesta directa a su pregunta, pero me he sentido bastante frustrado tratando de encontrar y actualizar todos los archivos de tnsnames, ya que tuve varias instalaciones de Oracle: Cliente, herramientas de BI, OWB, etc., cada una de las cuales tenía su propio hogar Oracle. Terminé creando una utilidad llamada TNSNamesSync que actualizará todos los nombres de tns en todas las casas de Oracle. Está bajo la licencia MIT, de uso gratuito aquí https://github.com/artybug/TNSNamesSync/releases

Los documentos están aquí: https://github.com/artchik/TNSNamesSync/blob/master/README.md

Sin embargo, esto es solo para Windows.


Oracle proporciona una utilidad llamada tnsping :

R:/>tnsping someconnection TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20 08 10:38:07 Copyright (c) 1997 Oracle Corporation. All rights reserved. Used parameter files: C:/Oracle92/network/ADMIN/sqlnet.ora C:/Oracle92/network/ADMIN/tnsnames.ora TNS-03505: Failed to resolve name R:/> R:/>tnsping entpr01 TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20 08 10:39:22 Copyright (c) 1997 Oracle Corporation. All rights reserved. Used parameter files: C:/Oracle92/network/ADMIN/sqlnet.ora C:/Oracle92/network/ADMIN/tnsnames.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = **) (PROTOCOL = TCP) (Host = ****) (Port = 1521))) (CONNECT_DATA = (SID = ENTPR0 1))) OK (40 msec) R:/>

Esto debería mostrar qué archivo está utilizando. La utilidad se encuentra en el directorio bin Oracle.


Para Windows: Filemon de SysInternals le mostrará a qué archivos se está accediendo.

Recuerde configurar sus filtros para que el tráfico del sistema de archivos hablador no lo abrume.

Agregado: Filemon no funciona con las versiones más recientes de Windows, por lo que es posible que deba usar Process Monitor .


Para linux:

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i ''open.*tnsnames.ora''

muestra algo como esto:

open("/opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora",O_RDONLY)=7

Cambiando a

$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i ''tnsnames.ora''

mostrará todas las rutas de archivos que fallan.


strace sqlplus -L scott/tiger@orcl ayuda a encontrar el archivo .tnsnames.ora en /home/oracle para encontrar el archivo que necesita en lugar del archivo $ORACLE_HOME/network/admin/tnsnames.ora . Gracias por la publicación.