10.1.0.3資料庫帳號被鎖定

orchidllh發表於2008-02-22

最近以來,比較頻繁了,測試環境。
相信應用是不知道怎麼鎖定帳號的,但是過一段時間帳號就被鎖了,需要我給解鎖一下,很疑惑。

很久沒上itpub了,那裡最近還討論過這個問題。

和使用者的profile有關,通常是default的,而default的profile預設的FAILED_LOGIN_ATTEMPTS值是10,也就是說嘗試10次就會鎖定該帳號。
SQL> select * from dba_profiles where resource_name='FAILED_LOGIN_ATTEMPTS';

PROFILE                        RESOURCE_NAME                  RESOURCE_TYPE    LIMIT
------------------------------ ------------------------------ ---------------- ------------------------------
DEFAULT                        FAILED_LOGIN_ATTEMPTS          PASSWORD         10
MONITORING_PROFILE             FAILED_LOGIN_ATTEMPTS          PASSWORD         UNLIMITED

可以修改成無限制
SQL> ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
Profile altered.

或者根據監聽日誌判斷誰在嘗試口令。


以下摘自tomszrp的blog:
http://tomszrp.itpub.net/post/11835/455375

SQL> select * from sys.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

9 rows selected
通過上面的查詢我們可以看到在Oracle中accunt總共有9種不同的狀態,對應dba_users檢視中的account_status欄位。下面我分別就每種狀態的含義和出現的情況做個簡單的說明,以便於今後的系統管理和維護。

分析上面的9種狀態不難看出,其實獨立的狀態只有OPEN、EXPIRED、LOCKED、EXPIRED(GRACE)、LOCKED(TIMED) 5種形式。其他4種不過是前面幾種形式的組合而已。

OPEN: 這個是大家最常見的,就是表示這個是可用的,沒有任何限制的帳戶
LOCKED:表示這個帳戶被DBA鎖定. 一般通過alter user username account lock(unlock);
EXPIRED:表示該帳戶被設定為口令到期,要求使用者在下次logon的時候修改口令(系統會在該account被設定為expire後的第一次登陸是提示你修改密碼)
EXPIRED(GRACE):當設定了grace以後(第一次成功登入後到口令到期後有多少天時間可改變口令,在這段時間內,帳戶被提醒修改口令並可以正常登陸,account_status顯示為EXPIRED(GRACE).
LOCKED(TIMED):這種狀態表示失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定,需要注意的是,在Oracle 10g中,預設的DEFAULT值是10次.

剩下的幾種情況就是上面的組合了:
EXPIRED & LOCKED
SQL> alter user study password expire account lock;
使用者已更改。

SQL> select account_status from dba_users where username='STUDY';
ACCOUNT_STATUS
--------------------------------
EXPIRED & LOCKED

EXPIRED(GRACE) & LOCKED(TIMED)當account_stutus為EXPIRED(GRACE)的時候,使用者又失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定
EXPIRED & LOCKED(TIMED)當設定了account expire後,使用者又失敗的login次數超過了FAILED_LOGIN_ATTEMPTS,被系統自動鎖定
EXPIRED(GRACE) & LOCKED使用者account_status為EXPIRED(GRACE)後,又被DBA 手工鎖定帳戶後的狀態。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/51862/viewspace-183273/,如需轉載,請註明出處,否則將追究法律責任。

相關文章