Mam aplikację Java, która korzysta z JDBC (przez JPA), która łączyła się z bazą danych programowania przy użyciu nazwy hosta, portu i identyfikatora SID Oracle:
jdbc: oracle: thin: @ oracle.hostserver1.mydomain.ca: 1521: XYZ
XYZ był Oracle SID. Teraz muszę połączyć się z inną bazą danych Oracle, która nie używa identyfikatora SID, ale zamiast tego używa nazwy usługi Oracle.
Próbowałem tego, ale to nie działa:
jdbc: oracle: thin: @ oracle.hostserver2.mydomain.ca: 1522: ABCD
ABCD to nazwa usługi drugiej bazy danych.
Co ja robię źle?
źródło
jdbc:oracle:thin:USER/PWD@//my.ip.address:1521/SERVICENAME
lubjdbc:oracle:thin:@//my.ip.address.1521/SERVICENAME
z nazwą użytkownika i hasłem jako argumentamijdbc.getConnection()
. Nadal zastanawiam się.Są więc dwa proste sposoby, aby to zadziałało. Rozwiązanie opublikowane przez Berta F działa dobrze, jeśli nie trzeba dostarczać żadnych innych specjalnych właściwości połączenia specyficznych dla Oracle. Format tego jest następujący:
Jeśli jednak musisz podać inne właściwości połączenia specyficzne dla Oracle, musisz użyć długiego stylu TNSNAMES. Musiałem to zrobić niedawno, aby umożliwić współdzielone połączenia Oracle (gdzie serwer wykonuje własną pulę połączeń). Format TNS to:
Jeśli znasz format pliku Oracle TNSNAMES, powinien on wyglądać znajomo. Jeśli nie, skorzystaj z Google, aby uzyskać szczegółowe informacje.
źródło
Możesz również podać nazwę TNS w adresie URL JDBC, jak poniżej
źródło
Spróbuj tego:
jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD
Edycja: poniżej komentarza jest to poprawne:
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
(zwróć uwagę na//
)Oto link do pomocnego artykułu
źródło
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
.oracle.hostserver2.mydomain.ca
?Ta dyskusja pomogła mi rozwiązać problem, z którym zmagałem się od wielu dni. Rozejrzałem się po Internecie, dopóki nie znalazłem odpowiedzi Jima Tougha 18 maja o godz. 15:17. Dzięki tej odpowiedzi mogłem się połączyć. Teraz chcę oddać i pomóc innym z pełnym przykładem. Tutaj idzie:
źródło
Jeśli używasz Eclipse do łączenia Oracle bez SID. Do wyboru są dwa sterowniki, tj. Cienki sterownik Oracle, a drugi to inny sterownik. Wybierz inne sterowniki i wprowadź nazwę usługi w kolumnie bazy danych. Teraz możesz połączyć się bezpośrednio przy użyciu nazwy usługi bez identyfikatora SID.
źródło
Gdy używałem
dag
zamiastthin
, poniższa składnia wskazująca nazwę usługi działała dla mnie. Powyższejdbc:thin
rozwiązania nie działały.źródło
To powinno działać:
jdbc:oracle:thin//hostname:Port/ServiceName=SERVICE_NAME
źródło