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?

Americus
źródło

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.
JaseAnderson
źródło
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.

Paul Mattey
źródło
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 .

Chandra Sekhar
źródło
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.

DCookie
źródło
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?

Allan Stewart
źródło
@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

B Chowdhary
źródło
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.

Michał
źródło