ORA-28040: Keine Ausnahme für das übereinstimmende Authentifizierungsprotokoll


88

Ich versuche, mein Grails-Projekt mit der Oracle-Datenbank ( Oracle 12c ) im Windows (8) -System zu verbinden. Wenn ich jedoch meine Anwendung ausführe, wird folgende Ausnahme angezeigt:

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

Laut Internetvorschlag habe ich auch versucht, meine *.oraDatei zu bearbeiten , aber es funktioniert nicht.

Ich habe folgendes Snippet in sqlnet.oraDatei hinzugefügt :

SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10

Hier habe ich versucht zuzuweisen (10,11,12), aber keiner von ihnen funktioniert.

Kann mir bitte jemand dabei helfen?


Welche sqlnet.ora haben Sie bearbeitet, die auf dem Client oder dem Server?
Jon Heller

1
Ich bin mir nicht sicher, da ich Anfänger bin. Die Datei, die ich bearbeitet habe, enthielt jedoch nur wenige Zeilen. Es enthielt: '# sqlnet.ora Netzwerkkonfigurationsdatei: E: \ app \ adhikariaman01 \ product \ 12.1.0 \ dbhome_1 \ network \ admin \ sqlnet.ora # Erstellt von Oracle-Konfigurationstools. # Diese Datei wird tatsächlich von netca generiert. Wenn Kunden sich jedoch für die # Installation von "Nur Software" entscheiden, existiert diese Datei nicht und ohne die native # Authentifizierung können sie unter NT keine Verbindung zur Datenbank herstellen. SQLNET.AUTHENTICATION_SERVICES = (NTS) NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT) '
Aman Adhikari

2
Das klingt nach der Datei für den Datenbankserver. Diese Probleme können sehr schwierig sein. Können Sie mit SQL * Plus eine Verbindung zum Datenbankserver herstellen? Verwenden Sie einen JDBC-Thin Client und wenn ja, können Sie einen Thick Client ausprobieren?
Jon Heller

Ja, ich bin über SQL * plus verbunden
Aman Adhikari

1
Ich habe das Problem gelöst :). Ich habe die Datei ojdbc14.jar gelöscht und stattdessen ojdbc6.jar verwendet, und es hat bei mir funktioniert. Trotzdem danke für die Antwort.
Aman Adhikari

Antworten:


147

Ich löschte die ojdbc14.jar Datei und verwende ojdbc6.jar statt und es funktionierte für mich


3
Beim Versuch, Oracle 12c über einen Pentaho-Wasserkocher zu verbinden, tritt dasselbe Problem auf. ojdbc14.jar entfernt und es funktioniert perfekt!
Lourdh

Gleicher Fehler beim Verbinden von Cognos 10.2.1 fp7 mit der Oracle 12c Content Store-Datenbank. Ojdbc14.jar aus '[10 bi install folder] \ webapps \ p2pd \ WEB-INF \ lib' entfernt und ojdbc6.jar hinzugefügt, funktioniert hervorragend.
Damienknight

16
Zumindest eine kurze Erklärung, warum dies funktionieren sollte, wäre sehr praktisch.
Yuriy Kravets

8
Für mich schlug der Wechsel zu ojdbc6.jar oder ojdbc7.jar immer noch fehl, weil ich ständig eingestellt hatte: oracle.jdbc.thinLogonCapability"="o3"was Sie nicht mehr gegen Orakel 12c tun müssen. Hoffe, es kann jemand anderem helfen
James Tobin

3
Das funktioniert perfekt, nachdem Sie ojdbc14.jar gelöscht und ojdbc6.jar verwendet haben
Sam

54

Hier ist ein Text, den ich beim Expertenaustausch gefunden habe :

Fehler 14575666

In 12.1 wurde der Standardwert für den Parameter SQLNET.ALLOWED_LOGON_VERSION auf 11 aktualisiert. Dies bedeutet, dass Datenbankclients, die JDBC-Thin-Treiber vor 11g verwenden, sich nicht bei 12.1-Datenbankservern authentifizieren können, es sei denn, der Parameter SQLNET.ALLOWED_LOGON_VERSION ist auf den alten Standardwert 8 festgelegt.

Dies führt dazu, dass eine 10.2.0.5-Oracle RAC-Datenbankerstellung mit DBCA mit dem ORA-28040 fehlschlägt: Kein übereinstimmender Authentifizierungsprotokollfehler in 12.1 Oracle ASM- und Oracle Grid Infrastructure-Umgebungen.

Problemumgehung: Setzen Sie SQLNET.ALLOWED_LOGON_VERSION = 8 in der Datei oracle / network / admin / sqlnet.ora.


