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