Pregunta

A veces me Oracle problemas de conexión debido a que no puedo averiguar que tnsnames.ora archivo de mi cliente de base de datos está utilizando.

¿Cuál es la mejor manera de averiguarlo?++feliz por diversas soluciones de la plataforma.

¿Fue útil?

Solución

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 lo que el archivo que está utilizando.La utilidad se encuentra en el Oracle bin directorio.

Otros consejos

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

El cambio a

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

se muestran todas las rutas de los archivos que están fallando.

No hay otro lugar donde el TNS ubicación se almacena:Si estás usando Windows, abrir regedit y vaya a My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1 donde KEY_OraClient10_home1 es tu principal de Oracle.Si hay una entrada de cadena llamado TNS_ADMIN, entonces el valor de la entrada será punto para el TNS archivo que Oracle está utilizando en su equipo.

Para Windows: Filemon de SysInternals le mostrará qué archivos son los que se accede.

Recuerde establecer los filtros para que no se sientan abrumados por el hablador de archivos de sistema de tráfico.

Filter Dialog

Añadió: Filemon no funciona con las nuevas versiones de Windows, así que usted podría tener que utilizar El Monitor De Procesos.

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

ifile=path_to_tnsnames.ora_file/tnsnames.ora

De esta manera, si por alguna razón el mal tnsnames.ora archivo es utilizado por un cliente, siempre terminan en la fecha de la versión.

Codeslave pregunta "¿no Debería ser siempre "$ORACLE_ HOME/network/admin/tnsnames.ora"?La respuesta es no, no lo es.Tenga en cuenta 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>

Nota los dos parámetros diferentes ubicaciones de archivo, que dependen de que tnsping ejecutable está ejecutando (y tal vez donde se ejecuta desde).Para tnsnames basado en oracle redes, utilizando la TNS_ADMIN variable es la única manera de asegurarte de que estás recibiendo una constante de tnsnames.ora archivo.(NOTA:Windows centrada en la respuesta)

De forma predeterminada, tnsnames.ora se encuentra en el $ORACLE_HOME/network/admin de directorios en UNIX y sistemas operativos en el ORACLE_HOME etwork\admin directorio en sistemas operativos Windows.tnsnames.ora también se pueden almacenar los siguientes lugares:

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

En los sistemas operativos UNIX, el mundial del directorio de configuración.Por ejemplo, en el Sistema Operativo Solaris, este directorio es /var/opt/oracle

Si usted tiene múltiples ORACLE_HOMES, ser consciente de que uno está usando, como la ubicación de la tnsnames.ora archivo puede variar de una ORACLE_HOME a la siguiente.

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

No debería ser siempre "$ORACLE_ HOME/network/admin/tnsnames.ora"?A continuación, puede simplemente hacer "echo $oracle_ casa" o el *nix equivalente.

@Pete Holberton Usted es enteramente correcta.Lo que me recuerda, hay otra llave inglesa en las obras llamadas TWO_ TAREA

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

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

La forma más sencilla es probablemente para comprobar la CAMINO variable de entorno del proceso que se está conectando a la base de datos.Más probable es que el tnsnames.ora archivo está en primera Oracle directorio bin en la ruta.. etwork\admin.TNS_ADMIN variable de entorno o el valor en el registro (de la corriente principal de Oracle) puede reemplazar esta.

El uso de filemon como sugeridas por otros también lo hará el truco.

No respuesta directa a su pregunta, pero he estado muy frustrado a mí mismo tratando de encontrar y la actualización de todos los archivos tnsnames, como ya he tenido varios oracle instala:Cliente, herramientas BI, OWB, etc, cada uno de los cuales tenía su propio oracle casa.Terminé la creación de una utilidad llamada TNSNamesSync que la actualización de todos los tnsnames en todos los hosts de oracle.Es bajo la licencia MIT, de uso libre aquí https://github.com/artybug/TNSNamesSync/releases

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

Esto es sólo para Windows, aunque.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top