oracle密碼過期處理辦法

賀子_DBA時代發表於2022-05-12

當賬號處於expired locked 無法登入,但是還不知道該使用者的密碼, 並且還不想修改成別的密碼,該如何解決呢?

  解決辦法

方法1: 允許登入的天數為無限

 密碼過期後也可修改profile中的password_grace_time控制使用的天數 alter profile default limit PASSWORD_GRACE_TIME UNLIMITED;

alter profile default limit PASSWORD_GRACE_TIME UNLIMITED; 讓這個允許登入的天數為無限!

方法2:直接修改密碼:-----建議使用這個方法!

1)查出使用者的密碼,注意是密文的
SQL> select user#,name,password from user$ where name ='SYSTEM';
USER# NAME                           PASSWORD
---------- ------------------------------ ------------------------------
5 SYSTEM                         2D594E86F93B17A1
2)使用如下方法修改賬號為原來的密碼:類似於mysql  as password的方式!
SQL> alter  user  system identified by values '2D594E86F93B17A1';
User altered.
3)再次檢視發現賬號狀態為0了
SQL> select user#, name, astatus from user$ where  name='SYSTEM';
USER# NAME                              ASTATUS
---------- ------------------------------ ----------
5 SYSTEM                                  0
注意:如下所示user$表中的ASTATUS的狀態值,對應的具體的狀態如下所示:
SQL> select * from user_astatus_map;
STATUS# STATUS
0 OPEN     1 EXPIRED     2 EXPIRED(GRACE)     4 LOCKED(TIMED)     8 LOCKED     5 EXPIRED & LOCKED(TIMED)     6 EXPIRED(GRACE) & LOCKED(TIMED)     9 EXPIRED & LOCKED

   10 EXPIRED(GRACE) & LOCKED

方法3:不建議使用!修改Oracle基表sys.user$
1)直接修改user$表的astatus值
update  user$  set  astatus=0  where  name='SYSTEM';
commit;
2)需要清理快取,因為這些賬號的狀態資訊,會在記憶體中快取起來;該操作有風險,不到萬不得已,切勿在生產上操作,如果必須使用這個方法,請先關閉業務或者在業務底下的時候快速執行,然後alter  system  checkpoint; 並且切換下redo  alter system switch logfile;
SQL> alter system flush shared_pool;

建議生產上設定概要檔案密碼策略永不過期:

alter profile default limit  PASSWORD_LIFE_TIME UNLIMITED;



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2893608/,如需轉載,請註明出處,否則將追究法律責任。

相關文章