Oracle 21c – Desupport of SEC_CASE_SENSITIVE_LOGON

Estou realizando alguns testes em um ambiente 21c e precisei criar o usuário HR para dar algumas cargas, até aqui bem simples né?

Primeiro criei o usuário e dei as permissões necessárias:

CREATE USER HR IDENTIFIED BY SenhA_Segura#123
GRANT CREATE SESSION, RESOURCE TO HR;
ALTER USER HR QUOTA UNLIMITED ON USERS;

Mas ao tentar fazer login, recebi o famoso erro ORA-01017 que indica que a senha (ou usuário) passada está errada:

SQL> conn HR/SenhA_Segura#123
ERROR:
ORA-01017: invalid username/password; logon denied

Pessoal, uma correção aqui apontada pelo Rodrigo Jorge , ao fazer o conn dentro de uma conexão do sqlplus, mesmo tendo executado o alter session set container=xxx; ele vai tentar se autenticar no CDB e por isso esse erro de senha inválida, o teste deveria ter sido feito usando uma entrada tns por exemplo.

Mas como minha senha pode estar errada se acabei de criar o usuário com essa mesma senha? Minha primeira reação foi olhar o parâmetro SEC_CASE_SENSITIVE_LOGON :

SQL> show parameter logon
SQL> show parameter case
SQL> show parameter sec

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_securefile			     string	 PREFERRED
optimizer_secure_view_merging	     boolean	 TRUE
sec_max_failed_login_attempts	     integer	 3
sec_protocol_error_further_action    string	 (DROP,3)
sec_protocol_error_trace_action      string	 TRACE
sec_return_server_release_banner     boolean	 FALSE
sql92_security			     boolean	 TRUE
SQL> 

Note que nas duas primeiras vezes, nada foi retornado, será que eu poderia estar digitando errado? Talvez alguma diferença por estar no pdb e não no cdb ? Foi ai que achei essa página aqui que fala de parâmetros que foram descontinuados na versão 21c, avançando na documentação, outros parâmetros também foram removidos:

Desupport of UNIFIED_AUDIT_SGA_QUEUE_SIZE
Starting in Oracle Database 21c, the initialization parameter UNIFIED_AUDIT_SGA_QUEUE_SIZE is desupported.

Desupport of IGNORECASE Parameter for Passwords
Starting in Oracle Database 21c, the IGNORECASE parameter for the orapwd file is desupported. All newly created password files are case-sensitive.

Desupport of DISABLE_DIRECTORY_LINK_CHECK
Starting in Oracle Database 21c, the DISABLE_DIRECTORY_LINK_CHECK parameter is desupported, with no replacement.

Desupport of REMOTE_OS_AUTHENT Parameter
The Oracle Database initialization parameter REMOTE_OS_AUTHENT has been removed from Oracle Database 21c.

Desupport of SEC_CASE_SENSITIVE_LOGON
The SEC_CASE_SENSITIVE_LOGON parameter is desupported in Oracle Database 21c.

Voltando ao nosso problema, antigamente você poderia apenas alterar o parâmetro SEC_CASE_SENSITIVE_LOGON para que o case da senha fosse ignorado e isso geralmente resolvia o problema (nas versões 12c, precisava unir ele ao parâmetro do sqlnet) , agora na versão 21c, precisamos ajustar apenas o parâmetro SQLNET.ALLOWED_LOGON_VERSION_SERVER no nosso arquivo sqlnet.ora

Olhando na DBA_USERS, a senha do nosso usuário já estava definido como 11G/12C:

A partir da versão 12.2 o valor padrão para o ALLOWED_LOGON_VERSION_SERVER é 12, ou seja, usuários criados nesse banco poderiam usar uma senha com ou sem case, mas na prática eu não consegui fazer login de jeito nenhum, por isso eu tive que definir o SEC_CASE_SENSITIVE_LOGON para 12, dessa forma o login foi feito com sucesso, caso queira forçar a senha para o padrão mais novo(e seguro) sugiro colocar o valor como 12a, mas tome muito cuidado pois ao fazer isso, você perde a capacidade de fazer login com formatos mais antigos de senha:

Aqui nesse site você tem toda a explicação dos valores e seus respectivos padrões: https://docs.oracle.com/en/database/oracle/oracle-database/21/netrf/parameters-for-the-sqlnet.ora.html#GUID-1FA9D26C-4D97-4D1C-AB47-1EC234D924AA recomendo dar uma olhada nele e também nesse post do Mike Dietrich: https://mikedietrichde.com/2017/04/25/what-happens-to-password_versions-during-an-upgrade-to-oracle-12-2/ onde ele também explica esse comportamento.

chevron_left
chevron_right