ORA-28040: Sin excepción de protocolo de autenticación coincidente


92

Estoy tratando de conectar mi proyecto de Grails a Oracle databse ( Oracle 12c ) en el sistema Windows (8). Sin embargo, cada vez que ejecuto mi aplicación, obtengo la siguiente excepción:

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

De acuerdo con la sugerencia de Internet, también intenté editar mi *.oraarchivo pero no funciona.

Agregué el siguiente fragmento en el sqlnet.oraarchivo:

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

Aquí intenté asignar (10,11,12) pero ninguno de ellos funciona.

¿Alguien puede ayudarme con esto?


¿Qué sqlnet.ora editó, el del cliente o el del servidor?
Jon Heller

1
No estoy seguro porque soy un novato. Sin embargo, el archivo que edité solo contenía algunas líneas. Contenía: '# sqlnet.ora Archivo de configuración de red: E: \ app \ adhikariaman01 \ product \ 12.1.0 \ dbhome_1 \ network \ admin \ sqlnet.ora # Generado por las herramientas de configuración de Oracle. # Este archivo es realmente generado por netca. Pero si los clientes # eligen instalar "Sólo software", este archivo no existirá y sin la # autenticación nativa, no podrán conectarse a la base de datos en NT. SQLNET.AUTHENTICATION_SERVICES = (NTS) NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT) '
Aman Adhikari

2
Suena como el archivo del servidor de la base de datos. Estos problemas pueden ser realmente difíciles. ¿Puede conectarse al servidor de la base de datos utilizando SQL * Plus? ¿Está utilizando un cliente ligero JDBC y, si es así, puede probar un cliente pesado?
Jon Heller

Sí, estoy conectado a través de SQL * plus
Aman Adhikari

1
Resolví el problema :). Eliminé el archivo ojdbc14.jar y usé ojdbc6.jar en su lugar y funcionó para mí. De todos modos gracias por contestar.
Aman Adhikari

Respuestas:


152

He eliminado el ojdbc14.jar archivo y se utiliza ojdbc6.jar lugar y funcionó para mí


3
experimenta el mismo problema al intentar conectar Oracle 12c desde el hervidor pentaho. eliminado ojdbc14.jar y está funcionando perfectamente!
lourdh

17
Al menos una breve explicación de por qué esto debería funcionar sería muy útil.
Yuriy Kravets

8
Para mí, el cambio a ojdbc6.jar u ojdbc7.jar aún falló porque había estado configurando constantemente: oracle.jdbc.thinLogonCapability"="o3"lo que ya no tiene que hacer contra Oracle 12c. Espero que pueda ayudar a alguien más
James Tobin

3
Eso funciona perfectamente después de eliminar ojdbc14.jar y usar ojdbc6.jar
Sam

1
@YuriyKravets El número 14 en ojdbc14.jar y el número 6 en ojdbc6.jar se refieren a la versión de JDK para la que fueron escritos. Si abre el archivo de manifiesto de ojdbc14.jar , dice: Specification-Title: "Clases de controlador JDBC de Oracle para usar con JDK1.4" De manera similar, ojdbc6.jar admite la implementación de JDK1.6.
Maverick

55

Aquí hay un texto que encontré en Expert-Exchange :

Error 14575666

En 12.1, el valor predeterminado para el parámetro SQLNET.ALLOWED_LOGON_VERSION se ha actualizado a 11. Esto significa que los clientes de base de datos que utilizan controladores ligeros JDBC anteriores a 11g no pueden autenticarse en los servidores de base de datos 12.1 a menos que el parámetro SQLNET.ALLOWED_LOGON_VERSION esté establecido en el antiguo valor predeterminado de 8.

Esto hará que la creación de una base de datos Oracle RAC 10.2.0.5 utilizando DBCA falle con el ORA-28040: No hay un error de protocolo de autenticación coincidente en los entornos 12.1 Oracle ASM y Oracle Grid Infrastructure.

