今天,在登錄tomcat前台界面時發現不能登錄,查看log後發現原來是ORA-28001: the password has expired的錯誤,這個錯誤是由於Oracle11G的新特性所致, Oracle11G創建用戶時缺省密碼過期限制是180天(即6個月), 如果超過180天用戶密碼未做修改則該用戶無法登錄。
可通過如下SQL語句
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 ; ----(一般不推薦)
然後,進sys賬號,將該賬號解鎖:
alter user 用戶名 account unlock;
結果還沒過多久,又提示ORA-28000 the account is locked,一直解鎖,但每次都是沒幾秒就立刻鎖住了。查了之後才發現是 FAILED_LOGIN_ATTEMPTS 參數在作怪。
解決辦法:
alter profile default limit failed_login_attempts 次數或unlimited;