一、當前ORACLE用戶的狀態可查看視圖DBA_USERS;一般情況下在使用的正常用戶均處於OPEN狀態。
1 |
SQL> select username,account_status from dba_users; |
2 |
USERNAME ACCOUNT_STATUS |
3 |
--------------------- ------------------ |
4 |
MGMT_VIEW OPEN |
5 |
SYS OPEN |
6 |
SYSTEM OPEN |
7 |
DBSNMP OPEN |
8 |
SYSMAN OPEN |
9 |
DEMO OPEN |
10 |
OUTLN EXPIRED & LOCKED |
11 |
MDSYS EXPIRED & LOCKED |
12 |
ORDSYS EXPIRED & LOCKED |
13 |
ANONYMOUS EXPIRED & LOCKED |
14 |
EXFSYS EXPIRED & LOCKED |
15 |
WMSYS EXPIRED & LOCKED |
16 |
XDB EXPIRED & LOCKED |
17 |
ORDPLUGINS EXPIRED & LOCKED |
18 |
SI_INFORMTN_SCHEMA EXPIRED & LOCKED |
19 |
DIP EXPIRED & LOCKED |
20 |
ORACLE_OCM EXPIRED & LOCKED |
21 |
TSMSYS EXPIRED & LOCKED |
二、ORACLE數據庫用戶有多種狀態,可查看視圖USER_ASTATUS_MAP。
1 |
SQL> select * from user_astatus_map; |
2 |
STATUS# STATUS |
3 |
-------- ------------------------------ |
4 |
0 OPEN |
5 |
1 EXPIRED |
6 |
2 EXPIRED(GRACE) |
7 |
4 LOCKED(TIMED) |
8 |
8 LOCKED |
9 |
5 EXPIRED & LOCKED(TIMED) |
10 |
6 EXPIRED(GRACE) & LOCKED(TIMED) |
11 |
9 EXPIRED & LOCKED |
12 |
10 EXPIRED(GRACE) & LOCKED |
九種狀態可分為兩類:1.基本狀態;2.組合狀態。
前五種是基本狀態: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
后四種的組合狀態可通過狀態號STATUS#獲得其狀態的兩個組合。掌握前五種即可。
三、五種基本狀態
五種基本狀態可分為三類:1.正常狀態;2.鎖定狀態;3.密碼過期狀態。
1、OPEN狀態表示用戶處於正常狀態。
2、LOCKED和LOCKED(TIMED)表示用戶被鎖定狀態。
用戶被鎖定有兩種:
一種是DBA顯式的通過SQL語句對用戶進行鎖定;
另一種是被動的鎖定,默認情況下如果密碼輸入錯誤超過10次。
該限制由PROFILE中的FAILED_LOGIN_ATTEMPTS控制,可查看視圖DBA_PROFILES。
1)顯式鎖定用戶LOCKED:alter user [username] account lock;
2)輸入10次錯誤密碼后被動鎖定LOCKED(TIMED)
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:alter user [username] identified by account unlock;
四、鎖定的兩種狀態[LOCKED和LOCKED(TIMED)]和密碼過期的兩種狀態[EXPIRED和EXPIRED(GRACE)]之間任意組合即2×2=4,因此有四種組合狀態。