Oracle
 sql >> Database >  >> RDS >> Oracle

Come risolvere ORA-28000 l'account è bloccato

Spesso ci imbattiamo nell'errore ORA-28000 l'account è bloccato nelle attività quotidiane. Questo può accadere sia con gli sviluppatori che con il DBA.

Motivi

Ciò può accadere per diversi motivi

un. Oracle DBA ha bloccato di proposito l'account

alter user <username> account lock;
select status from dba_users where username='&1';

b. La password errata è stata tentata molte volte con conseguente blocco. Il numero di FAILED_LOGIN_ATTEMPTS  può essere trovato utilizzando la query seguente

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

Possiamo anche scoprire dove si sono verificati tutti i tentativi di accesso non riusciti abilitando il controllo

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

Soluzione

Nel caso in cui ciò non sia accaduto di proposito, possiamo risolvere il problema utilizzando l'approccio seguente di conseguenza

(1) Sblocca l'account usando il comando sottostante

alter user <username> account unlock;

Prima di eseguire la query precedente assicurati che il motivo dell'errore sia stato risolto.Altrimenti l'errore si verificherà di nuovo.

(2) Se il motivo dell'errore è sconosciuto e finché il problema non viene risolto, possiamo creare un altro profilo con FAILED_LOGIN_ATTEMPTS illimitati

SQL> CREATE PROFILE TECH_TMP LIMIT
FAILED_LOGIN_ATTEMPTS UNLIMITED
;

E assegnalo all'utente che sta riscontrando il problema

alter user scott profile TECH_TMP;
alter user scott account unlock;

Una volta stabilita la causa e conoscendo l'origine da cui proviene la password non valida, possiamo cambiare il profilo utente con quello precedente ed eliminare il profilo appena creato

alter user scott profile TECH_PW;
drop profile TECH_TMP;

Spero che questo post su ORA-28000 ti piaccia, l'account è bloccato e ti aiuterà nelle tue attività quotidiane. Si prega di fornire feedback su di esso

Articoli correlati

ORA-01017:nome utente/password non validi; accesso negato
Come accedere come utente senza modificare la password nel database Oracle
Crea utente in Oracle
Come creare utenti e ruoli nel database Oracle 12c
ORA-00904
ORA-28002
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4003.htm