開發登入資料庫時報如下錯誤:
ERROR:ORA-28002: the password will expire within 7 days
原來Oracle 11g 之前預設的profile是沒有密碼到期的限制的,在Oracle 11g 中預設的profile啟用了密碼到期時間是180天,去除這個限制便可。
查詢預設的profile的密碼到期參數的設定
sys@ www.bkjia.com>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@ www.bkjia.com>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Profile altered.
對於已經到期的,要重新設定密碼,可以和之前的密碼一樣
sys@ www.bkjia.com>alter user APP identified by xxxapp;
User altered.
順便解釋一下和密碼相關的參數:
sys@ www.bkjia.com>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.