Solución alternativa: establezca SQLNET.ALLOWED_LOGON_VERSION = 8 en el archivo oracle / network / admin / sqlnet.ora.


Solo como referencia: esto funcionó para mí al no eliminar el archivo ojdbc14.jar y usar ojdbc6.jar
rageit

4
sí, en mi caso esto resolvió el problema, pero ocurrió otro: nombre de usuario / contraseña inválidos. Por cierto, estaba intentando conectarme desde Oracle jdeveloper 10 a la base de datos Oracle 12c. así que esto dio la respuesta: stackoverflow.com/questions/14476875/… finalmente tuve que: 1) cambiar SQLNET.ALLOWED_LOGON_VERSION a 8 2) SQLNET.AUTHENTICATION_SERVICES a (NONE) 3) ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 4) ALTER USER XX IDENTIFICADO POR PW (para volver a guardar la contraseña ahora que cambiamos la distinción entre mayúsculas y minúsculas)
hello_earth

Tarde para la fiesta, pero también he confirmado esta solución. Yo tenía que poner mi version = 8 a pesar de que yo estaba corriendo JDBC 11 - nada más nuevo que trabajaron 8.
Keith

Estoy usando un servidor de base de datos remoto, no tengo acceso a la máquina, solo puedo conectarme a la base de datos usando SQL Developer (sin error), pero mi aplicación (implementada en Tomcat) arroja este error. He cambiado la configuración en mi máquina local, no funciona. ¿Tengo que modificar la configuración en la máquina del servidor?
Gunwant

5

Resolví este problema usando ojdbc8.jar. Oracle 12c es compatible con ojdbc8.jar


5

Esto excepto para agregar lo siguiente a sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

Si recibe el error "ORA-01017: nombre de usuario / contraseña inválidos; inicio de sesión denegado", debe volver a crear su contraseña.


Si recibe el error "ORA-01017: nombre de usuario / contraseña inválidos; inicio de sesión denegado", debe volver a crear su contraseña. ¡Esto fue un salvavidas! Gracias
Thomas VC


3

Estaba usando eclipse y después de probar todas las otras respuestas, no funcionó para mí. Al final, lo que funcionó para mí fue mover ojdb7.jarhacia arriba en Build Path. Esto ocurre cuando varios frascos tienen las mismas clases en conflicto.

  1. Seleccionar proyecto en Project Explorer
  2. Clic derecho en Project -> Build Path -> Configure Build Path
  3. Vaya a la Order and Exportpestaña y seleccioneojdbc.jar
  4. Haga clic en el botón TOPpara moverlo hacia arriba

1

Añadiendo

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

es la solución perfecta directorio sql.ora .. \ product \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN


1

Pregunta muy antigua pero que proporciona información adicional que puede ayudar a otra persona. También encontré el mismo error y estaba usando ojdbc14.jar con 12.1.0.2 Oracle Database. En la página web oficial de Oracle, esta información se enumera qué versión admite qué controladores de base de datos. Aqui esta el link y parece que con Oracle 12c y Java 7 u 8 la versión correcta es ojdbc7.jar.

En el ojdbc6.jar es para 11.2.0.4.


0

Mi error inicial es: ORA-28040: No hay excepción de protocolo de autenticación coincidente

Mi versión de base de datos es 12.2 (Solaris) y la versión de cliente es 11.2 (Windows). He agregado a continuación tanto en el servidor como en el cliente sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

mientras me conecto, tengo un nombre de usuario y una contraseña no válidos, por lo tanto, he recreado la contraseña (la misma contraseña) en la base de datos que resolvió mi problema.


0

Si bien para la mayoría de los casos reemplazar el jar del controlador ojdbc será la solución, mi caso fue diferente.

Si está seguro de que está utilizando el controlador ojdbc correcto. Verifique dos veces si realmente se está conectando a la base de datos que está pensando. En mi caso, la configuración de jdbc (en Tomcat / conf) apuntaba a una base de datos diferente que tenía una versión de Oracle diferente.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.