Tns name oracle как узнать

Обновлено: 07.07.2024

Я пытаюсь подключиться к базе данных Oracle с помощью SQL Developer.

Я использую следующий формат в tnsnames.ora:

В SQL Developer, когда я пытаюсь создать новое соединение, TNS-имена не отображаются в качестве параметров.

Что-то мне не хватает?

SQL Developer будет искать файл tnsnames.ora в следующем месте в указанном порядке.

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. Ключ поиска TNS_ADMIN в реестре
  4. /etc/tnsnames.ora (не для Windows)
  5. $ ORACLE_HOME / сеть / администратор / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Чтобы узнать, какой из разработчиков SQL использует, введите команду show tns на листе

Если ваш файл tnsnames.ora не распознается, используйте следующую процедуру:

Определите переменную среды TNS_ADMIN, чтобы указать на папку, содержащую ваш файл tnsnames.ora.

В Windows это можно сделать, перейдя в Панель управления > Система > Дополнительные настройки системы > Переменные среды .

В Linux определите переменную TNS_ADMIN в файле .profile в вашем домашнем каталоге.

Убедитесь, что ОС распознает эту переменную среды

Из командной строки Windows: echo% TNS_ADMIN%

Из Linux: echo $ TNS_ADMIN

Перезапустите SQL Developer

Для меня: $ HOME / .tnsnames.ora не работает . Вместо этого я использовал $ HOME / tnsnames.ora. Также обратите внимание: вам нужно будет перейти в Инструменты -> Настройки, найти «tns» и указать каталог на $ HOME У меня работал в Windows. Постоянно записывать вещи FTW! Установка TNS_ADMIN у меня не сработала. Вместо этого я поискал на компьютере все файлы TNSNAMES и обновил их содержимое. Не знаю , почему Windows 7 Sql Developer сохранялось на использование другого TNSNAMES файла в какой - то старой папке. Примечание: $TNS_ADMIN КАТАЛОГ - это не настоящий .ora файл

Откройте SQL Developer. Перейдите в Инструменты -> Настройки -> Базы данных -> Дополнительно. Затем явно установите каталог Tnsnames.

Мой TNSNAMES был настроен правильно, и я мог подключиться к Toad, SQL * Plus и т. Д., Но мне нужно было сделать это, чтобы заставить SQL Developer работать. Возможно, это была проблема с Win 7, так как ее также было сложно установить.

Принятый ответ не сработал для меня, но это сработало (Windows Server 2008R2) Была такая же проблема, но разработчик SQL также просматривал% userprofile% \ tnsnames.ora до% TNS_ADMIN% \ tnsnames.ora, и именно там у меня был дополнительный файл tnsnames.ora.

В SQLDeveloper просмотрите Tools --> Preferences , как показано на изображении ниже.

введите описание изображения здесь

В настройках , expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory где присутствует tnsnames.ora .
Затем нажмите ОК .
как показано на диаграмме ниже.

введите описание изображения здесь

Теперь вы можете подключиться через параметры TNSnames .

Для версий ниже 2.1 или если вы не указали каталог Tnsnames в версии 2.1 или выше, следуйте инструкциям, указанным в ответе @JasonAnderson . У меня нет опции Tnsnames Directory в меню Tools-> Preferences-> Databaes-> Advanced Parameters. Я использую SqlDeveloper v1.1.3

Вы всегда можете узнать местоположение используемого файла tnsnames.ora, запустив TNSPING для проверки подключения (9i или новее):

Иногда проблема заключается в записи, которую вы сделали в tnsnames.ora, а не в том, что система не может ее найти. Тем не менее, я согласен с тем, что наличие набора переменных среды tns_admin - это хорошо, поскольку оно позволяет избежать неизбежных проблем, возникающих при точном определении того, какой файл tnsnames используется в системах с несколькими домами оракулов.

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

Шаги, упомянутые Джейсоном, очень хороши и должны работать. Однако в SQL Developer есть небольшая хитрость. Он кэширует спецификации подключения (хост, имя службы, порт) при первом чтении файла tnsnames.ora. Тогда это не делает спецификации недействительными, когда исходная запись удаляется из файла tnsname.ora. Кеш сохраняется даже после завершения работы и перезапуска SQL Developer. Это не такой уж нелогичный способ выхода из ситуации. Даже если файл tnsnames.ora временно недоступен, SQL Developer может установить соединение, пока исходные спецификации остаются верными. Проблема заключается в следующем маленьком повороте. SQL Developer обрабатывает имена служб в файле tnsnames.ora как значения с учетом регистра при разрешении соединения. Итак, если раньше у вас была запись с именем ABCD. world в файле, и вы заменили его новой записью с именем abcd.world, SQL Developer НЕ будет обновлять свои спецификации подключения для ABCD.world - он будет рассматривать abcd.world как совершенно другое соединение. Почему меня не удивляет, что продукт Oracle будет рассматривать как чувствительное к регистру содержимое файлового формата, разработанного Oracle, который явно не чувствителен к регистру?

В Sql Developer перейдите к Tools-> preferences-> Datababae-> advanced-> Установите каталог Tnsname в каталог, содержащий tnsnames.ora

Ни одно из вышеперечисленных изменений не имело никакого значения в моем случае. Я мог запустить TNS_PING в командном окне, но разработчик SQL не мог определить, где находится tnsnames.ora.

В моем случае (Windows 7 - 64-разрядная версия - Enterprise) проблема заключалась в том, что установщик Oracle указал ярлык меню «Пуск» на неправильную версию SQL Developer. Похоже, что установщик сопровождает три экземпляра SQL Developer. Один находится в% ORACLE_HOME% \ client_1 \ sqldeveloper \, а два - в% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \.

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

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

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

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

Oracle предоставляет утилиту под названием tnsping :

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

показывает что-то вроде этого:

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

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

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

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

Filter Dialog

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

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

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

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

ответил(а) 2013-12-11T18:30:00+04:00 7 лет, 11 месяцев назад

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

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

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

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

ответил(а) 2016-03-26T01:24:00+03:00 5 лет, 8 месяцев назад

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

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

По умолчанию tnsnames.ora находится в каталоге $ORACLE_HOME/network/admin в операционных системах UNIX и в каталоге ORACLE_HOME\network\admin в операционных системах Windows. tnsnames.ora также можно сохранить в следующих местах:

Каталог, указанный переменной среды TNS_ADMIN (или значением реестра)

В операционных системах UNIX - глобальный каталог конфигурации. Например, в операционной системе Solaris этот каталог является /var/opt/oracle

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

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

Oracle предоставляет служебную программу под названием tnsping :

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

Показывает что-то вроде этого:

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

Спасибо, исходя из этого, похоже, что /etc/tnsnames.ora - надежное глобальное местоположение для имен tns. @AvindraGoolcharan, это тоже мой вывод. Мы поместили его туда, и у нас не было никаких проблем.

Есть еще одно место, где хранится местоположение 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 :

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

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

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

Разве вы не любите просто несколько домов оракулов?

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

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

Filter Dialog

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

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

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

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

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

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

Oracle предоставляет утилиту : 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 . $ strace sqlplus - L scott / tiger @ orcl 2 >& 1 | grep - i 'open.*tnsnames.ora'

показывает что-то вроде этого:

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

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

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

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

Диалоговое окно фильтра

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

Читайте также: