【Oracle】用戶密碼過期處理
開發登錄數據庫時報如下錯誤:
ERROR:ORA-28002: the password will expire within 7 days
原來Oracle 11g 之前默認的profile是沒有密碼過期的限制的,在Oracle 11g 中默認的profile啟用了密碼過期時間是180天,去除這個限制便可。
查詢默認的profile的密碼過期參數的設置
sys@yangdb>select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------- ------------------ -------- ------
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180
設置default profile密碼永不過期,立即生效,不需重啟
sys@yangdb>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Profile altered.
對于已經過期的,要重新設置密碼,可以和之前的密碼一樣
sys@yangdb>alter user APP identified by xxxapp;
User altered.
順便解釋一下和密碼相關的參數:
sys@yangdb>select * from dba_profiles where profile='DEFAULT' and RESOURCE_NAME like 'PASSWORD%';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- -----------
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7
FAILED_LOGIN_ATTEMPTS 整數
設定登錄到ORACLE 數據庫時可以失敗的次數。一旦某用戶嘗試登錄數據庫的達到該值時,該用戶的帳戶就被鎖定,只能由DBA能解鎖。
PASSWORD_LIFE_TIME
設定口令的有效時間(天數),一旦超過這一時間,必須重新設口令。缺省為UNLIMITED.
PASSWORD_REUSE_TIME
許多系統不許用戶重新啟用過去用過的口令。該資源項設定了一個失效口令要經過多少天,用戶才可以重新使用該口令。缺省為UNLIMITED.
PASSWORD_REUSE_MAX
重新啟用一個先前用過的口令前必須對該口令進行重新設置的次數(重復用的次數)。
PASSWORD_LOCK_TIME
設定帳戶被鎖定的天數(當登錄失敗達到FAILED_LOGIN_ATTEMPTS時)。
PASSWORD_GRACE_TIME
設定在口令失效前,給予的重新設該口令的寬限天。當口令失效之后回,在登錄時會出現警告信息顯示該天數。如果沒有在寬限天內修改口令,口令將失效。
PASSWORD_VERITY_FUNCTION
該資源項允許調用一個PL/SQL 來驗證口令。ORACLE公司已提供該應用 的腳本,但是只要愿意的話,用戶可以制定自己的驗證腳本。該參數的設定就是PL/SQL函數的名稱。缺省為NULL.