Muitas vezes nos deparamos com o erro ORA-28000, a conta está bloqueada nas atividades do dia a dia. Isso pode acontecer tanto com desenvolvedores quanto com DBA.
Motivos
Isso pode acontecer por vários motivos
uma. O Oracle DBA bloqueou a conta propositalmente
alter user <username> account lock; select status from dba_users where username='&1';
b. A senha incorreta foi tentada muitas vezes resultando em bloqueio. O número de FAILED_LOGIN_ATTEMPTS pode ser encontrado usando a consulta abaixo
select username , profile from dba_users where username='&1'; ----- ------ SCOTT TECH_PW select * from dba_profiles where profile='&1' and resource_name='FAILED_LOGIN_ATTEMPTS'; SQL> select RESOURCE_NAME,resource_type,LIMIT from dba_profiles where PROFILE='TECH_PW' ; RESOURCE_NAME RESOURCE LIMIT ----------- ------- ----- COMPOSITE_LIMIT KERNEL DEFAULT SESSIONS_PER_USER KERNEL DEFAULT CPU_PER_SESSION KERNEL DEFAULT CPU_PER_CALL KERNEL DEFAULT LOGICAL_READS_PER_SESSION KERNEL DEFAULT LOGICAL_READS_PER_CALL KERNEL DEFAULT IDLE_TIME KERNEL DEFAULT CONNECT_TIME KERNEL DEFAULT PRIVATE_SGA KERNEL DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 5 PASSWORD_LIFE_TIME PASSWORD 90 PASSWORD_REUSE_TIME PASSWORD UNLIMITED PASSWORD_REUSE_MAX PASSWORD 10 PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT PASSWORD_LOCK_TIME PASSWORD DEFAULT PASSWORD_GRACE_TIME PASSWORD DEFAULT Default values can be found by querying the default profile SQL> select RESOURCE_NAME,resource_type,LIMIT from dba_profiles where PROFILE='DEFAULT'; RESOURCE_NAME RESOURCE LIMIT ------------- ------- ------ COMPOSITE_LIMIT KERNEL UNLIMITED SESSIONS_PER_USER KERNEL UNLIMITED CPU_PER_SESSION KERNEL UNLIMITED CPU_PER_CALL KERNEL UNLIMITED LOGICAL_READS_PER_SESSION KERNEL UNLIMITED LOGICAL_READS_PER_CALL KERNEL UNLIMITED IDLE_TIME KERNEL UNLIMITED CONNECT_TIME KERNEL UNLIMITED PRIVATE_SGA KERNEL UNLIMITED FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED PASSWORD_LIFE_TIME PASSWORD UNLIMITED PASSWORD_REUSE_TIME PASSWORD UNLIMITED PASSWORD_REUSE_MAX PASSWORD UNLIMITED PASSWORD_VERIFY_FUNCTION PASSWORD NULL PASSWORD_LOCK_TIME PASSWORD UNLIMITED PASSWORD_GRACE_TIME PASSWORD UNLIMITED
Também podemos encontrar onde todas as tentativas de login com falha ocorreram ativando a auditoria
audit session whenever not successful; select OS_USERNAME,USERNAME,USERHOST,to_char(timestamp,'MM-DD-YYYY HH24:MI:SS'), returncode from dba_audit_trail where returncode > 0
Solução
Caso isso não tenha acontecido propositalmente, podemos resolver o problema usando a abordagem abaixo de acordo
(1) Desbloqueie a conta usando o comando abaixo
alter user <username> account unlock;
Antes de executar a consulta acima, verifique se o motivo do erro foi resolvido. Caso contrário, o erro ocorrerá novamente.
(2) Se o motivo do erro for desconhecido e até que o problema seja resolvido, podemos criar outro perfil com FAILED_LOGIN_ATTEMPTS ilimitado
SQL> CREATE PROFILE TECH_TMP LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED ;
E atribua-o ao usuário que está enfrentando o problema
alter user scott profile TECH_TMP; alter user scott account unlock;
Uma vez que a causa é estabelecida e sabemos a fonte de onde vem a senha inválida, podemos alterar o perfil do usuário para o anterior e descartar o perfil recém-criado
alter user scott profile TECH_PW; drop profile TECH_TMP;
Espero que gostem deste post no ORA-28000 a conta está bloqueada e vai ajudar no seu dia a dia. Por favor, forneça feedback sobre isso
Artigos relacionados
ORA-01017:nome de usuário/senha inválidos; logon negado
Como fazer login como usuário sem alterar a senha no banco de dados Oracle
Criar usuário no Oracle
Como criar usuários e funções no banco de dados Oracle 12c
ORA-00904
ORA-28002
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4003.htm