Імена 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 не відображаються як опції.

Щось мені не вистачає?

Відповіді:


176

Розробник SQL шукатиме в такому порядку файл tnsnames.ora у такому порядку

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. Ключ пошуку TNS_ADMIN у реєстрі
  4. /etc/tnsnames.ora (не для Windows)
  5. $ ORACLE_HOME / network / admin / 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

  4. Тепер в SQL Developer клацніть правою кнопкою миші на Connections і виберіть New Connection ... . У розкривному списку виберіть тип підключення TNS . Тепер ваші записи з tnsnames.ora мають відображатися тут.

1
Для мене: $ HOME / .tnsnames.ora не спрацював ... Натомість я використав $ HOME / tnsnames.ora. Також Примітка: Вам потрібно буде перейти до Інструменти -> Налаштування, знайти "tns" і вказати каталог на $ HOME
Райан Делуччі

Незважаючи на те, що це є в примітках до випуску для розробника SQL версії 1.5, я виявив, що на Ubuntu 12.04 LTS працював лише №5 . Спробуйте виконати ці дії, щоб перевірити, чи це у вашому випадку: forums.oracle.com/message/2769285#2769285 . Примітно : у автора була проблема з Win Vista.
LAFK каже, що повернеться до Моніки

Працював у мене в Windows. Записувати речі назавжди FTW!
Ісаак

Встановлення TNS_ADMIN у мене не спрацювало. Натомість я шукав на комп’ютері всі файли TNSNAMES та оновлював їх вміст. Не маю уявлення, чому розробник Windows 7 Sql наполегливо використовував деякі інші файли TNSNAMES у старій папці.
Бен

1
Примітка: $TNS_ADMINчи .ora
ДЕКАТОР

30

Відкрийте SQL Developer. Перейдіть до Інструменти -> Налаштування -> Бази даних -> Додатково Потім явно встановіть каталог Tnsnames

Мої TNSNAMES були налаштовані правильно, і я міг підключитися до Toad, SQL * Plus тощо, але мені потрібно було це зробити, щоб SQL Developer запрацював. Можливо, це було питання Win 7, оскільки його теж було важко встановити.


Прийнята відповідь не працювала для мене, але це зробило (Windows Server 2008R2)
Josh Werts

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

15

У SQLDeveloper переглядайте Tools --> Preferences, як показано на зображенні нижче.

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

У параметрах налаштувань, expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directoryде tnsnames.ora присутній.
Потім натисніть кнопку Ok .
як показано на діаграмі нижче.

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

Ви зробили!

Тепер ви можете підключитися за допомогою параметрів імен TNS .


Не можу знайти "Databse: Advanced" ==> моя версія 1.5.5
Тарек Ель-Малла

1
Для версій нижче 2.1 або якщо ви не вказали каталог Tnsnames на версії 2.1 або вище, виконайте такі дії, як зазначено у відповіді @JasonAnderson .
Chandra Sekhar

У мене немає опції Каталог імен Tnsnames у меню Інструменти-> Налаштування-> Бази даних-> Додаткові параметри. Я використовую 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 використовується в системах з кількома будинками Oracle.


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

У клієнтській установці встановлений прапорець для Інструментів бази даних або деяких подібних.
DCookie

2

Кроки, згадані Джейсоном, дуже хороші і повинні працювати. Однак у розробника SQL є невеликий поворот. Він кешує специфікації підключення (хост, ім’я послуги, порт) при першому читанні файлу tnsnames.ora. Потім він не визнає специфікації, коли оригінальний запис видалено з файлу tnsname.ora. Кеш зберігається навіть після припинення та перезапуску розробника SQL. Це не такий нелогічний спосіб вирішення ситуації. Навіть якщо файл tnsnames.ora тимчасово недоступний, SQL Developer все ще може встановити з'єднання до тих пір, поки оригінальні технічні характеристики залишаються вірними. Проблема полягає в їх наступному маленькому повороті. SQL Developer розглядає імена служб у файлі tnsnames.ora як значення, що відрізняються від регістру, при вирішенні з'єднання. Отже, якщо раніше у вас була назва запису ABCD. світу у файлі, і ви замінили його новою записом під назвою abcd.world, SQL Developer НЕ буде оновлювати свої специфікації підключення для ABCD.world - він буде трактувати abcd.world як інше з'єднання. Чому я не здивований, що продукт Oracle трактує вміст розробленого в Oracle файлового формату, який прямо не враховує регістри?


@allen: ти знаєш, як змусити його очистити цей список? Якщо так, будь ласка, дайте відповідь на stackoverflow.com/q/6412559/168646
Девід Онілл

1

У програмі Sql Developer наведіть на Інструменти-> налаштування-> Бази даних-> розширені-> Встановіть каталог Tnsname у каталог, що містить tnsnames.ora


0

Жодна з перерахованих вище змін не змінила мого випадку. Я міг запустити TNS_PING у командному вікні, але розробник SQL не зміг зрозуміти, де знаходиться tnsnames.ora.

Проблема в моєму випадку (Windows 7 - 64-розрядна версія - Підприємство) полягала в тому, що установник Oracle вказав ярлик меню "Пуск" на неправильну версію розробника SQL. Здається, існує три екземпляри розробника SQL, які супроводжують програму встановлення. Один - у% 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.