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