Nazwy Oracle TNS nie są wyświetlane podczas dodawania nowego połączenia do SQL Developer


93

Próbuję połączyć się z bazą danych Oracle za pomocą programu SQL Developer.

Zainstalowałem sterowniki .Net oracle i umieściłem tnsnames.oraplik pod adresem
C:\Oracle\product\11.1.0\client_1\Network\Admin

Używam następującego formatu w tnsnames.ora:

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

W SQL Developer, kiedy próbuję utworzyć nowe połączenie, żadne nazwy TNS nie pojawiają się jako opcje.

Czy jest coś, czego mi brakuje?

Odpowiedzi:


177

SQL Developer będzie szukał pliku tnsnames.ora w następującej lokalizacji w tej kolejności

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. Klucz wyszukiwania TNS_ADMIN w rejestrze
  4. /etc/tnsnames.ora (inne niż Windows)
  5. $ ORACLE_HOME / network / admin / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Aby zobaczyć, który programista SQL używa, wydaj polecenie show tnsw arkuszu

Jeśli plik tnsnames.ora nie jest rozpoznawany, wykonaj następującą procedurę:

  1. Zdefiniuj zmienną środowiskową o nazwie TNS_ADMIN, aby wskazywała folder zawierający plik tnsnames.ora.

    W systemie Windows można to zrobić, przechodząc do Panelu sterowania > System > Zaawansowane ustawienia systemu > Zmienne środowiskowe ...

    W systemie Linux zdefiniuj zmienną TNS_ADMIN w pliku .profile w katalogu domowym.

  2. Upewnij się, że system operacyjny rozpoznaje tę zmienną środowiskową

    Z wiersza poleceń systemu Windows: echo% TNS_ADMIN%

    Z linuxa: echo $ TNS_ADMIN

  3. Zrestartuj programistę SQL

  4. Teraz w SQL Developer kliknij prawym przyciskiem myszy Połączenia i wybierz Nowe połączenie ... . Wybierz TNS jako typ połączenia w rozwijanym polu. Twoje wpisy z tnsnames.ora powinny teraz zostać wyświetlone tutaj.

1
Dla mnie: $ HOME / .tnsnames.ora nie działało ... Zamiast tego użyłem $ HOME / tnsnames.ora. Uwaga: będziesz musiał przejść do Narzędzia -> Preferencje, wyszukać "tns" i wskazać katalog na $ HOME
Ryan Delucchi,

Pomimo tego, że znalazłem się w informacjach o wydaniu dla wersji SQL Developer 1.5, zauważyłem, że na Ubuntu 12.04 LTS działało tylko # 5 . Wypróbuj te kroki, aby sprawdzić, czy tak jest w Twoim przypadku: forums.oracle.com/message/2769285#2769285 . Warto zauważyć : autor miał problem na Win Vista.
LAFK mówi Przywróć Monikę

Pracował dla mnie w systemie Windows. Rejestrowanie rzeczy na zawsze FTW!
Izaak

Ustawienie TNS_ADMIN nie działa dla mnie. Zamiast tego przeszukałem komputer w poszukiwaniu wszystkich plików TNSNAMES i zaktualizowałem zawartość wszystkich z nich. Nie mam pojęcia, dlaczego programista Windows 7 Sql nalegał na używanie innego pliku TNSNAMES w jakimś starym folderze.
Ben,

1
Uwaga: $TNS_ADMINczy KATALOG nie jest aktualnym .oraplikiem
geneorama

30

Open SQL Developer. Przejdź do Narzędzia -> Preferencje -> Bazy danych -> Zaawansowane Następnie jawnie ustaw katalog Tnsnames

Mój TNSNAMES został poprawnie skonfigurowany i mogłem połączyć się z Toad, SQL * Plus itp., Ale musiałem to zrobić, aby SQL Developer działał. Być może był to problem z Win 7, ponieważ instalacja była trudna.


Zaakceptowana odpowiedź nie zadziałała dla mnie, ale zadziałała (Windows Server 2008R2)
Josh Werts

Miałem ten sam problem, ale SQL Developer również zajrzał do% userprofile% \ tnsnames.ora przed% TNS_ADMIN% \ tnsnames.ora i tam miałem dodatkowy plik tnsnames.ora.
MBWise

16

W SQLDeveloper przeglądaj Tools --> Preferences, jak pokazano na poniższym obrazku.

wprowadź opis obrazu tutaj

W opcjach Preferencji,expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory gdzie obecny jest tnsnames.ora .
Następnie kliknij OK .
jak pokazano na poniższym schemacie.

wprowadź opis obrazu tutaj

