當賬號處於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/,如需轉載,請註明出處,否則將追究法律責任。