经常会遇到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中记录为连接成功