經常會遇到db的account 被lock住了。原因一般是有人使用錯誤的密碼去嘗試登陸。但問題是如果數據庫有一千個用戶在登陸,你怎麼知道是哪個用戶使用了錯誤的密碼呢,通過下面的步驟就可以找出來。
1. 查看lock時間
SQL> select ACCOUNT_STATUS,LOCK_DATE from dba_users where username='U1';
ACCOUNT_STATUS LOCK_DATE
-------------------- --------------------
LOCKED(TIMED) 2012-05-31 15:22:48
2. 查看listener log中這個時間的記錄
31-MAY-2012 15:22:48 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=c21upg10)(CID=(PROGRAM=sqlplus)(HOST=apc_dev1db1)(USER=oratop))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.44)(PORT=49143)) * establish * c21upg10 * 0
這樣就可以知道這個用戶是從哪裏連的了。
要注意的是,雖然密碼錯誤用戶無法登陸數據庫,但是還是要經過litener的,並且由於在listener的時候沒有被返回,所以litener的log中記錄爲連接成功