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."
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)
)
)
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?
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? –
@Alex: Dzięki. Zobacz tekst pod aktualizacją 2 w oryginalnym wpisie. – ChadD
Ponadto nie mam pliku listener.ora i nigdy go nie aktualizowałem, nie wiem, do czego służy. – ChadD