php oracle 锁表,ORACLE 用户锁定问题
在開(kāi)發(fā)環(huán)境下,由于直接修改了數(shù)據(jù)庫(kù)用戶的密碼,之后一直不能連接,及時(shí)執(zhí)行alter user username account unlock 還是提示用戶鎖定。剛開(kāi)始只是懷疑是數(shù)據(jù)庫(kù)的問(wèn)題,就一直在數(shù)據(jù)庫(kù)上找問(wèn)題,其實(shí)最終的問(wèn)題是更改密碼后,應(yīng)用程序的還在鏈接著數(shù)據(jù)庫(kù),由于
在開(kāi)發(fā)環(huán)境下,由于直接修改了數(shù)據(jù)庫(kù)用戶的密碼,之后一直不能連接,及時(shí)執(zhí)行alter user username account unlock 還是提示用戶鎖定。剛開(kāi)始只是懷疑是數(shù)據(jù)庫(kù)的問(wèn)題,就一直在數(shù)據(jù)庫(kù)上找問(wèn)題,其實(shí)最終的問(wèn)題是更改密碼后,應(yīng)用程序的還在鏈接著數(shù)據(jù)庫(kù),由于數(shù)據(jù)庫(kù)默認(rèn)設(shè)置登錄失敗10次用戶會(huì)被鎖定。停掉應(yīng)用,重新執(zhí)行alter user username account unlock,問(wèn)題得到解決。
有關(guān)數(shù)據(jù)庫(kù)用戶狀態(tài)及如何查詢進(jìn)行介紹:
oracle11g數(shù)據(jù)庫(kù)安全加固須謹(jǐn)慎
數(shù)據(jù)庫(kù)安全配置中,需要做相關(guān)的安全加固工作。以確認(rèn)數(shù)據(jù)庫(kù)的安全,但是,有些時(shí)候,操作不當(dāng)或者數(shù)據(jù)庫(kù)業(yè)務(wù)賬號(hào)修改密碼后,而程序的連接數(shù)據(jù)庫(kù)的配置封裝在jar里,如果jar內(nèi)的連接數(shù)據(jù)庫(kù)的配置信息沒(méi)有做相應(yīng)的修改的話。就會(huì)對(duì)數(shù)據(jù)庫(kù)的此業(yè)務(wù)賬號(hào)造成嚴(yán)重的后果。
因此,真正了解Oracle安全數(shù)據(jù)庫(kù)用戶的狀態(tài),就顯得尤為重要了。下面我們就看一下oracle數(shù)據(jù)庫(kù)中的多種用戶狀態(tài)。
ORACLE數(shù)據(jù)庫(kù)用戶有多種狀態(tài),可查看視圖USER_ASTATUS_MAP。
SQL> col status for a30
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
9 rows selected.
通過(guò)上面的查詢我們可以看到在Oracle中account總共有9種不同的狀態(tài),對(duì)應(yīng)dba_users視圖中的account_status字段。
下面我分別就每種狀態(tài)的含義和出現(xiàn)的情況做個(gè)簡(jiǎn)單的說(shuō)明,以便于今后的系統(tǒng)管理和維護(hù)。
分析上面的9種狀態(tài)不難看出,其實(shí)獨(dú)立的狀態(tài)只有OPEN、EXPIRED、LOCKED、EXPIRED(GRACE)、LOCKED(TIMED) 5種形式。其他4種不過(guò)是前面幾種形式的組合而已。
或者也可以這樣理解:
以上的9種狀態(tài)可以分為兩大類(lèi):
1、基本狀態(tài)(前五種為基本狀態(tài):0 OPEN、1 EXPIRED、2 EXPIRED(GRACE)、4 LOCKED(TIMED)、8 LOCKED);
2、組合狀態(tài)(后四種為組合狀態(tài):5 EXPIRED & LOCKED(TIMED)、6 EXPIRED(GRACE) & LOCKED(TIMED)、9 EXPIRED & LOCKED、10 EXPIRED(GRACE) & LOCKED);
后四種的組合狀態(tài)可通過(guò)狀態(tài)號(hào)STATUS#獲得其狀態(tài)的兩個(gè)組合。掌握前五種即可。
具體詳細(xì)解釋請(qǐng)參考如下:
OPEN: 這個(gè)是大家最常見(jiàn)的,就是表示這個(gè)是可用的,沒(méi)有任何限制的帳戶
LOCKED: 表示這個(gè)帳戶被DBA鎖定. 一般通過(guò)alter user username account lock(unlock);
EXPIRED: 表示該帳戶被設(shè)置為口令到期,要求用戶在下次logon的時(shí)候修改口令(系統(tǒng)會(huì)在該account被設(shè)置為expire后的第一次登陸是提示你修改密碼)
EXPIRED(GRACE): 當(dāng)設(shè)置了grace以后(第一次成功登錄后到口令到期后有多少天時(shí)間可改變口令,在這段時(shí)間內(nèi),帳戶被提醒修改口令并可以正常登陸,
account_status顯示為EXPIRED(GRACE).
LOCKED(TIMED): 這種狀態(tài)表示失敗的login次數(shù)超過(guò)了FAILED_LOGIN_ATTEMPTS,被系統(tǒng)自動(dòng)鎖定,需要注意的是,在Oracle 10g中,默認(rèn)的DEFAULT值是10次.
EXPIRED & LOCKED: 表示此賬戶被設(shè)置為口令到期且被鎖定。
EXPIRED(GRACE) & LOCKED(TIMED): 當(dāng)account_stutus為EXPIRED(GRACE)的時(shí)候,用戶又嘗試失敗的login次數(shù)超過(guò)了FAILED_LOGIN_ATTEMPTS,被系統(tǒng)自動(dòng)鎖定
EXPIRED & LOCKED(TIMED): 當(dāng)設(shè)置了account expire后,用戶又失敗的login次數(shù)超過(guò)了FAILED_LOGIN_ATTEMPTS,被系統(tǒng)自動(dòng)鎖定
EXPIRED(GRACE) & LOCKED: 用戶account_status為EXPIRED(GRACE)后,又被DBA 手工鎖定帳戶后的狀態(tài)
下面通過(guò)實(shí)例操作來(lái)說(shuō)明:
本人對(duì)oracle數(shù)據(jù)庫(kù)的profile文件進(jìn)行如下安全設(shè)置:(其中的FAILED_LOGIN_ATTEMPTS 6是對(duì)用戶嘗試失敗的登錄最大次數(shù)的限制,這里只允許最多嘗試失敗6次)
SQL>ALTER PROFILE DEFAULT LIMIT
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX 5
PASSWORD_VERIFY_FUNCTION verify_function_11g
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 90;
通過(guò)以下語(yǔ)句查詢當(dāng)前用戶的狀態(tài):
SQL> alter session set nls_date_format='yyyy-MM-dd hh24:mi:ss';
SQL> show linesize;
SQL> set linesize=1000;
SQL> select username,account_status from dba_users;
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
DBA_USER OPEN
DBSNMP OPEN
SYSMAN OPEN
SCOTT OPEN
FLOWS_FILES EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
WMSYS EXPIRED & LOCKED
ORDDATA EXPIRED & LOCKED
CTXSYS EXPIRED & LOCKED
ANONYMOUS EXPIRED & LOCKED
接下來(lái)使用賬號(hào)dba_user和scott,以錯(cuò)誤的密碼嘗試連接數(shù)庫(kù)6次以上后,再查看數(shù)據(jù)庫(kù)用戶狀態(tài):
SQL> select username,account_status from dba_users;
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
DBA_USER EXPIRED(GRACE) & LOCKED(TIMED)
DBSNMP OPEN
SYSMAN OPEN
SCOTT EXPIRED(GRACE) & LOCKED(TIMED)
FLOWS_FILES EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
WMSYS EXPIRED & LOCKED
ORDDATA EXPIRED & LOCKED
CTXSYS EXPIRED & LOCKED
ANONYMOUS EXPIRED & LOCKED
事實(shí)證明,當(dāng)用戶DBA_USER和SCOTT為EXPIRED(GRACE)的時(shí)候,用戶又嘗試失敗的login次數(shù)超過(guò)了FAILED_LOGIN_ATTEMPTS,被系統(tǒng)自動(dòng)鎖定.
如果這兩個(gè)用戶為生產(chǎn)現(xiàn)網(wǎng)的業(yè)務(wù)賬戶的話,管理員不能及時(shí)發(fā)現(xiàn)問(wèn)題或報(bào)警的話,將會(huì)造成業(yè)務(wù)中斷等嚴(yán)重的后果。
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請(qǐng)注明出處,感謝您的尊重!
總結(jié)
以上是生活随笔為你收集整理的php oracle 锁表,ORACLE 用户锁定问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 马斯克旗下脑机接口公司Neuralink
- 下一篇: 小米 Redmi Buds 5 Pro