原創文章地址:https://blog.csdn.net/zdw_wym/article/details/38066745
? ? Oracle提示錯誤消息 ORA-28001: the password has expired,是由于Oracle11G的新特性所致,Oracle11G創建用戶時缺省密碼過期限制是180天(即6個月),如果超過180天用戶密碼未做修改則該用戶無法登錄。
?
? ? ? ?Oracle公司是為了數據庫的安全性默認在11G中引入了這個默認功能,但是這個默認的功能很容易被DBA或者是開發人員給疏忽,一旦密碼180天未修改過,就會出現這樣的問題。
?
? ? ? ? 解決方法可通過如下SQL語句:
? ? ?? SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
? ? ? ? 查詢密碼的有效期設置,LIMIT字段是密碼有效天數。在密碼將要過期或已經過期時可通過如下語句進行修改密碼,密碼修改后該用戶可正常連接數據庫。
? ? ? ? ALTER USER 用戶名 IDENTIFIED BY 密碼;?
? ? ? ? 修改密碼后,會發現該賬戶會被鎖定,這時需要通過如下SQL語句進行解鎖:
? ? ? ??alter user 用戶名?account unlock;
? ? ? ? 如果想去除180天的密碼生存周期的限制可通過如下SQL語句將其關閉
? ? ? ? ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
? ? ? ? 如上SQL語句將口令有效期默認值180天修改成了“無限制”。但是出于數據庫安全性考慮,不建議將PASSWORD_LIFE_TIME值設置成UNLIMITED,建議大家定期修改數據庫用戶口令。
?