Uczyniłeś!

Teraz możesz łączyć się za pomocą opcji TNSnames .


Nie można znaleźć „Databse: Advanced” ==> moja wersja to 1.5.5
Tarek El-Mallah

1
W przypadku wersji niższych niż 2.1 lub jeśli nie określono katalogu Tnsnames w wersji 2.1 lub nowszej, odłóż, jak określono w odpowiedzi @JasonAnderson .
Chandra Sekhar

Nie mam opcji Katalog Tnsnames w menu Narzędzia-> Preferencje-> Databaes-> Zaawansowane parametry. Używam SqlDeveloper v1.1.3
Ahmedov

14

Zawsze możesz sprawdzić lokalizację pliku tnsnames.ora, który jest używany, uruchamiając TNSPING w celu sprawdzenia łączności (9i lub nowszej):

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:\>

Czasami problem dotyczy wpisu, który wprowadziłeś w tnsnames.ora, a nie tego, że system nie może go znaleźć. To powiedziawszy, zgadzam się, że posiadanie zestawu zmiennej środowiskowej tns_admin jest dobrą rzeczą, ponieważ pozwala uniknąć nieuniknionych problemów, które pojawiają się przy określaniu, który plik tnsnames jest używany w systemach z wieloma domami wyroczni.


jak mogę zainstalować narzędzie tnsping?
Kiquenet,

W instalacji klienta znajduje się pole wyboru dla narzędzi bazy danych lub takich.
DCookie

2

Kroki wymienione przez Jasona są bardzo dobre i powinny działać. Jest jednak mały zwrot w przypadku SQL Developer. Buforuje specyfikacje połączenia (host, nazwa usługi, port) podczas pierwszego odczytu pliku tnsnames.ora. Następnie nie unieważnia specyfikacji, gdy oryginalny wpis zostanie usunięty z pliku tnsname.ora. Pamięć podręczna utrzymuje się nawet po zakończeniu i ponownym uruchomieniu programu SQL Developer. Nie jest to taki nielogiczny sposób radzenia sobie z sytuacją. Nawet jeśli plik tnsnames.ora jest tymczasowo niedostępny, program SQL Developer może nadal nawiązać połączenie, o ile oryginalne specyfikacje są nadal aktualne. Problem pojawia się z kolejnym małym zwrotem akcji. SQL Developer traktuje nazwy usług w pliku tnsnames.ora jako wartości z uwzględnieniem wielkości liter podczas rozpoznawania połączenia. Więc jeśli miałeś nazwę wpisu ABCD. world w pliku i zastąpiłeś go nowym wpisem o nazwie abcd.world, SQL Developer NIE zaktualizowałby swoich specyfikacji połączenia dla ABCD.world - potraktuje abcd.world jako zupełnie inne połączenie. Dlaczego nie dziwi mnie, że produkt Oracle będzie traktował jako rozróżniającą wielkość liter zawartość formatu pliku opracowanego przez Oracle, w którym wielkość liter nie jest rozróżniana?


@allen: czy wiesz, jak zmusić go do wyczyszczenia tej listy? Jeśli tak, odpowiedz na stackoverflow.com/q/6412559/168646
David Oneill

1

W Sql Developer przejdź do Narzędzia-> Preferencje-> Bazy danych-> Zaawansowane-> Ustaw katalog Tnsname na katalog zawierający tnsnames.ora


0

Żadna z powyższych zmian nie zrobiła różnicy w moim przypadku. Mogłem uruchomić TNS_PING w oknie poleceń, ale SQL Developer nie mógł dowiedzieć się, gdzie jest tnsnames.ora.

Problem w moim przypadku (Windows 7 - 64 bit - Enterprise) polegał na tym, że instalator Oracle wskazał skrót menu Start na niewłaściwą wersję SQL Developer. Wygląda na to, że instalatorowi towarzyszą trzy wystąpienia SQL Developer. Jeden znajduje się w% ORACLE_HOME% \ client_1 \ sqldeveloper \, a dwa w% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \.

Instalator zainstalował skrót w menu Start, który wskazywał wersję w katalogu bin, która po prostu nie działała. Pytał o hasło za każdym razem, gdy uruchamiałem SQL Developer, nie pamiętając wyborów, których dokonałem i wyświetlał pustą listę, gdy wybrałem TNS jako mechanizm połączenia. Nie ma również pola Katalog TNS w zaawansowanych ustawieniach bazy danych, do których odwołują się inne posty.

Rzuciłem stary skrót Start i zainstalowałem skrót do% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Ta zmiana rozwiązała problem w moim przypadku.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.