Často se setkáváme s chybou ORA-28000 účet je uzamčen v každodenních činnostech. To se může stát jak u vývojářů, tak u DBA.

Důvody
To se může stát z několika důvodů
A. Oracle DBA úmyslně uzamkl účet
alter user <username> account lock; select status from dba_users where username='&1';
b. Mnohokrát bylo zadáno nesprávné heslo, což vedlo k uzamčení. Počet FAILED_LOGIN_ATTEMPTS lze zjistit pomocí níže uvedeného dotazu
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
Povolením auditování
můžeme také zjistit, kde se všechny neúspěšné pokusy o přihlášení odehrályaudit 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
Řešení
V případě, že se tak nestalo záměrně, můžeme problém vyřešit pomocí níže uvedeného přístupu
(1) Odemkněte účet pomocí níže uvedeného příkazu
alter user <username> account unlock;
Před provedením výše uvedeného dotazu se ujistěte, že je odstraněn důvod chyby. V opačném případě dojde k chybě znovu.
(2) Pokud je důvod chyby neznámý a dokud nebude problém vyřešen, můžeme vytvořit další profil s neomezeným počtem FAILED_LOGIN_ATTEMPTS
SQL> CREATE PROFILE TECH_TMP LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED ;
A přiřaďte jej uživateli, který má problém
alter user scott profile TECH_TMP; alter user scott account unlock;
Jakmile je zjištěna příčina a známe zdroj, odkud pochází neplatné heslo, můžeme změnit uživatelský profil na předchozí a nově vytvořený profil zahodit
alter user scott profile TECH_PW; drop profile TECH_TMP;
Doufám, že se vám tento příspěvek na ORA-28000 líbí, účet je uzamčen a pomůže vám ve vašich každodenních činnostech. Poskytněte nám prosím zpětnou vazbu
Související články
ORA-01017:neplatné uživatelské jméno/heslo; přihlášení odepřeno
Jak se přihlásit jako uživatel bez změny hesla v databázi Oracle
Vytvořit uživatele v Oracle
Jak vytvořit uživatele a role v databázi Oracle 12c
ORA-00904
ORA-28002
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4003.htm