2015-04-03 6 views
11

Kiedy otwieram okno Eksploratora źródeł danych i próbuję utworzyć nowy profil połączenia, wybieram "Oracle", Oracle Thin Driver, a następnie kierujemy go do następującego pliku JAR na moim komputerze:Nie można utworzyć źródła danych Eclipse do Oracle 12c za pomocą słoika 12c. Jednak 11g działa

C:\oracle_12101_64bit\product\12101_64bit\CLIENT_1\jdbc\lib\ojdbc7.jar 

Po dostarczeniu parametry połączenia, to wywodzi url połączenia w następującym formacie pomocą

jdbc:oracle:thin:@host:PORT:SID 

jednak to, co ja chcę, żeby czerpać jest to (uwaga na dwukropek zamiast ukośnika)

jdbc:oracle:thin:@host:PORT/SID 

Wygląda na to, że mogę łączyć się z bazami 11g przy użyciu wygenerowanego adresu URL, ale nie 12c, nie wiem, czy jest to przypadkowe, czy też mam inny problem.

W moim programie korzystam z JPA i odczytuję URL połączenia z mojego pliku konfiguracyjnego w żądanym formacie ukośnika, a program może się połączyć, a połączenie nie powiedzie się, jeśli zmienię adres URL, aby używał dwukropka.

Jak utworzyć profil połączenia w widoku Eksploratora źródła danych Eclipse, jeśli nie mogę kontrolować pochodnego adresu URL połączenia, aby wygenerować adres URL z ukośnikiem zamiast dwukropka? Błąd otrzymuję to:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 

Update 1

Jedną rzeczą, jaką zauważyłem jest to, że nawet jeśli kojarzy mi plik jdbc7.jar że pochodzi z Oracle 12c, kierowca nadal jest wyświetlany jako chociaż jest to "Oracle 11."

enter image description here

Aktualizacja 2:

Oto próbka tego, co jest w moim pliku tnsnames.ora:

AFDEDEV.MYCO.COM = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = servername.sys.MYCO.com)(PORT = 2)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = afdedev.MYCO.com) 
    ) 
) 

enter image description here

To wygląda jak ciąg połączenia konstruktor oczekuje tylko identyfikatora SID. jaki byłby mój identyfikator SID lub jak mogę się dowiedzieć? Próbowałem zarówno AFDEDEV, jak i AFDEDEV.MYCO.COM. W przypadku 11g, który działał, użyłem ekwiwalentu AFDEDEV. Niestety, tak naprawdę nie rozumiem tak dobrze identyfikatorów SID i SERVICE NAMES. Czy istnieje zapytanie, które mógłbym wykonać względem bazy danych, aby poinformować mnie o identyfikatorze SID?

+1

Format '/' używa nazwy usługi, a nie identyfikatora SID. Być może działa w 11g, ponieważ są one takie same w tej bazie danych, ale różnią się w twojej instancji klasy 12c. Lub masz 11g listener.ora, który definiuje identyfikatory SID, a twój 12c nie. Czy Eclipse daje możliwość określenia, czy podajesz identyfikator SID lub nazwę usługi? –

+0

@Alex: Dzięki. Zobacz tekst pod aktualizacją 2 w oryginalnym wpisie. – ChadD

+0

Ponadto nie mam pliku listener.ora i nigdy go nie aktualizowałem, nie wiem, do czego służy. – ChadD

Odpowiedz

4

Wydaje się to być ograniczeniem szablonu "Oracle Thin Driver" Eclipse. Pozwala tylko na określenie identyfikatora SID dla połączenia, a nie nazwy usługi; i albo nie znasz identyfikatora SID, albo nie jest on zarejestrowany w detektorze (który twój DBA musiałby rozwiązać).

Jeśli utworzysz nowy sterownik z szablonu "Oracle Database 11g Driver" zamiast szablonu "Oracle Thin Driver" i wskażesz go plikowi 12c ojdbc7.jar, będziesz mógł wybrać dostawę zamiast tego nazwa usługi. To spowoduje wygenerowanie adresu URL, takiego jak jdbc:oracle:thin:@//servername.sys.MYCO.com:2/afdedev.MYCO.com.

wciąż ten sam cienki kierowca, Eclipse Po prostu wydaje się, aby zrozumieć lepiej,

0

Można również utworzyć profil z „kierowca” szablon, dodać ojdbc7.jar się Dodaj sekcję słoikach.

Teraz możesz samodzielnie określić ciąg adresu URL i inne parametry, a szablon nie wypełni automatycznie niczego za Ciebie. W ten sposób możesz podać nazwę usługi z poprzedzającym "/".