Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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.

Ответ 2

Для linux:

$ strace sqlplus -L scott/[email protected] 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/[email protected] 2>&1| grep -i 'tnsnames.ora'

отобразит все пути к файлу, которые не работают.

Ответ 3

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

Ответ 4

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

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

Filter Dialog

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

Ответ 5

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

ifile=path_to_tnsnames.ora_file/tnsnames.ora

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

Ответ 6

Codeslave спрашивает: "Не всегда ли это" $ORACLE_ HOME/network/admin/tnsnames.ora "? Ответ - нет, это не так. Рассмотрим эти два вызова tnsp на одном компьютере:

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-ориентированный ответ)

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

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

Ответ 11

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

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

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