Имена Oracle TNS не отображаются при добавлении нового соединения в SQL Developer - PullRequest
90 голосов
/ 08 января 2009

Я пытаюсь подключиться к базе данных 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-имена не отображаются в качестве параметров.

Есть что-то, что я пропускаю?

Ответы [ 7 ]

169 голосов
/ 08 января 2009

Разработчик SQL будет искать в следующем месте в этом порядке файл 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

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

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

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

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

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

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

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

    Из Linux: echo $ TNS_ADMIN

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

  4. Теперь в SQL Developer щелкните правой кнопкой мыши Соединения и выберите Новое соединение ... . Выберите TNS в качестве типа подключения в раскрывающемся списке. Ваши записи из tnsnames.ora теперь должны отображаться здесь.
28 голосов
/ 10 августа 2011

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

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

13 голосов
/ 08 января 2009

Вы всегда можете узнать местоположение файла 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 используется в системах с несколькими домами оракулов.

12 голосов
/ 23 июля 2012

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

enter image description here

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

enter image description here

Вы сделали!

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

2 голосов
/ 14 апреля 2010

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

1 голос
/ 22 мая 2012

В Sql Developer перейдите в Инструменты-> Настройки-> База данных-> Дополнительно-> Установить каталог Tnsname в каталог, содержащий tnsnames.ora

0 голосов
/ 24 марта 2014

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

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

...