Oracle - Какой файл имен TNS я использую?

Иногда у меня возникают проблемы с подключением к Oracle, потому что я не могу понять, какой файл tnsnames.ora использует мой клиент базы данных.

Какой лучший способ понять это? ++ рад за различные платформенные решения.

13.08.2008 23:49:15
11 ОТВЕТОВ
РЕШЕНИЕ

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:\>

Это должно показать, какой файл вы используете. Утилита находится в binкаталоге Oracle .

77
12.07.2012 17:55:00

Для 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'

покажет все пути к файлам, которые терпят неудачу.

18
28.08.2008 06:36:59
Благодаря этому, похоже, что /etc/tnsnames.ora - это надежное глобальное расположение для имен tns.
Avindra Goolcharan 27.07.2015 14:41:44
@AvindraGoolcharan, это мой вывод. Вот где мы это положили и проблем не было.
Mark Harrison 27.07.2015 18:07:53

Разве это не должно быть всегда "$ ORACLE_ HOME / network / admin / tnsnames.ora"? Тогда вы можете просто сделать "echo $ oracle_ home" или эквивалент * nix.

@ Пит Холбертон Вы совершенно правы. Что напоминает мне, есть еще один гаечный ключ в работах под названием TWO_ TASK

Согласно http://www.orafaq.com/wiki/TNS_ADMIN
TNS_ADMIN - это переменная среды, которая указывает на каталог, в котором находятся файлы конфигурации SQL * Net (например, sqlnet.ora и tnsnames.ora).

1
28.08.2008 20:04:29
На самом деле, нет, вы не можете принять это местоположение. Дом агента и дом клиента, просто чтобы назвать 2, имеют собственный каталог network / admin. Ответ, который вы получите, зависит от того, какой исполняемый файл вы используете.
DCookie 9.10.2008 20:29:35

Для Windows: Filemon из SysInternals покажет вам, к каким файлам осуществляется доступ.

Не забудьте установить свои фильтры, чтобы вы не были перегружены разговорной трафиком файловой системы.

Диалог фильтра

Добавлено: Filemon не работает с более новыми версиями Windows, поэтому вам, возможно, придется использовать Process Monitor .

4
30.03.2012 09:17:57

Есть еще одно место, где хранится местоположение TNS: если вы используете Windows, откройте regeditи перейдите туда, My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1где KEY_OraClient10_home1находится ваш Oracle. Если вызывается строковая запись TNS_ADMIN, то значение этой записи будет указывать на файл TNS, который Oracle использует на вашем компьютере.

5
30.08.2008 09:12:33

По умолчанию 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 при подключении.

2
31.08.2008 23:05:25

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 вы запускаете (и, возможно, откуда он запускается). Для сетей Oracle, основанных на tnsnames, использование переменной TNS_ADMIN - единственный способ гарантировать получение согласованного файла tnsnames.ora. (ПРИМЕЧАНИЕ: Windows-ориентированный ответ)

3
9.10.2008 20:45:48
Разве вы не любите несколько домов оракулов?
stjohnroe 12.10.2008 21:15:17

На моей машине для разработки у меня есть три разные версии клиентского программного обеспечения Oracle. Я управляю tnsnames.oraфайлом в одном из них. В двух других я ввел в tnsnames.oraфайл:

ifile=path_to_tnsnames.ora_file/tnsnames.ora

Таким образом, если по какой-то причине tnsnames.oraклиент использует неправильный файл, он всегда будет иметь актуальную версию.

4
12.07.2012 18:02:38

Возможно, самый простой способ - проверить переменную среды PATH процесса, подключающегося к базе данных. Скорее всего, файл tnsnames.ora находится в первом каталоге бина Oracle по пути .. \ network \ admin. Переменная окружения TNS_ADMIN или значение в реестре (для текущего домашнего каталога Oracle) могут переопределить это.

Использование filemon, подобного предложенному другими, также поможет.

0
4.12.2008 21:46:45

strace sqlplus -L scott/tiger@orclпомогает найти .tnsnames.oraфайл, /home/oracleчтобы найти файл, который он берет вместо $ORACLE_HOME/network/admin/tnsnames.oraфайла. Спасибо за публикацию.

1
11.12.2013 15:55:38

Не прямой ответ на ваш вопрос, но я был очень разочарован, пытаясь найти и обновить все файлы tnsnames, так как у меня было несколько установок Oracle: клиент, инструменты BI, OWB и т. Д., Каждая из которых имела свой собственный дом оракула. Я закончил тем, что создал утилиту под названием TNSNamesSync, которая обновит все tnsnames во всех домах оракула. Это под лицензией MIT, бесплатно использовать здесь https://github.com/artybug/TNSNamesSync/releases

Документы находятся здесь: https://github.com/artchik/TNSNamesSync/blob/master/README.md

Это только для Windows, хотя.

0
10.04.2016 13:02:16