標籤:必須 login 作品 自己 鎖定 修改使用者密碼 blog alt htm
ORACLE賬戶提示EXPIRED(GRACE)問題解決
2013-01-30 15:09:24
標籤:oracle user
原創作品,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本聲明。否則將追究法律責任。http://alexy.blog.51cto.com/6115453/1129751
最近一個奇怪現象為賬戶為EXPIRED(GRACE),查閱資料得知這是oracle11g安全的一個更新,類似系統帳號到期一樣。
1)查詢使用者狀態為
col username for a20
col account_status for a20
SQL> select username,account_status,LOCK_DATE,EXPIRY_DATEfrom user_users;
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE
-------------------- ---------------------------------- --------------
CBD EXPIRED(GRACE) 04-2月 -13
1)查詢表dba_profiles
SQL> SELECT *FROM DBA_PROFILES WHERE PROFILE=‘DEFAULT‘ AND RESOURCE_NAME LIKE ‘PASSWORD%‘;
PROFILE RESOURCE_NAME RESOURCELIMIT
-------------------- -------------------------------- ------------------------------------------------
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180
DEFAULT PASSWORD_REUSE_TIME PASSWORDUNLIMITED
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
DEFAULT PASSWORD_GRACE_TIME PASSWORD7
6 rows selected.
SQL>
解釋如下:
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.
2)預設有效期間為180天
SQL> select *from dba_profiles where profile=‘DEFAULT‘ andresource_name=‘PASSWORD_LIFE_TIME‘;
PROFILE RESOURCE_NAME RESOURCELIMIT
-------------------- -------------------------------- ------------------------------------------------
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180
SQL>
2)預設寬限時間為7天
SQL> SELECT *FROM dba_profiles s WHERE s.profile=‘DEFAULT‘ ANDresource_name=‘PASSWORD_GRACE_TIME‘;
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
-------------------- -------------------- ---------------- --------------------
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7
SQL>
3)修改預設有效期間天數為無限
SQL>ALTER PROFILE DEFAULT LIMITPASSWORD_LIFE_TIME UNLIMITED;
使用者已更改。
SQL>
4)修改預設寬限期限
SQL>ALTERPROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;
使用者已更改。
SQL>
5)修改使用者密碼為原來密碼(假設當前密碼為CBD_abc)
SQL>ALTER USERCBS IDENTIFIED BY CBD_123;
使用者已更改。
SQL>
6)查看使用者當期那狀態
SQL> selectusername,account_status,LOCK_DATE,EXPIRY_DATE from user_users;
USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE
-------------------- -------------------- -------------- --------------
cbd OPEN
SQL>
到此,賬戶到期問題解決。
關於帳號狀態問題補充
1)查詢使用者概要檔案情況
SQL> SELECTusername,PROFILE FROM dba_users where username like ‘CBD%‘;
USERNAME PROFILE
------------------------- --------------------
CBD DEFAULT
SQL>
2)帳號有多少中狀態?
SQL> select *from user_astatus_map;
STATUS# STATUS
---------- ----------------------------------------------------------------
0 OPEN
1 EXPIRED
2 EXPIRED(GRACE)
4 LOCKED(TIMED)
8 LOCKED
5 EXPIRED & LOCKED(TIMED)
6 EXPIRED(GRACE) & LOCKED(TIMED)
9 EXPIRED & LOCKED
10EXPIRED(GRACE) & LOCKED
10類狀態說明:
五種基本狀態可分為三類:
1、OPEN狀態表示使用者處於正常狀態。
2、LOCKED和LOCKED(TIMED)表示使用者被鎖定狀態。有如下兩種情況:
- DBA顯式的通過SQL語句對使用者進行鎖定;
- 被動的鎖定,預設情況下如果密碼輸入錯誤超過10次鎖定;
該限制由PROFILE中的FAILED_LOGIN_ATTEMPTS控制,可查看視圖DBA_PROFILES。
DBA顯式鎖定使用者LOCKED
alter user [username] account lock;
輸入10次錯誤密碼後被動鎖定LOCKED(TIMED)
這個限制是由PROFILE中的FAILED_LOGIN_ATTEMPTS控制的,該資訊可以通過DBA_PROFILES視圖查詢
3、EXPIRED和EXPIRED(GRACE)表示使用者密碼到期狀態。
修改PROFILE中的PASSWORD_LIFE_TIME實現密碼是否到期
alter profile default limit password_life_time unlimited;
密碼到期後也可修改PROFILE中的PASSWORD_GRACE_TIME控制使用的天數:
alter profile default limit password_grece_time 180;
對於密碼到期的使用者OPEN:a
alter user [username] identified by <password>account unlock;
推薦文章:
http://blog.csdn.net/kai27ks/article/details/6270350
http://hi.baidu.com/nonyi_com/item/f29f10720eae1c41ee1e534a
本文出自 “Focus on Oracle” 部落格,請務必保留此出處http://alexy.blog.51cto.com/6115453/1129751
【轉】ORACLE賬戶提示EXPIRED(GRACE)問題解決