quinta-feira, 8 de maio de 2014

Oracle - ORA-01017 usando JDBC

ERRO:

root@appserver:/opt/resources/oracletest/jdbctool-1.0/bin# CLASSPATH=/opt/resources/oracletest/ojdbc5.jar ./jdbctool -u teste -p meuteste jdbc:oracle:thin:@10.0.1.16:1521/DB_MYAPP

Unable to connect to database: java.sql.SQLException: ORA-01017: invalid username/password; logon denied


SINTOMA: Ao integrar uma aplicação em um servidor de aplicação Java onde a comunicação seja estabelecida via JDBC ainda que usuário e senha estejam corretos e você consiga conectar através do SQLPlus o erro gerado no servidor de aplicação será o item mencionado no ERRO.


SOLUÇÃO: Existem duas formas de solucionar este erro, uma é atualizar seu JDBC para o ojdbc mais atual, outra é executar o comando abaixo como sys ou system na base alvo:

ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE; 


JUSTIFICATIVA: Por padrão o  Oracle11g ou superior vem configurado para senhas case_sensitive e o  ojdbc5(baseado em client 10g) ou inferior enviam as senhas em maiúsculo, logo o erro e a solução de ou atualizar o ojdbc6(baseado em client 11g) ou a desativação do recurso.

SUGESTÃO: Atualizar o driver JDBC.