ORA-28040: nessuna eccezione del protocollo di autenticazione corrispondente


92

Sto provando a collegare il mio progetto grails a Oracle databse ( Oracle 12c ) nel sistema Windows (8). Tuttavia, ogni volta che eseguo la mia applicazione ottengo la seguente eccezione:

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

Secondo il suggerimento di Internet ho anche provato a modificare il mio *.orafile ma non funziona.

Ho aggiunto il seguente snippet nel sqlnet.orafile:

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

Qui ho provato ad assegnare (10,11,12) ma nessuno dei due funziona.

Qualcuno può aiutarmi con questo?


Quale sqlnet.ora hai modificato, quello sul client o sul server?
Jon Heller

1
Non sono sicuro di essere un principiante. Tuttavia, il file che ho modificato conteneva solo poche righe. Conteneva: '# sqlnet.ora File di configurazione di rete: E: \ app \ adhikariaman01 \ product \ 12.1.0 \ dbhome_1 \ network \ admin \ sqlnet.ora # Generato dagli strumenti di configurazione Oracle. # Questo file è effettivamente generato da netca. Ma se i clienti scelgono di # installare "Solo software", questo file non esisterà e senza l'autenticazione # nativa, non saranno in grado di connettersi al database su NT. SQLNET.AUTHENTICATION_SERVICES = (NTS) NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT) '
Aman Adhikari

2
Sembra il file per il server del database. Questi problemi possono essere davvero difficili. È possibile connettersi al server database utilizzando SQL * Plus? Stai utilizzando un thin client JDBC e, in tal caso, puoi provare un thick client?
Jon Heller

Sì, sono connesso tramite SQL * plus
Aman Adhikari

1
Ho risolto il problema :). Ho eliminato il file ojdbc14.jar e invece ho usato ojdbc6.jar e ha funzionato per me. Comunque grazie per aver risposto.
Aman Adhikari

Risposte:


152

Ho eliminato il file ojdbc14.jar e ho usato ojdbc6.jar invece e ha funzionato per me


3
si verifica lo stesso problema durante il tentativo di connettere Oracle 12c dal bollitore pentaho. rimosso ojdbc14.jar ed è perfettamente funzionante!
lourdh

17
Almeno una breve spiegazione del perché dovrebbe funzionare sarebbe abbastanza utile.
Yuriy Kravets

8
Per me, il passaggio a ojdbc6.jar o ojdbc7.jar non è riuscito ancora perché ero stato costantemente impostato: oracle.jdbc.thinLogonCapability"="o3"cosa che non devi più fare contro oracle 12c. Spero che possa aiutare qualcun altro
James Tobin

3
Funziona perfettamente dopo aver eliminato ojdbc14.jar e utilizzato ojdbc6.jar
Sam

1
@YuriyKravets Il numero 14 in ojdbc14.jar e il numero 6 in ojdbc6.jar si riferiscono alla versione JDK per cui sono stati scritti. Se si apre il file manifest di ojdbc14.jar , viene visualizzato: Specification-Title: "Classi driver Oracle JDBC da utilizzare con JDK1.4" Allo stesso modo, ojdbc6.jar supporta l'implementazione di JDK1.6.
Maverick

55

Ecco del testo che ho trovato su expert-exchange :

Bug 14575666

In 12.1, il valore predefinito per il parametro SQLNET.ALLOWED_LOGON_VERSION è stato aggiornato a 11. Ciò significa che i client di database che utilizzano thin driver JDBC precedenti a 11g non possono autenticarsi sui server di database 12.1 a meno che il parametroSQLNET.ALLOWED_LOGON_VERSION non sia impostato sul vecchio valore predefinito di 8.

Ciò causerà il fallimento della creazione di un database Oracle RAC 10.2.0.5 utilizzando DBCA con ORA-28040: nessun errore del protocollo di autenticazione corrispondente negli ambienti 12.1 Oracle ASM e Oracle Grid Infrastructure.

