Имена Oracle TNS не отображаются при добавлении нового подключения к SQL Developer


93

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

Я установил драйверы .Net oracle и поместил tnsnames.oraфайл в
C:\Oracle\product\11.1.0\client_1\Network\Admin

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

dev =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XXX.XXX)(PORT = XXXX))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = idpdev2)
    )
  )

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

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

Ответы:


177

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 не распознается, используйте следующую процедуру:

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

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

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

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

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

    Из Linux: echo $ TNS_ADMIN

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

  4. Теперь в SQL Developer щелкните правой кнопкой мыши на Connections и выберите New Connection ... . В раскрывающемся списке выберите TNS в качестве типа подключения. Здесь должны отображаться ваши записи с tnsnames.ora.

1
Для меня: $ HOME / .tnsnames.ora не работает ... Вместо этого я использовал $ HOME / tnsnames.ora. Также обратите внимание: вам нужно будет перейти в Инструменты -> Настройки, найти «tns» и указать каталог на $ HOME
Райан Делукки,

Несмотря на то, что это было в примечаниях к выпуску версии 1.5 для разработчиков SQL, я обнаружил, что в Ubuntu 12.04 LTS работает только # 5 . Попробуйте выполнить следующие действия, чтобы проверить, так ли это: forum.oracle.com/message/2769285#2769285 . Примечательно : проблема у автора была на Win Vista.
LAFK говорит: "Восстановите Монику"

У меня работал в Windows. Постоянно записывать вещи FTW!
Isaac

Установка TNS_ADMIN у меня не сработала. Вместо этого я поискал на компьютере все файлы TNSNAMES и обновил их содержимое. Не знаю , почему Windows 7 Sql Developer сохранялось на использование другого TNSNAMES файла в какой - то старой папке.
Бен

1
Примечание: $TNS_ADMINКАТАЛОГ - это не настоящий .oraфайл
geneorama

30

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

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


Принятый ответ не сработал для меня, но это сработало (Windows Server 2008R2)
Джош Вертс,

Была такая же проблема, но разработчик SQL также просматривал% userprofile% \ tnsnames.ora до% TNS_ADMIN% \ tnsnames.ora, и именно там у меня был дополнительный файл tnsnames.ora.
MBWise,

16

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

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

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

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

Вы сделали!

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


Не могу найти "Databse: Advanced" ==> моя версия 1.5.5
Тарек Эль-Маллах

1
Для версий ниже 2.1 или если вы не указали каталог Tnsnames в версии 2.1 или выше, следуйте инструкциям, указанным в ответе @JasonAnderson .
Chandra Sekhar

У меня нет опции Tnsnames Directory в меню Tools-> Preferences-> Databaes-> Advanced Parameters. Я использую SqlDeveloper v1.1.3
Ахмедов

14

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

C:\>tnsping dev

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-JAN-2009 12:48:38

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = DEV)))
OK (30 msec)

C:\>

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


как я могу установить инструмент tnsping ??
Kiquenet

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

2

Шаги, упомянутые Джейсоном, очень хороши и должны работать. Однако в 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, который явно не чувствителен к регистру?


@allen: вы знаете, как заставить его очистить этот список? Если да, ответьте на stackoverflow.com/q/6412559/168646
Дэвид Онейл,

1

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


0

Ни одно из вышеперечисленных изменений не имело никакого значения в моем случае. Я мог запустить 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 \.

Установщик установил ярлык меню «Пуск», который указывал на версию в каталоге bin, которая просто не работала. Он запрашивал пароль каждый раз, когда я запускал SQL Developer, не запомнил сделанный мной выбор и отображал пустой список, когда я выбрал TNS в качестве механизма подключения. У него также нет поля TNS Directory в расширенных настройках базы данных, на которое есть ссылки в других сообщениях.

Я выбросил старый ярлык «Пуск» и установил ярлык для% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Это изменение устранило проблему в моем случае.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.