Fehler: ORA-28040 - Kein übereinstimmendes Authentifizierungs-Protokoll

Ist der Oracle-Client etwas älter, als die Datenbank, so kann es zu Problemen führen. Die Verbindung scheitert zum Beispiel mit folgender Meldung:

Fehlermeldung

ODBC-Treiber gab einen Fehler (SQLExecDirectW) zurück. Fehlerdetails Fehlercodes: OPR4ONWY:U9IM8TAC:OI2DL65P Status: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] Allgemeiner Fehler. [nQSError: 43113] Die Meldung wird von OBIS zurückgegeben. [nQSError: 43119] Abfrage nicht erfolgreich: [nQSError: 17001] Oracle-Fehlercode: 28040, Meldung: ORA-28040: Kein übereinstimmendes Authentifizierungs-Protokoll at OCI call OCISessionBegin. [nQSError: 17014] Verbindung zur Oracle-Datenbank konnte nicht hergestellt werden. (HY000)

(Fehlerausgabe im BI-Server)

Grund

Dieses Kompatibilitätsproblem des TNS-Protokoll lässt sich verhältnismäßig leicht überwinden. Es müssen einfach die passenden Parameter in die sqlnet.ora eingetragen werden.

Konfiguration

Diese findet sich - je nach Installation und Version - hier:

/u01/app/11.2.0.4/grid/network/admin/sqlnet.ora

bzw.

/u01/app/oracle/product/11.2.0.4/kvasydb/network/admin/sqlnet.ora

Folgende Parameter müssen/können gesetzt werden:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8 SQLNET.ALLOWED_LOGON_VERSION=8

Bei Oracle Datenbanken mit einer höheren Versionsnummer, wurden tiefere Eingriffe in das TNS-Protokoll vorgenommen. Bei Oracle Datenbanken mit einer Version ab 12.2 greifen folgende Parameter:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11 SQLNET.ALLOWED_LOGON_VERSION=11 SQLNET.EXPIRE_TIME=5

Listener

Nach der Konfiguration muss der Listener neu gestartet werden, so dass die Änderung wirksam werden. lsnrctl status lsnrctl stop lsnrctl start lsnrctl status

Hat der Listener dann die Datenbank registriert, sollte, nach Möglichkeit, die Client-Applikation - vielleicht ein BI-Server - neu gestartet werden.