Често се натъкваме на грешка ORA-28000 акаунтът е заключен в ежедневните дейности. Това може да се случи както с разработчиците, така и с DBA.
Причини
Това може да се случи поради множество причини
а. Oracle DBA нарочно е заключил акаунта
alter user <username> account lock; select status from dba_users where username='&1';
б. Много пъти е правена грешна парола, което води до заключване. Броят на FAILED_LOGIN_ATTEMPTS може да бъде намерен с помощта на заявката по-долу
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
Можем също да открием къде са се случили всички неуспешни опити за влизане, като активираме одит
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
Решение
В случай, че това не се е случило умишлено, можем да разрешим проблема, използвайки съответно подхода по-долу
(1) Отключете акаунта с помощта на командата по-долу
alter user <username> account unlock;
Преди да изпълните горната заявка , уверете се, че причината за грешката е отстранена. В противен случай грешката ще се случи отново.
(2) Ако причината за грешката е неизвестна и докато проблемът не бъде разрешен, можем да създадем друг профил с неограничен брой FAILED_LOGIN_ATTEMPTS
SQL> CREATE PROFILE TECH_TMP LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED ;
И го присвоете на потребителя, който изпитва проблема
alter user scott profile TECH_TMP; alter user scott account unlock;
След като причината е установена и знаем източника, откъдето идва невалидна парола, можем да променим потребителския профил на предишен и да премахнем новосъздадения профил
alter user scott profile TECH_PW; drop profile TECH_TMP;
Надяваме се да ви хареса тази публикация на ORA-28000, акаунтът е заключен и ще ви помогне в ежедневните ви дейности. Моля, дайте отзиви за него
Свързани статии
ORA-01017:невалидно потребителско име/парола; отказано влизане
Как да влезете като потребител, без да променяте паролата в базата данни Oracle
Създайте потребител в Oracle
Как да създадете потребители и роли в базата данни Oracle 12c
ORA-00904
ORA-28002
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4003.htm