【使用者狀態】詳細解讀Oracle使用者ACCOUNT_STATUS的九種狀態
DBA_USERS檢視中ACCOUNT_STATUS記錄的使用者的當前狀態,一般情況下在使用的正常使用者均處於OPEN狀態。
例如我們檢視sec使用者的當前狀態,此時該使用者處於OPEN狀態,可以正常使用。
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC OPEN
1.所有使用者狀態彙總
除了常用的OPEN狀態還有哪些使用者狀態?
這個資訊可以透過USER_ASTATUS_MAP獲得。
sys@ora10g> 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
9 rows selected.
使用者狀態不會超出以上九種。
2.九種狀態的分類
以上九種可以分為兩大類: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#獲得它是哪兩種狀態的組合,例如10=2+8(10 EXPIRED(GRACE) & LOCKED = 2 EXPIRED(GRACE) + 8 LOCKED)。因此只要瞭解基本狀態的含義其他便可無師自通。
3.五種基本狀態的詮釋
這五種基本狀態又可以分為三類:1.正常狀態;2.鎖定狀態;3.密碼過期狀態。
1)OPEN狀態不用多解釋,表示使用者處於正常狀態。
2)使用者被鎖定狀態,LOCKED和LOCKED(TIMED)兩種狀態都屬於鎖定狀態
使用者被鎖定一般分為兩種:一種是DBA顯式的透過SQL語句對使用者進行鎖定;另外一種是被動的鎖定,例如預設情況下如果密碼輸入錯誤超過10次(這個限制是由PROFILE中的FAILED_LOGIN_ATTEMPTS控制的,該資訊可以透過DBA_PROFILES檢視查詢),使用者將被鎖定,有關被動鎖定的描述請參考文章《【故障】“ORACLE使用者被鎖定”故障處理和分析》(http://space.itpub.net/519536/viewspace-608769)。
(1)顯式鎖定sec使用者LOCKED狀態演示
sys@ora10g> alter user sec account lock;
User altered.
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC LOCKED
(2)輸入10次錯誤密碼後被動鎖定LOCKED(TIMED)狀態演示
嘗試輸入10次錯誤密碼後再次查詢使用者狀態。
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC LOCKED(TIMED)
3)使用者密碼過期狀態,EXPIRED和EXPIRED(GRACE)兩種狀態都屬於密碼過期狀態
密碼是否過期是透過修改PROFILE中的PASSWORD_LIFE_TIME實現的,密碼過期後還可以使用的天數是透過PROFILE中的PASSWORD_GRACE_TIME控制的。有關PROFILE的描述請參考文章《【PROFILE】使用Oracle的PROFILE對使用者資源限制和密碼限制的研究與探索》(http://space.itpub.net/519536/viewspace-616287)。
關於密碼過期我們也可以使用SQL顯式的去完成,簡單演示一下。
sys@ora10g> alter user sec password expire;
User altered.
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC EXPIRED
sys@ora10g> conn sec/sec
ERROR:
ORA-28001: the password has expired
Changing password for sec
New password:
Retype new password:
Password changed
Connected.
sec@ora10g>
sec@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC OPEN
4.關於四種組合狀態的解釋
因為鎖定的兩種狀態(LOCKED和LOCKED(TIMED))和密碼過期的兩種狀態(EXPIRED和EXPIRED(GRACE))之間沒有關係。因此他們之間可以任意組合,2×2=4,因此有四種組合狀態:
5 EXPIRED & LOCKED(TIMED)
6 EXPIRED(GRACE) & LOCKED(TIMED)
9 EXPIRED & LOCKED
10 EXPIRED(GRACE) & LOCKED
分別解釋這四種組合狀態
1)EXPIRED & LOCKED(TIMED)狀態表示使用者過期後,錯誤密碼嘗試次數超過PROFILE中的FAILED_LOGIN_ATTEMPTS的限制;
2)EXPIRED(GRACE) & LOCKED(TIMED)狀態表示使用者在密碼過期後的有效期內,不成功登入次數超過PROFILE中的FAILED_LOGIN_ATTEMPTS的限制;
3)EXPIRED & LOCKED狀態表示使用者過期的同時處於鎖定狀態,做一個實驗。
sec@ora10g> alter user sec account lock password expire;
User altered.
sec@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC EXPIRED & LOCKED
sec@ora10g> conn sec/sec
ERROR:
ORA-28000: the account is locked
Warning: You are no longer connected to ORACLE.
4)EXPIRED(GRACE) & LOCKED狀態表示使用者在密碼過期後的有效期內被DBA手工鎖定。
5.小結
Oracle使用者雖然有九種之多的狀態,貌似很複雜,但只要我們能夠對其進行清晰的劃分類別,理解起來便會很容易。
從正常、鎖定和密碼過期三個角度去理解使用者狀態,一切都會水到渠成。
Good luck.
secooler
10.08.31
-- The End --
例如我們檢視sec使用者的當前狀態,此時該使用者處於OPEN狀態,可以正常使用。
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC OPEN
1.所有使用者狀態彙總
除了常用的OPEN狀態還有哪些使用者狀態?
這個資訊可以透過USER_ASTATUS_MAP獲得。
sys@ora10g> 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
9 rows selected.
使用者狀態不會超出以上九種。
2.九種狀態的分類
以上九種可以分為兩大類: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#獲得它是哪兩種狀態的組合,例如10=2+8(10 EXPIRED(GRACE) & LOCKED = 2 EXPIRED(GRACE) + 8 LOCKED)。因此只要瞭解基本狀態的含義其他便可無師自通。
3.五種基本狀態的詮釋
這五種基本狀態又可以分為三類:1.正常狀態;2.鎖定狀態;3.密碼過期狀態。
1)OPEN狀態不用多解釋,表示使用者處於正常狀態。
2)使用者被鎖定狀態,LOCKED和LOCKED(TIMED)兩種狀態都屬於鎖定狀態
使用者被鎖定一般分為兩種:一種是DBA顯式的透過SQL語句對使用者進行鎖定;另外一種是被動的鎖定,例如預設情況下如果密碼輸入錯誤超過10次(這個限制是由PROFILE中的FAILED_LOGIN_ATTEMPTS控制的,該資訊可以透過DBA_PROFILES檢視查詢),使用者將被鎖定,有關被動鎖定的描述請參考文章《【故障】“ORACLE使用者被鎖定”故障處理和分析》(http://space.itpub.net/519536/viewspace-608769)。
(1)顯式鎖定sec使用者LOCKED狀態演示
sys@ora10g> alter user sec account lock;
User altered.
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC LOCKED
(2)輸入10次錯誤密碼後被動鎖定LOCKED(TIMED)狀態演示
嘗試輸入10次錯誤密碼後再次查詢使用者狀態。
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC LOCKED(TIMED)
3)使用者密碼過期狀態,EXPIRED和EXPIRED(GRACE)兩種狀態都屬於密碼過期狀態
密碼是否過期是透過修改PROFILE中的PASSWORD_LIFE_TIME實現的,密碼過期後還可以使用的天數是透過PROFILE中的PASSWORD_GRACE_TIME控制的。有關PROFILE的描述請參考文章《【PROFILE】使用Oracle的PROFILE對使用者資源限制和密碼限制的研究與探索》(http://space.itpub.net/519536/viewspace-616287)。
關於密碼過期我們也可以使用SQL顯式的去完成,簡單演示一下。
sys@ora10g> alter user sec password expire;
User altered.
sys@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC EXPIRED
sys@ora10g> conn sec/sec
ERROR:
ORA-28001: the password has expired
Changing password for sec
New password:
Retype new password:
Password changed
Connected.
sec@ora10g>
sec@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC OPEN
4.關於四種組合狀態的解釋
因為鎖定的兩種狀態(LOCKED和LOCKED(TIMED))和密碼過期的兩種狀態(EXPIRED和EXPIRED(GRACE))之間沒有關係。因此他們之間可以任意組合,2×2=4,因此有四種組合狀態:
5 EXPIRED & LOCKED(TIMED)
6 EXPIRED(GRACE) & LOCKED(TIMED)
9 EXPIRED & LOCKED
10 EXPIRED(GRACE) & LOCKED
分別解釋這四種組合狀態
1)EXPIRED & LOCKED(TIMED)狀態表示使用者過期後,錯誤密碼嘗試次數超過PROFILE中的FAILED_LOGIN_ATTEMPTS的限制;
2)EXPIRED(GRACE) & LOCKED(TIMED)狀態表示使用者在密碼過期後的有效期內,不成功登入次數超過PROFILE中的FAILED_LOGIN_ATTEMPTS的限制;
3)EXPIRED & LOCKED狀態表示使用者過期的同時處於鎖定狀態,做一個實驗。
sec@ora10g> alter user sec account lock password expire;
User altered.
sec@ora10g> select username, account_status from dba_users where username = 'SEC';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SEC EXPIRED & LOCKED
sec@ora10g> conn sec/sec
ERROR:
ORA-28000: the account is locked
Warning: You are no longer connected to ORACLE.
4)EXPIRED(GRACE) & LOCKED狀態表示使用者在密碼過期後的有效期內被DBA手工鎖定。
5.小結
Oracle使用者雖然有九種之多的狀態,貌似很複雜,但只要我們能夠對其進行清晰的劃分類別,理解起來便會很容易。
從正常、鎖定和密碼過期三個角度去理解使用者狀態,一切都會水到渠成。
Good luck.
secooler
10.08.31
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21754115/viewspace-1755455/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle使用者狀態(account_status)詳解 .Oracle
- UIButton基本狀態及各種疊加狀態詳解UI
- 恢復oracle的scott使用者初始狀態操作Oracle
- Oracle資料庫檢視使用者狀態Oracle資料庫
- 面試中超詳細的HTTP狀態碼面試HTTP
- HTTP狀態碼詳解HTTP
- java執行緒的五大狀態,阻塞狀態詳解Java執行緒
- React 4 種狀態型別及 N 種狀態管理React型別
- Ceph MDS States狀態詳解
- linux程式狀態詳解Linux
- 程式的3種狀態
- 5種狀況下的HTTP狀態碼HTTP
- vuex管理狀態倉庫詳解Vue
- MySQL執行緒狀態詳解MySql執行緒
- Vue狀態管理庫Pinia詳解Vue
- Oracle資料庫的靜默狀態和掛起狀態Oracle資料庫
- 解決 MVC 使用者上線下線狀態問題MVC
- 簡述oracle日誌組的四種狀態Oracle
- Oracle LISTENER 中各種狀態資訊的含義Oracle
- Oracle 資料庫的各種狀態和模式Oracle資料庫模式
- Go中的有限狀態機FSM的詳細介紹Go
- 前端開發:HTTP狀態碼詳解前端HTTP
- java執行緒棧狀態詳解Java執行緒
- 處理物件的多種狀態及其相互轉換——狀態模式(五)物件模式
- 處理物件的多種狀態及其相互轉換——狀態模式(四)物件模式
- 處理物件的多種狀態及其相互轉換——狀態模式(一)物件模式
- 狀態模式還應細分模式
- Oracle資料庫啟動過程及狀態詳解Oracle資料庫
- 使用Swoole的Websocket監聽使用者連線狀態Web
- 有狀態和無狀態的區別
- 執行緒的幾種狀態執行緒
- oracle中會話的狀態Oracle會話
- 【iCore3 雙核心板_FPGA】例程九:狀態機實驗——狀態機使用FPGA
- cookie儲存使用者狀態 無session系統CookieSession
- (譯)詳解在React中跨元件分發狀態的三種方法React元件
- Serverless 是一種思想狀態Server
- 執行緒各種狀態執行緒
- Oracle buffer狀態深入剖析Oracle