Soluzione: impostare SQLNET.ALLOWED_LOGON_VERSION = 8 nel file oracle / network / admin / sqlnet.ora.


Solo per riferimento: questo ha funzionato per me non eliminando il file ojdbc14.jar e utilizzando ojdbc6.jar
rageit

4
sì, nel mio caso questo ha risolto il problema, ma si è verificato un altro: nome utente / password non validi. btw stavo cercando di connettermi da Oracle jdeveloper 10 al database Oracle 12c. quindi questo ha dato la risposta: stackoverflow.com/questions/14476875/... infine dovuto: 1) variazione SQLNET.ALLOWED_LOGON_VERSION a 8 2) SQLNET.AUTHENTICATION_SERVICES a (NESSUNA) 3) ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 4) ALTER XX USER IDENTIFICATO DA PW (per salvare nuovamente la password ora che abbiamo modificato la distinzione tra maiuscole e minuscole)
hello_earth

In ritardo alla festa, ma ho anche confermato questa soluzione. Ho dovuto impostare la mia versione = 8 anche se stavo eseguendo JDBC 11 - non funzionava niente di più recente di 8.
Keith

Sto utilizzando un server di database remoto, non ho accesso alla macchina, posso semplicemente connettermi al database utilizzando SQL Developer (senza errori), ma la mia applicazione (distribuita su Tomcat) genera questo errore. Ho modificato le impostazioni sulla mia macchina locale, non funziona. Devo modificare le impostazioni sulla macchina server?
Gunwant

5

Ho risolto questo problema utilizzando ojdbc8.jar. Oracle 12c è compatibile con ojdbc8.jar


5

Questo ad eccezione dell'aggiunta di quanto segue a sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

Se viene visualizzato l'errore "ORA-01017: nome utente / password non validi; accesso negato", è necessario ricreare la password.


Se viene visualizzato l'errore "ORA-01017: nome utente / password non validi; accesso negato", è necessario ricreare la password. Questo è stato un salvavita !! Grazie
Thomas VC,


3

Stavo usando eclipse e dopo aver provato tutte le altre risposte non ha funzionato per me. Alla fine, ciò che ha funzionato per me è stato spostare la ojdb7.jarparte superiore nel percorso di costruzione. Ciò si verifica quando più vasi hanno le stesse classi in conflitto.

  1. Seleziona il progetto in Project Explorer
  2. Fare clic con il tasto destro su Project -> Build Path -> Configure Build Path
  3. Vai alla Order and Exportscheda e selezionaojdbc.jar
  4. Fare clic sul pulsante TOPper spostarlo in alto

1

Aggiunta

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

è la soluzione perfetta directory sql.ora .. \ product \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN


1

Domanda molto vecchia ma che fornisce alcune informazioni aggiuntive che potrebbero aiutare qualcun altro. Ho anche riscontrato lo stesso errore e stavo usando ojdbc14.jar con 12.1.0.2 Oracle Database. Sulla pagina web ufficiale di Oracle queste informazioni sono elencate che la versione supporta quali driver di database. Ecco il collegamento e sembra che con Oracle 12c e Java 7 o 8 la versione corretta sia ojdbc7.jar.

In ojdbc6.jar è per 11.2.0.4.


0

Il mio errore iniziale è: ORA-28040: nessuna eccezione del protocollo di autenticazione corrispondente

La mia versione DB è 12.2 (Solaris) e la versione client è 11.2 (Windows). Ho aggiunto di seguito sia nel server che nel client sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

durante la connessione, ho un nome utente e una password non validi, quindi ho ricreato la password (stessa password) nel database che ha risolto il mio problema.


0

Mentre per la maggior parte dei casi la sostituzione del vaso del driver ojdbc sarà la soluzione, il mio caso era diverso.

Se sei certo di utilizzare il driver ojdbc corretto. Ricontrolla se ti stai effettivamente connettendo al database che stai pensando di essere. Nel mio caso la configurazione jdbc (in Tomcat / conf) puntava a un database diverso con una versione Oracle diversa.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.