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

暖楓無敵發表於2014-07-23

       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,建議大家定期修改資料庫使用者口令。


相關文章