2009-01-08 14 views
85

Próbuję połączyć się z bazą danych Oracle za pomocą SQL Developer.Nazwy Oracle TNS nie są wyświetlane podczas dodawania nowego połączenia z programem SQL Developer

Mam zainstalowane sterowniki oracle NET i umieścił plik tnsnames.ora na
C:\Oracle\product\11.1.0\client_1\Network\Admin

Używam następujący format 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, gdy Próbuję utworzyć nowe połączenie, żadne nazwy TNS nie są wyświetlane jako opcje.

Czy jest coś, czego mi brakuje?

Odpowiedz

160

SQL Developer będzie wyglądać w następującej lokalizacji w tym celu do pliku tnsnames.ora

  1. $ HOME klucz/.tnsnames.ora
  2. $ TNS_ADMIN/tnsnames.ora
  3. TNS_ADMIN wyszukiwanie w rejestr
  4. /etc/tnsnames.ora (bez okna)
  5. $ ORACLE_HOME/network/admin/tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ LUB ACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Aby zobaczyć, który z nich jest za pomocą SQL Developer, wydanie polecenia show tns w arkuszu

Jeśli plik tnsnames.ora nie jest rozpoznawana coraz, użyj następująca procedura:

  1. Zdefiniuj zmienną środowiskową o nazwie TNS_ADMIN, aby wskazać folder zawierający tnsnames.ora f ile.

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

    w systemie Linux, zdefiniowania zmienną TNS_ADMIN w .profile w twoim katalogu domowym.

  2. Potwierdź os rozpoznaje tę zmienną środowiskową

    Z wiersza polecenia systemu Windows: echo% TNS_ADMIN%

    z Linuksa: echo $ TNS_ADMIN

  3. Restart SQL Developer

  4. Teraz w SQL Developer kliknij prawym przyciskiem myszy na 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.
+0

Doskonale, dziękuję! – Americus

+0

Prawie zadałem to samo pytanie. Dzięki. –

+11

Zdefiniuj zmienną środowiskową o nazwie TNS_ADMIN, która wskazuje na folder FOLDER zawierający plik tnsnames.ora. – detroitpro

12

Zawsze można dowiedzieć się o lokalizację pliku tnsnames.ora używany przez uruchomienie tnsping sprawdzić łączność (9i lub później):

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

Zdarza się, że problem jest z wpisu dokonanego w tnsnames.ora, nie, że system nie może go znaleźć. To powiedziawszy, zgadzam się, że posiadanie zestawu zmiennych środowiskowych tns_admin jest Dobrą Rzeczą, ponieważ pozwala uniknąć nieuniknionych problemów, które pojawiają się przy ustalaniu, który dokładnie plik tnsnames jest używany w systemach z wieloma domami wyroczni.

+0

Jak zainstalować narzędzie tnsping? – Kiquenet

+0

W instalacji klienta znajduje się pole wyboru Narzędzia bazy danych lub niektóre z nich. – DCookie

2

Kroki wymienione przez Jasona są bardzo dobre i powinny zadziałać. Jest trochę skrętu z programistą SQL. Przechowuje bufor specyfikacji połączenia (host, nazwa usługi, port) przy pierwszym odczytaniu pliku tnsnames.ora. Następnie nie powoduje unieważnienia specyfikacji, gdy oryginalny wpis zostanie usunięty z pliku tnsname.ora. Pamięć podręczna jest przechowywana nawet po zakończeniu i ponownym uruchomieniu programisty SQL. To nie jest taki nielogiczny sposób radzenia sobie z sytuacją. Nawet jeśli plik tnsnames.ora jest chwilowo niedostępny, programista SQL nadal może nawiązać połączenie, dopóki oryginalne specyfikacje nadal będą prawdziwe. Problem pojawia się wraz z kolejnym skrętem. Programista SQL traktuje nazwy usług w pliku tnsnames.ora jako rozróżniane wielkości liter podczas rozwiązywania połączenia. Jeśli więc w pliku był zapisany wpis ABCD.world i zastąpiłeś go nowym abcd.world, SQL Developer NIE zaktualizowałby swoich specyfikacji połączeń dla ABCD.world - potraktuje abcd.world jako inny połączenie w ogóle. Dlaczego nie dziwię się, że produkt Oracle traktowałby jako wielkość liter zawartość rozwiniętego formatu pliku, który jest wyraźnie nieodczuwalny na wielkość liter?

+0

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

29

Otwórz programistę SQL. przejdź do Narzędzia -> Preferencje -> Bazy danych -> Zaawansowane następnie jawnie ustawić TNSNAMES katalog

My TNSNAMES został prawidłowo skonfigurowany i mogłem połączyć się Toad, SQL * Plus itd ale musiałem to zrobić, aby uzyskać Programista SQL do pracy. Być może był to problem z Win 7, ponieważ zainstalowanie go również wymagało wiele wysiłku.

+0

Szybki i prosty. Dzięki – stoj

+0

To jest najprostsze rozwiązanie i działa – bobfet1

+0

Przyjęta odpowiedź nie działa dla mnie, ale tak się stało (Windows Server 2008R2) –

1

w SQL Developer navidate do Narzędzia->> Datababae-> Zaawansowane-> katalog Zestaw Tnsname do katalogu zawierającego tnsnames.ora

11

W sqldeveloper przeglądania Tools --> Preferences, jak pokazano na poniższym obrazie.

enter image description here

W Preferencje opcje expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory gdzie TNSNAMES.ORA obecny.
Następnie kliknij Ok.
, jak pokazano na poniższym schemacie.

enter image description here

zrobiliście!

Teraz można podłączyć poprzez TNSNAMES opcji.

+0

Nie mogę znaleźć "Databse: Advanced" ==> moja wersja to 1.5.5 –

+1

Dla wersji niższych niż 2.1 lub jeśli nie określiłeś katalogu Tnsnames w wersji 2.1 lub wyższej, odłóż go zgodnie z opisem w [@JasonAnderson answer] (http://stackoverflow.com/a/425104/1213738). –

+0

Nie mam opcji Katalog Tnsnames w menu Narzędzia-> Preferencje-> Databy-> Menu Parametry zaawansowane. Używam SqlDeveloper v1.1.3 – Ahmedov

0

Żadna z powyższych zmian nie miała znaczenia w mojej sprawie.Mógłbym uruchomić TNS_PING w oknie poleceń, ale SQL Developer nie mógł dowiedzieć się, gdzie znajduje się 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 istnieją trzy instancje SQL Developer dołączane do instalatora. Jedna z nich to% ORACLE_HOME% \ client_1 \ sqldeveloper \, a dwie są w% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \.

Instalator zainstalował skrót menu startowego wskazujący na wersję w katalogu bin, która po prostu nie działała. Pytałbym o hasło za każdym razem, gdy zacząłem programistę SQL, nie pamiętałem wyborów, które zrobiłem, i wyświetlałem pustą listę, gdy wybrałem TNS jako mechanizm połączenia. Nie ma także pola katalogu TNS w zaawansowanych ustawieniach bazy danych, do których odwołują się inne posty.

Podałem stary skrót startowy i zainstalowałem skrót do% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Ta zmiana naprawiła problem w moim przypadku.