ORACLE賬戶提示EXPIRED(GRACE)問題解決

最近一個奇怪現象爲賬戶爲EXPIRED(GRACE),查閱資料得知這是oracle11g安全的一個更新,類似系統賬號過期一樣。

1)查詢用戶狀態爲
col username for a20 
col account_status for a20
SQL> select username,account_status,LOCK_DATE,EXPIRY_DATE from 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                                        RESOURCE LIMIT
-------------------- -------------------------------- -------- ----------------------------------------
DEFAULT                            PASSWORD_LIFE_TIME                             PASSWORD 180
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

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' and resource_name='PASSWORD_LIFE_TIME';

PROFILE                                                        RESOURCE_NAME                                                                                RESOURCE LIMIT
-------------------- -------------------------------- -------- ----------------------------------------
DEFAULT                                                        PASSWORD_LIFE_TIME                                                         PASSWORD 180

SQL>
2)默認寬限時間爲7天
SQL> SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_GRACE_TIME';

PROFILE                            RESOURCE_NAME                RESOURCE_TYPE        LIMIT
-------------------- -------------------- ---------------- --------------------
DEFAULT                            PASSWORD_GRACE_TIME    PASSWORD                 7
SQL>
3)修改默認有效期天數爲無限
SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

用戶已更改。
SQL>
4)修改默認寬限期限
SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;
用戶已更改。
SQL>
5)修改用戶密碼爲原來密碼(假設當前密碼爲CBD_abc)
SQL>ALTER USER CBS IDENTIFIED BY CBD_123;

用戶已更改。
SQL>
6)查看用戶當期那狀態
SQL> select username,account_status,LOCK_DATE,EXPIRY_DATE from user_users;

USERNAME                         ACCOUNT_STATUS             LOCK_DATE            EXPIRY_DATE
-------------------- -------------------- -------------- --------------
cbd                                    OPEN

SQL>
到此,賬戶過期問題解決。
關於賬號狀態問題補充
1)查詢用戶概要文件情況
SQL> SELECT username,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
                10 EXPIRED(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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章