Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So lösen Sie ORA-28000 Das Konto ist gesperrt

Wir stoßen oft auf den Fehler ORA-28000, das Konto ist gesperrt bei alltäglichen Aktivitäten. Dies kann sowohl bei Entwicklern als auch bei DBAs passieren.

Gründe

Dies kann mehrere Gründe haben

a. Oracle DBA hat das Konto absichtlich gesperrt

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

b. Es wurde viele Male versucht, ein falsches Passwort einzugeben, was zur Sperrung führte. Die Anzahl der FAILED_LOGIN_ATTEMPTS  kann mit der folgenden Abfrage ermittelt werden

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

Wir können auch herausfinden, wo alle fehlgeschlagenen Anmeldeversuche aufgetreten sind, indem wir die Überwachung aktivieren

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

Lösung

Falls dies nicht absichtlich geschehen ist, können wir das Problem mit dem folgenden Ansatz entsprechend lösen

(1) Entsperren Sie das Konto mit dem folgenden Befehl

alter user <username> account unlock;

Bevor Sie die obige Abfrage ausführen, stellen Sie sicher, dass die Ursache für den Fehler geklärt ist. Andernfalls tritt der Fehler erneut auf.

(2) Wenn der Grund für den Fehler unbekannt ist und bis das Problem behoben ist, können wir ein weiteres Profil mit unbegrenzten FAILED_LOGIN_ATTEMPTS erstellen

SQL> CREATE PROFILE TECH_TMP LIMIT
FAILED_LOGIN_ATTEMPTS UNLIMITED
;

Und weisen Sie es dem Benutzer zu, bei dem das Problem auftritt

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

Sobald die Ursache festgestellt ist und wir die Quelle kennen, aus der das ungültige Passwort stammt, können wir das Benutzerprofil auf das vorherige ändern und das neu erstellte Profil löschen

alter user scott profile TECH_PW;
drop profile TECH_TMP;

Ich hoffe, Ihnen gefällt dieser Beitrag auf ORA-28000, das Konto ist gesperrt und wird Ihnen bei Ihren täglichen Aktivitäten helfen. Bitte geben Sie Feedback dazu

Verwandte Artikel

ORA-01017:Ungültiger Benutzername/Passwort; Anmeldung verweigert
Wie man sich als Benutzer anmeldet, ohne das Passwort in der Oracle-Datenbank zu ändern
Benutzer in Oracle erstellen
Wie man Benutzer und Rollen in der Oracle-Datenbank 12c erstellt
ORA-00904
ORA-28002
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4003.htm