Oracle11G創建用戶時缺省密碼過期限制是180天(即6個月), 如果超過180天用戶密碼未做修改則該用戶無法登錄。
Oracle公司是為了數據庫的安全性默認在11G中引入了這個默認功能,但是這個默認的功能很容易被DBA或者是開發人員給疏忽,一旦密碼180天未修改過,就會出現這樣的問題。
方法一(PL/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 如上SQL語句將口令有效期默認值180天修改成了“無限制”。但是出於數據庫安全性考慮,不建議將PASSWORD_LIFE_TIME值設置成UNLIMITED
方法二(cmd命令):
(1)在CMD命令窗口中輸入:
sqlplus 用戶名/密碼@數據庫本地服務名 as sysdba;(如:sqlplus scott/1234@oracle1 as sysdba;)
(2)查看用戶的proifle是哪個,一般是default : sql>SELECT username,PROFILE FROM dba_users;
(3)查看對應的概要文件(如default)的密碼有效期設置: sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
(4)將概要文件(如default)的密碼有效期由默認的180天修改成“無限制”:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后不需要重啟動數據庫,會立即生效。
(5)修改后,還沒有被提示ORA-28002警告的用戶賬號不會再碰到同樣的提示;而已經被提示的用戶賬號必須再改一次密碼,舉例如下: $sqlplus / as sysdba sql>alter user 用戶名 identified by <原來的密碼> account unlock; ----不用換新密碼 注意:oracle11g啟動參數resource_limit無論設置為false還是true,密碼有效期都是生效的,所以必須通過以上方式進行修改。
