啟動 Oracle SQL Developer的時候,點擊用戶system進行連接並輸入密碼后(下圖左),會出現(下圖右)提示信息:
即:【ora-28002:the password will expire within 7 days】提示密碼快過期了
以下是解決辦法:
1、查看用戶的profile設置:
select username,profile from dba_users;
在 Oracle 中,每個用戶都會對應一種特定類型的 profile 概要設置,其基本描述了這個用戶的一些特征,比如用戶密碼的生命周期 (這個特征就與經驗涉及 的 ORA-28002 錯誤相關)!
通常用戶都會采用 DEFAULT 這個默認的 profile 概要設置, 如圖, 所有的用戶均采用的這個 profile 設置!
一般用戶的profile設置都為DEFAULT:
2、查看系統profiles中PASSWORD_LIFE_TIME設置:
select * from dba_profiles s where s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
PASSWORD_LIFE_TIME : 密碼生命周期,用戶密碼什么時候到期,單位是天,如圖,安裝 Oracle 時默認的 PASSWORD_LIFE_TIME 是 180 天, 即 6 個月,其含義就是,我們的用戶密碼每 6 個月就需要更新(注意: 這里的更新不是指密碼需要改變,而是指一個更新動作,可以維持密碼不變,但必須執行這個更新動作)
3、修改DBA_PROFILES中PASSWORD_LIFE_TIM的設置,改為ULIMITED。即不限制,這樣我們的用戶密碼就永不過期了。
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改后,我們再次查看DEFAULT profile 中 PASSWORD_LIFE_TIME 設置, 已經變為 UNLIMITED 了。修改后設置立即生效,不需要重啟數據庫,此時密碼永遠不會過期。
4、已經被報告了密碼快要過期的賬戶必須再改一次密碼(需要DBA權限)
但為了保險起見,我們一般都將所有經常使用的賬戶都更新一次密碼!
通過 sqlplus / as sysdba 登陸到 Oracle (無需密碼),然后執行如下命令更新一下密碼 :
如果是其他用戶的話,那么就使用其他用戶名。
alter user scott identified by tiger;
(我這里還修改了crims和root 的密碼,否則之前會報28002的錯誤。)
5、確認登陸后,不再出現 ORA-28002 錯誤
重新登陸,確認沒有報 ORA-28002 錯誤。 至此,這個問題就徹底解決了,以后無論多長時間,都不會再遇到這個問題。