ORA-28040: Nenhuma exceção de protocolo de autenticação correspondente


89

Estou tentando conectar meu projeto grails ao banco de dados Oracle ( Oracle 12c ) no sistema windows (8). No entanto, sempre que executo meu aplicativo, recebo a seguinte exceção:

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 acordo com sugestão da internet também tentei editar meu *.oraarquivo, mas não está funcionando.

Eu adicionei o seguinte snippet no sqlnet.oraarquivo:

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

Aqui eu tentei atribuir (10,11,12), mas nenhum deles está funcionando.

Alguém por favor pode me ajudar com isso ?


Qual sqlnet.ora você editou, no cliente ou no servidor?
Jon Heller

1
Não tenho certeza, pois sou novato nisso. No entanto, o arquivo que editei continha apenas algumas linhas. Continha: '# sqlnet.ora Arquivo de configuração de rede: E: \ app \ adhikariaman01 \ product \ 12.1.0 \ dbhome_1 \ network \ admin \ sqlnet.ora # Gerado pelas ferramentas de configuração Oracle. # Este arquivo é realmente gerado pelo netca. Mas se os clientes escolherem # instalar "Somente Software", esse arquivo não existirá e sem a autenticação # nativa, eles não poderão se conectar ao banco de dados no NT. SQLNET.AUTHENTICATION_SERVICES = (NTS) NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT) '
Aman Adhikari

2
Isso soa como o arquivo do servidor de banco de dados. Esses problemas podem ser realmente difíceis. Você pode se conectar ao servidor de banco de dados usando SQL * Plus? Você está usando um thin client JDBC e, em caso afirmativo, pode tentar um thick client?
Jon Heller

Sim, estou conectado via SQL * plus
Aman Adhikari

1
Resolvi o problema :). Excluí o arquivo ojdbc14.jar e usei ojdbc6.jar, e funcionou para mim. De qualquer forma, obrigado por responder.
Aman Adhikari

Respostas:


148

Excluí o arquivo ojdbc14.jar e usei ojdbc6.jar e funcionou para mim


3
ter o mesmo problema ao tentar conectar o Oracle 12c da chaleira pentaho. removido ojdbc14.jar e está funcionando perfeitamente!
lourdh

16
Pelo menos uma breve explicação de por que isso deve funcionar seria muito útil.
Yuriy Kravets

8
Para mim, mudar para ojdbc6.jar ou ojdbc7.jar ainda falhou porque eu estava constantemente configurando: o oracle.jdbc.thinLogonCapability"="o3"que você não precisa mais fazer no oracle 12c. Espero que possa ajudar alguém
James Tobin

3
Isso funciona perfeitamente depois de excluir ojdbc14.jar e usar ojdbc6.jar
Sam

1
@YuriyKravets O número 14 em ojdbc14.jar e o número 6 em ojdbc6.jar referem-se à versão do JDK para a qual foram escritos. Se você abrir o arquivo de manifesto ojdbc14.jar , ele diz: Specification-Title: "Classes de driver Oracle JDBC para uso com JDK1.4" Da mesma forma, ojdbc6.jar oferece suporte à implementação JDK1.6.
Maverick de

54

Aqui está um texto que encontrei em experts-exchange :

Bug 14575666

Em 12.1, o valor padrão para o parâmetro SQLNET.ALLOWED_LOGON_VERSION foi atualizado para 11. Isso significa que os clientes de banco de dados que usam drivers thin JDBC pré-11g não podem se autenticar em servidores de banco de dados 12.1, a menos que o parâmetroSQLNET.ALLOWED_LOGON_VERSION seja definido com o padrão antigo de 8.

Isso fará com que a criação do banco de dados Oracle RAC 10.2.0.5 usando DBCA falhe com o ORA-28040: Erro de protocolo de autenticação sem correspondência em ambientes 12.1 Oracle ASM e Oracle Grid Infrastructure.

Solução alternativa: defina SQLNET.ALLOWED_LOGON_VERSION = 8 no arquivo oracle / network / admin / sqlnet.ora.


Apenas para referência: funcionou para mim, não excluindo o arquivo ojdbc14.jar e usando ojdbc6.jar
rageit

4
sim, no meu caso isso resolveu o problema, mas ocorreu outro: nome de usuário / senha inválidos. btw, eu estava tentando conectar do oracle jdeveloper 10 ao banco de dados oracle 12c. então esta foi a resposta: stackoverflow.com/questions/14476875/… finalmente teve que: 1) alterar SQLNET.ALLOWED_LOGON_VERSION para 8 2) SQLNET.AUTHENTICATION_SERVICES para (NONE) 3) ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 4) ALTER USER XX IDENTIFICADO POR PW (para salvar novamente a senha agora que alteramos a
distinção

Atrasado para a festa, mas também confirmei essa correção. I teve para definir a minha versão = 8, embora eu estava correndo JDBC 11 - nada mais novo do que 8 funcionou.
Keith de

Estou usando um servidor de banco de dados remoto, não tenho acesso à máquina, posso apenas conectar ao banco de dados usando o SQL Developer (sem erro), mas meu aplicativo (implantado no Tomcat) gera este erro. Eu mudei as configurações na minha máquina local, ela não está funcionando. Tenho que modificar as configurações na máquina do servidor?
Gunwant

5

Exceto para adicionar o seguinte ao sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

Se você receber o erro "ORA-01017: nome de usuário / senha inválidos; logon negado", será necessário recriar sua senha.


Se você receber o erro "ORA-01017: nome de usuário / senha inválidos; logon negado", será necessário recriar sua senha. Este foi um salva-vidas !! Obrigado
Thomas VC

4

Resolvi esse problema usando ojdbc8.jar. Oracle 12c é compatível com ojdbc8.jar



3

Eu estava usando o eclipse e depois de tentar todas as outras respostas, não funcionou para mim. No final, o que funcionou para mim foi mover ojdb7.jarpara o topo no Build Path. Isso ocorre quando vários jars têm as mesmas classes conflitantes.

  1. Selecione o projeto em Project Explorer
  2. Clique com o botão direito em Project -> Build Path -> Configure Build Path
  3. Vá para a Order and Exportguia e selecioneojdbc.jar
  4. Clique no botão TOPpara movê-lo para o topo

1

Adicionando

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

é a solução perfeita para o diretório sql.ora .. \ product \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN


0

Meu erro inicial é: ORA-28040: Nenhuma exceção de protocolo de autenticação correspondente

Minha versão do banco de dados é 12.2 (Solaris) e a versão do cliente é 11.2 (windows). Eu adicionei abaixo no servidor e no cliente sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

durante a conexão, obtive nome de usuário e senha inválidos, portanto, recriei a senha (mesma senha) no banco de dados, o que resolveu meu problema.


0

Embora, na maioria dos casos, substituir o jar do driver ojdbc seja a solução, meu caso era diferente.

Se você tiver certeza de que está usando o driver ojdbc correto. Verifique novamente se você está realmente se conectando ao banco de dados que pensa estar. No meu caso, a configuração jdbc (em Tomcat / conf) estava apontando para um banco de dados diferente que tinha uma versão Oracle diferente.


0

Pergunta muito antiga, mas fornecendo algumas informações adicionais que podem ajudar outra pessoa. Também encontrei o mesmo erro e estava usando ojdbc14.jar com o banco de dados Oracle 12.1.0.2. Na página web oficial da Oracle, esta informação está listada com qual versão suporta quais drivers de banco de dados. Aqui está o link e parece que com Oracle 12c e Java 7 ou 8, a versão correta é ojdbc7.jar.

No ojdbc6.jar é para 11.2.0.4.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.