Leonardo Pedroso Costa
MongoDB | SQL Server | Oracle

Resolvendo o erro “ORA-01017 Invalid Username/Password logon denied” ao atualizar o banco de 11g para 12c

Recentemente fizemos uma migração de versão onde saímos do Oracle 11g (11.2.0.4) para o 12c (12.2.0.1). Ao tentar logar na nova instância os usuários receberam o seguinte erro: “ORA-01017: invalid username/password; logon denied” conforme imagem abaixo:

 

 

 

 

 

 

Tanto o usuário quanto a senha informada estavam corretos e mesmo assim o erro persistia. Foi necessário checar na view DBA_USERS como estavam as versões de password dos usuários:

[code lang=”sql”]

SYS@ORCL12 AS SYSDBA> select count(*), password_versions from dba_users group by password_versions;

COUNT(*) PASSWORD_VERSIONS
———- ——–
1
132 10G
293 10G 11G

[/code]

Podemos ver que as senhas continuam com os padrões da versão anterior (case sensitive 10g e case insentive 10g 11g), motivo pelo qual o Oracle 12c não permitia o logon.

 

 

A solução envolve duas etapas, que são sugeridas abaixo:

Alterar o parâmetro SEC_CASE_SENSITIVE_LOGON para false! Por default ele vem setado como true e considera que as senhas são CASE_SENSITIVE. Alterando para false as senhas serão consideradas como CASE_INSENSITIVE:

[code lang=”sql”]

SYS@ORCL12 AS SYSDBA> ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE SCOPE = BOTH;

System altered.

[/code]

Depois de alterado, tente logar novamente com o usuário e senha! Caso ainda não consiga logar, é preciso alterar o arquivo SQLNET.ORA no $ORACLE_HOME do seu banco de dados com as seguintes configurações:

[code lang=”sql”]

# Generated by Oracle configuration tools.
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

[/code]

Após realizar o procedimento acima os usuários conseguiram logar normalmente na base, bem como os sistemas voltaram a funcionar perfeitamente.

MAS ATENÇÃO!!!

Essas configurações fazem que o protocolo de autenticação do Oracle seja nivelado para versão 10! Vale lembrar que isso é apenas um paliativo até que as senhas dos usuários sejam atualizadas para a versão 12c.

Essa atualização pode ser realizada com o simples comando abaixo, alterando a senha para o mesmo valor atual e deve ser executada para todos os usuários do banco:

[code lang=”sql”]

SYS@ORCL12 AS SYSDBA> alter user LEONARDO identified by "L&0N@RD0";

SYS@ORCL12 AS SYSDBA> select username, password_versions from dba_users where username = ‘LEONARDO’;

USERNAME PASSWORD
—————————— ——–
LEONARDO 10G 11G <strong>12C</strong>

[/code]

Após atualizar as senhas de seus usuários para a versão 12c, altere no SQLNET.ORA os parâmetros abaixo com os seguintes valores:

[code lang=”sql”] # Generated by Oracle configuration tools.
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=12
SQLNET.ALLOWED_LOGON_VERSION_SERVER=12
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
[/code]

Boa sorte nas suas migrações!

 

Leonardo Pedroso

Leonardo Pedroso

Profissional de TI experiência em administração de banco de dados: SQL Server 2000 a 2019, Oracle 11g a 19c, PostgreSQL, MySQL, MongoDB, Cassandra. Atua realizando análise de desempenho, DR e HA, implantação, administração de banco de dados em cluster e implementação de projetos de banco de dados NoSQL (MongoDB, Cassandra), bem como automação de processos utilizando Shell script, Powershell (dbatools), e players de Cloud: Azure e Aws.