自己有一台oracle数据库,发现几天不登录,数据库用户就无法登录,提示用户被锁,今天下定决心终于解决它,现在将解决过程写出与大家一起分享。
如果用户被锁,首先应该要知道他是什么时候被锁了。用oracle用户登录机器,执行
1.sqlplus / as sysdba ,以DBA用户登录,这时千万不要先解锁,而是要先查一下上次被锁的时间。
2.
--修改当前会话的日期显示格式
alter session set nls_date_format = 'yyyy-MM-dd hh24:mi:ss';
--查询被锁定账号的锁定时间
select username,lock_date from dba_users where username like
'SJCKBILL';
查出来时间为:2012-05-17 15:44:21
3.找到 listener.log文件,如果不知道这个文件放到哪里,就只能用
find / -name listener.log
查到在/oracle/app/oracle/product/10.2.0/network/log/listener.log
4.进入这个目录
发现文件很大,如果用cat 显示太慢,执行 tail -20 listener.log
17-MAY-2012 15:44:21 *
(CONNECT_DATA=(SID=storage)(CID=(PROGRAM=E:\Program Files\plsql
developer\plsqldev.exe)(HOST=COGNOS-SERVER)(USER=Administrator))) *
(ADDRESS=(PROTOCOL=tcp)(HOST=134.134.XX.XX)(PORT=3761)) * establish
* storage * 0
17-MAY-2012 15:44:32 *
(CONNECT_DATA=(SID=storage)(CID=(PROGRAM=E:\Program Files\plsql
developer\plsqldev.exe)(HOST=COGNOS-SERVER)(USER=Administrator))) *
(ADDRESS=(PROTOCOL=tcp)(HOST=134.134.XX.XX)(PORT=3762)) * establish
* storage * 0
17-MAY-2012 15:44:38 *
(CONNECT_DATA=(SID=storage)(CID=(PROGRAM=E:\Program Files\plsql
developer\plsqldev.exe)(HOST=COGNOS-SERVER)(USER=Administrator))) *
(ADDRESS=(PROTOCOL=tcp)(HOST=134.134.XX.XX)(PORT=3768)) * establish
* storage * 0
17-MAY-2012 15:45:54 *
(CONNECT_DATA=(SID=storage)(CID=(PROGRAM=E:\Program Files\plsql
developer\plsqldev.exe)(HOST=COGNOS-SERVER)(USER=Administrator))) *
(ADDRESS=(PROTOCOL=tcp)(HOST=134.134.XX.XX)(PORT=3794)) * establish
* storage * 0
发现那个时间段,是=134.134.XX.XX用 plsql
连续连接4次,问了这个人,才知道是不知道密码,于是连接了4次,导致用户被锁。
6. 总结
从上边可以看到,造成Oracle的账号被锁定的原因是由于误输入用户名和密码导致,所以造成了该账号登录Oracle经常失败,由于我们配置了Oracle的最大允许登录错误次数为10,所以超过10次错误后账号将被锁定。
select * from dba_profiles where resource_name like
'FAILED_LOGIN_ATTEMPTS%';
查到 DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
为10 次.