Oracle обеспечивает утилиту, названную 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:\>
Это должно показать, какой файл Вы используете. Утилита находится в каталоге Oracle bin
.
Для Linux:
$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'open.*tnsnames.ora'
шоу что-то вроде этого:
open("/opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora",O_RDONLY)=7
Изменение на
$ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'tnsnames.ora'
покажет все пути к файлам, которые перестали работать.
Для Windows: Filemon от SysInternals покажет Вам, к каким файлам получают доступ.
Не забывают устанавливать Ваши фильтры, таким образом, Вы не поражены болтливым трафиком файловой системы.
Добавленный: Filemon не работает с более новыми версиями Windows, таким образом, Вам, возможно, придется использовать Монитор Процесса .
Существует другое место, где местоположение TNS хранится: Если Вы используете Windows, открываете regedit
и перешли к My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1
, где KEY_OraClient10_home1
Ваша Oracle домой. Если будет строковая запись, названная TNS_ADMIN
, то значение той записи укажет на файл TNS, что Oracle использует на Вашем компьютере.
На моей машине разработки у меня есть три различных версии клиентского программного обеспечения Oracle. Я справляюсь tnsnames.ora
файл в одном из них. В других двух я вошел в tnsnames.ora
файл:
ifile=path_to_tnsnames.ora_file/tnsnames.ora
Таким образом, если по некоторым причинам неправильное tnsnames.ora
файл используется клиентом, он будет всегда заканчиваться в актуальной версии.
Codeslave просит, чтобы "Это не должен был всегда быть "$ORACLE_ HOME/network/admin/tnsnames.ora"? Ответ не, это не. Рассмотрите эти два вызова tnsping на той же машине:
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>
Примечание два различных расположения файлов параметра, которые зависят, на котором tnsping исполняемом файле Вы работаете (и возможно откуда это выполняется). Для находящегося в tnsnames оракула, объединяющегося в сеть, с помощью переменной TNS_ADMIN, единственный способ гарантировать, что Вы получаете последовательный tnsnames.ora файл. (ОТМЕТЬТЕ: центральный Windows ответ)
Самый легкий путь состоит в том, чтобы, вероятно, проверить ПУТЬ переменная среды процесса, который соединяется с базой данных. Скорее всего, tnsnames.ora файл находится в первый каталог bin Oracle в пути ..\network\admin. Переменная среды TNS_ADMIN или значение в реестре (для текущей Oracle домой) могут переопределить это.
Используя filemon любят предложенный другими, также добьется цели.
Это не должен всегда быть "$ORACLE_ HOME/network/admin/tnsnames.ora"? Тогда можно просто сделать "$oracle_ эха домой", или *отклоняют эквивалентный.
@Pete Holberton You совершенно корректны. Который напоминает мне, существует другой разводной ключ в работах под названием ЗАДАЧА
TWO_ Соответственно http://www.orafaq.com/wiki/TNS_ADMIN
, TNS_ADMIN является переменной среды, которая указывает на каталог, где конфигурационные файлы SQL*Net (как sqlnet.ora и tnsnames.ora) расположены.
По умолчанию tnsnames.ora расположен в каталоге $ORACLE_HOME/network/admin в операционных системах UNIX и в каталоге ORACLE_HOME\network\admin на операционных системах Windows. tnsnames.ora может также быть сохранен следующие местоположения:
каталог, определенный переменной среды TNS_ADMIN (или значение реестра)
В операционных системах UNIX, глобальном каталоге конфигурации. Например, на Операционной системе Solaris, этот каталог является/var/opt/oracle
, Если у Вас есть несколько ORACLE_HOMES, знать, какой Вы используете, поскольку местоположение tnsnames.ora файла может варьироваться от одного ORACLE_HOME до следующего.
Для человека, который упомянул переменную среды TWO_TASK, которая используется для определения сервисного имени базы данных по умолчанию для соединения с (который мог быть базой данных по другому серверу). Сервисное имя, к которому Вы определяете TWO_TASK, тогда ищется в tnsnames.ora файле, когда Вы соединяетесь.