Próbuję połączyć mój projekt Grails z bazą danych Oracle ( Oracle 12c ) w systemie Windows (8). Jednak za każdym razem, gdy uruchamiam moją aplikację, otrzymuję następujący wyjątek:
Caused by: org.apache.commons.dbcp.SQLNestedException:
Cannot create PoolableConnectionFactory (ORA-28040:
No matching authentication protocol)
Caused by:
java.sql.SQLException: ORA-28040:
No matching authentication protocol
Zgodnie z sugestiami internetowymi próbowałem też edytować *.ora
plik, ale nie działa.
Dodałem następujący fragment w sqlnet.ora
pliku:
SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
Tutaj próbowałem przypisać (10,11,12), ale żaden z nich nie działa.
Czy ktoś może mi w tym pomóc?
Odpowiedzi:
Usunąłem ojdbc14.jar plik i używane ojdbc6.jar zamiast i pracował dla mnie
źródło
oracle.jdbc.thinLogonCapability"="o3"
czego nie musisz już robić w stosunku do Oracle 12c. Mam nadzieję, że pomoże to komuś innemuOto tekst, który znalazłem na giełdzie ekspertów :
źródło
Rozwiązałem ten problem, używając ojdbc8.jar. Oracle 12c jest kompatybilny z ojdbc8.jar
źródło
Z wyjątkiem dodawania następujących elementów do sqlnet.ora
Jeśli pojawi się błąd „ORA-01017: nieprawidłowa nazwa użytkownika / hasło; odmowa logowania”, musisz ponownie utworzyć hasło.
źródło
Z wyjątkiem dodania następujących elementów do sqlnet.ora
Dodałem również następujące elementy do klienta i serwera, co rozwiązało mój problem
Zobacz także post ORA-28040: Brak zgodnego protokołu uwierzytelniania
źródło
Używałem zaćmienia i po wypróbowaniu wszystkich innych odpowiedzi nie zadziałało. W końcu to, co zadziałało, to przesunięcie na
ojdb7.jar
górę ścieżki budowania. Dzieje się tak, gdy wiele słoików ma sprzeczne te same klasy.źródło
Dodawanie
to idealne rozwiązanie katalog sql.ora .. \ product \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN
źródło
Bardzo stare pytanie, ale zawiera dodatkowe informacje, które mogą pomóc komuś innemu. Napotkałem również ten sam błąd i korzystałem z ojdbc14.jar z 12.1.0.2 Oracle Database. Na oficjalnej stronie internetowej Oracle podana jest informacja, która wersja obsługuje które sterowniki bazy danych. Oto link i wygląda na to, że w przypadku Oracle 12c i Java 7 lub 8 poprawna wersja to ojdbc7.jar.
W ojdbc6.jar jest dla 11.2.0.4.
źródło
Mój początkowy błąd to: ORA-28040: Brak pasującego wyjątku protokołu uwierzytelniania
Moja wersja DB to 12.2 (Solaris), a wersja klienta to 11.2 (Windows). Dodałem poniżej na serwerze i kliencie sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
podczas łączenia mam nieprawidłową nazwę użytkownika i hasło, dlatego odtworzyłem hasło (to samo hasło) w bazie danych, co rozwiązało mój problem.
źródło
O ile w większości przypadków zastąpienie jar sterownika ojdbc będzie rozwiązaniem, o tyle mój przypadek był inny.
Jeśli jesteś pewien, że używasz prawidłowego sterownika ojdbc. Dokładnie sprawdź, czy faktycznie łączysz się z bazą danych, o której myślisz. W moim przypadku konfiguracja jdbc (w Tomcat / conf) wskazywała na inną bazę danych, która miała inną wersję Oracle.
źródło
po prostu zainstaluj ojdbc-full, który zawiera wydanie 12.1.0.1.
źródło