Oracle默認在default概要文件中設置了“PASSWORD_LIFE_TIME=180天”,導致密碼過期,程序無法使用,業務進程會提示無法連接數據庫等字樣。
--查詢默認密碼過期時間 SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
密碼過期規則是用Profile來管理的,系統默認只有一個Profile(DEFAULT),通過下面語句可查看到幾乎所有的用戶都使用該DEFAULT的profile,所以如果修改DEFAULT的過期規則會影響所有的用戶。
--查詢系統用戶所使用的proifle SELECT username,PROFILE FROM dba_users;
所以,修改分為兩種:
1. 修改所有用戶的密碼永不過期
--修改所有用戶的密碼過期時間為無限制 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后會立即生效,還沒有被提示ORA-28002警告的帳戶不會再碰到同樣的提示,已經被提示的帳戶必須再改一次密碼。
--再修改一次密碼 alter user scott identified by 1234; --1234為scott用戶原來的密碼
2. 修改某個用戶密碼永不過期
需要三步:
1. 新建profile "TOOL_UNLIMITED",規則與DEFAULT一致(因為一個profile中包含很多的項目,我們此時只修改過期規則,其他的不變)
--創建新的profile(TOOL_UNLIMITED)復制DEFAULT的Script CREATE PROFILE "TOOL_UNLIMITED" LIMIT SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL UNLIMITED CONNECT_TIME UNLIMITED IDLE_TIME UNLIMITED LOGICAL_READS_PER_SESSION UNLIMITED LOGICAL_READS_PER_CALL UNLIMITED COMPOSITE_LIMIT UNLIMITED PRIVATE_SGA UNLIMITED FAILED_LOGIN_ATTEMPTS 10 PASSWORD_LIFE_TIME 180 PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED PASSWORD_LOCK_TIME 1 PASSWORD_GRACE_TIME 7 PASSWORD_VERIFY_FUNCTION NULL;
2. 修改profile "TOOL_UNLIMITED",修改過期規則為UNLIMITED
--修改新建的profile(TOOL_UNLIMITED),密碼過期為不過期 ALTER profile TOOL_UNLIMITED limit PASSWORD_LIFE_TIME UNLIMITED;
3. 將'TOOL'用戶適用新的profile "TOOL_UNLIMITED"
--修改用戶的Profile為新的profile alter user TOOL profile TOOL_UNLIMITED;