Często napotykamy błąd ORA-28000 konto jest zablokowane w codziennych czynnościach. Może się to zdarzyć zarówno z programistami, jak i DBA.
Powody
Może się to zdarzyć z wielu powodów
a. Oracle DBA celowo zablokował konto
alter user <username> account lock; select status from dba_users where username='&1';
b. Wielokrotnie próbowano użyć nieprawidłowego hasła, co spowodowało zablokowanie. Liczbę FAILED_LOGIN_ATTEMPTS można znaleźć za pomocą poniższego zapytania
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
Możemy również sprawdzić, gdzie miały miejsce wszystkie nieudane próby logowania, włączając audyt
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
Rozwiązanie
Jeśli nie stało się to celowo, możemy rozwiązać problem, stosując odpowiednio poniższe podejście
(1) Odblokuj konto za pomocą poniższego polecenia
alter user <username> account unlock;
Przed wykonaniem powyższego zapytania upewnij się, że przyczyna błędu została wyjaśniona. W przeciwnym razie błąd się powtórzy.
(2) Jeśli przyczyna błędu jest nieznana i dopóki problem nie zostanie rozwiązany, możemy utworzyć kolejny profil z nieograniczoną liczbą FAILED_LOGIN_ATTEMPTS
SQL> CREATE PROFILE TECH_TMP LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED ;
I przypisz go użytkownikowi, który ma problem
alter user scott profile TECH_TMP; alter user scott account unlock;
Po ustaleniu przyczyny i poznaniu źródła, z którego pochodzi nieprawidłowe hasło, możemy zmienić profil użytkownika na poprzedni i usunąć nowo utworzony profil
alter user scott profile TECH_PW; drop profile TECH_TMP;
Mam nadzieję, że spodobał Ci się ten post na ORA-28000 konto jest zablokowane i pomoże w codziennych czynnościach. Przekaż opinię na ten temat
Powiązane artykuły
ORA-01017:nieprawidłowa nazwa użytkownika/hasło; odmowa logowania
Jak zalogować się jako użytkownik bez zmiany hasła w bazie danych Oracle
Utwórz użytkownika w Oracle
Jak tworzyć użytkowników i role w bazie danych Oracle 12c
ORA-00904
ORA-28002
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4003.htm