Nur als Referenz: Dies funktionierte für mich, indem ich die Datei ojdbc14.jar nicht löschte und ojdbc6.jar
rageit

4
Ja, in meinem Fall wurde das Problem behoben, aber es ist ein anderes aufgetreten: ungültiger Benutzername / Passwort. Übrigens habe ich versucht, eine Verbindung von Oracle Jdeveloper 10 zur Oracle-Datenbank 12c herzustellen. Dies war also die Antwort: stackoverflow.com/questions/14476875/… musste schließlich: 1) SQLNET.ALLOWED_LOGON_VERSION in 8 ändern 2) SQLNET.AUTHENTICATION_SERVICES in (NONE) 3) ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 4) ALTER USER XX IDENTIFIZIERT VON PW (um das Passwort erneut zu speichern, nachdem wir die Groß- und Kleinschreibung geändert haben)
hello_earth

Spät zur Party, aber ich habe dieses Update auch bestätigt. Ich musste meine Version = 8 setzen, obwohl ich JDBC 11 ausführte - nichts Neueres als 8 funktionierte.
Keith

Ich verwende einen entfernten Datenbankserver. Ich habe keinen Zugriff auf den Computer. Ich kann nur mit SQL Developer (ohne Fehler) eine Verbindung zur Datenbank herstellen, aber meine Anwendung (auf Tomcat bereitgestellt) gibt diesen Fehler aus. Ich habe die Einstellungen auf meinem lokalen Computer geändert, es funktioniert nicht. Muss ich die Einstellungen auf dem Server ändern?
Gunwant

5

Dies mit Ausnahme des Hinzufügens der folgenden Elemente zu sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

Wenn der Fehler "ORA-01017: Ungültiger Benutzername / Passwort; Anmeldung verweigert" angezeigt wird, müssen Sie Ihr Passwort neu erstellen.


Wenn der Fehler "ORA-01017: Ungültiger Benutzername / Passwort; Anmeldung verweigert" angezeigt wird, müssen Sie Ihr Passwort neu erstellen. Das war ein Lebensretter !! Vielen Dank
Thomas VC

4

Ich habe dieses Problem mit ojdbc8.jar behoben. Oracle 12c ist kompatibel mit ojdbc8.jar



3

Ich habe Eclipse verwendet und nachdem ich alle anderen Antworten ausprobiert hatte, funktionierte es bei mir nicht. Am Ende hat es für mich funktioniert, ojdb7.jarden Build-Pfad nach oben zu verschieben. Dies tritt auf, wenn mehrere Gläser widersprüchliche Klassen haben.

  1. Projekt auswählen in Project Explorer
  2. Rechtsklick auf Project -> Build Path -> Configure Build Path
  3. Gehen Sie zur Order and ExportRegisterkarte und wählen Sieojdbc.jar
  4. Klicken Sie auf die Schaltfläche TOP, um sie nach oben zu verschieben

1

Hinzufügen

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

ist die perfekte Lösung für das Verzeichnis sql.ora .. \ product \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN


0

Mein anfänglicher Fehler ist: ORA-28040: Keine Ausnahme für das übereinstimmende Authentifizierungsprotokoll

Meine DB-Version ist 12.2 (Solaris) und die Client-Version ist 11.2 (Windows). Ich habe unten in Server und Client sqlnet.ora hinzugefügt

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

Während der Verbindung habe ich einen ungültigen Benutzernamen und ein ungültiges Passwort erhalten, daher habe ich das Passwort (dasselbe Passwort) in der Datenbank neu erstellt, wodurch mein Problem behoben wurde.


0

Während in den meisten Fällen das Ersetzen des ojdbc-Treibers jar die Lösung sein wird, war mein Fall anders.

Wenn Sie sicher sind, dass Sie den richtigen ojdbc-Treiber verwenden. Überprüfen Sie noch einmal, ob Sie tatsächlich eine Verbindung zu der Datenbank herstellen, von der Sie glauben, dass Sie sie sind. In meinem Fall zeigte die JDBC-Konfiguration (in Tomcat / conf) auf eine andere Datenbank mit einer anderen Oracle-Version.


0

Sehr alte Frage, aber einige zusätzliche Informationen, die jemand anderem helfen können. Ich bin auch auf denselben Fehler gestoßen und habe ojdbc14.jar mit 12.1.0.2 Oracle Database verwendet. Auf der offiziellen Oracle-Webseite sind diese Informationen aufgeführt, welche Version welche Datenbanktreiber unterstützt. Hier ist der Link und es scheint, dass mit Oracle 12c und Java 7 oder 8 die richtige Version ojdbc7.jar ist.

In der ojdbc6.jar ist für 11.2.0.4.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.