Имена Oracle TNS не отображаются при добавлении нового соединения в SQL Developer
-
06-07-2019 - |
Вопрос
Я пытаюсь подключиться к базе данных Oracle с помощью SQL Developer. Р>
Я установил драйверы .Net oracle и разместил файл tnsnames.ora
в
<Код> C: \ Oracle \ продукт \ 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-имена не отображаются в качестве параметров.
Я что-то упускаю?
Решение
Разработчик SQL будет искать в следующем месте файл tnsnames.ora в следующем порядке
<Ол> Чтобы узнать, какой из разработчиков SQL использует, введите в листе команду show tns
Если ваш файл tnsnames.ora не распознается, используйте следующую процедуру:
<Ол>Определите переменную среды с именем TNS_ADMIN , чтобы она указывала на папку, в которой находится файл tnsnames.ora. Р>
В Windows это можно сделать, перейдя в Панель управления > Система > Расширенные настройки системы > Переменные среды ...
В Linux определите переменную TNS_ADMIN в файле .profile в вашем домашнем каталоге.
Подтвердите, что ОС распознает эту переменную среды
Из командной строки Windows: эхо% TNS_ADMIN%
Из Linux: echo $ TNS_ADMIN
Перезапустите SQL Developer
Другие советы
Open SQL Developer. Перейдите в Инструменты - > Настройки - > Базы данных - > продвинутый Затем явно установите каталог Tnsnames
Мои TNSNAMES были настроены правильно, и я мог подключиться к Toad, SQL * Plus и т. д., но мне нужно было сделать это, чтобы заставить SQL Developer работать. Возможно, это была проблема с Win 7, так как ее тоже было сложно установить.
Вы всегда можете узнать местоположение файла 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 используется в системах с несколькими домами оракулов.
В SQLDeveloper просмотрите Инструменты - > Настройки
, как показано на рисунке ниже.
В настройках Настройки разверните База данных - > выберите Дополнительно - > в разделе "Каталог Tnsnames" - & GT; Просмотрите каталог
, в котором присутствует tnsnames.ora .
Затем нажмите Хорошо .
как показано на диаграмме ниже.
Вы сделали!
Теперь вы можете подключиться с помощью параметров TNSnames .
Шаги, упомянутые Джейсоном, очень хороши и должны работать. Однако в 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 будет обрабатывать содержимое файла, разработанного оракулом и учитывающего регистр, как чувствительное к регистру?
В Sql Developer перейдите в раздел Сервис-> Настройки-> Данные-> Расширенный-> Установить каталог 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 \. Р>
Установщик установил ярлык в меню «Пуск», указывающий на версию в каталоге bin, которая просто не работала. Он будет запрашивать пароль каждый раз, когда я запускаю SQL Developer, не помню, какие варианты я сделал, и отображал пустой список, когда я выбрал TNS в качестве механизма подключения. Он также не имеет поля Каталог TNS в расширенных настройках базы данных, на которые есть ссылки в других публикациях. Р>
Я бросил старый ярлык «Пуск» и установил ярлык для% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Это изменение решило проблему в моем случае. Р>