ORA-28001: the password has expired解決方法

xz43發表於2015-03-01
原來好好的應用突然不能訪問,日誌報錯,資料庫連線池異常,檢查發現連線池的狀態為掛起,如是reset,提示密碼過期。登入資料庫後臺,連線時同樣提示密碼過期:
ORA-28001: the password has expired
原來,這是由於Oracle11G的新特性所致。 Oracle11G建立使用者時預設密碼過期限制是180天(即6個月), 如果超過180天使用者密碼未做修改則該使用者無法登入。 Oracle公司是為了資料庫的安全性預設在11G中引入了這個預設功能,但是這個預設的功能很容易被DBA或者是開發人員給疏忽,一旦密碼180天未修改過,就會出現這樣的問題。
解決方法可透過如下SQL語句

注: 首先需要使用dba登入.
執行SQLPlus命令列工具, 輸入:
connect as sysdba;
輸入dba的使用者名稱和密碼後進行.


SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME'
查詢密碼的有效期設定,LIMIT欄位是密碼有效天數。
在密碼將要過期或已經過期時可透過如下語句進行修改密碼,密碼修改後該使用者可正常連線資料庫。
ALTER USER 使用者名稱 IDENTIFIED BY 密碼 ; 
 
如果想去除180天的密碼生存週期的限制可透過如下SQL語句將其關閉
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED 
如上SQL語句將口令有效期預設值180天修改成了“無限制”。但是出於資料庫安全性考慮,不建議將PASSWORD_LIFE_TIME值設定成UNLIMITED,建議大家定期修改資料庫使用者口令。


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

相關文章