Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como resolver ORA-28000 a conta está bloqueada


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