很多人对oracle数据库会将用户锁定感觉莫名其妙,有时候觉得锁了那就解锁呗,感觉无所谓,几天就简单说一下如何能查到用户到底是什么原因被锁的。
1、遇到登录报用户被锁时,先不要着急解锁,先使用dba角色的用户登录,设置具体时间格式,以便我们查询具体的被锁时间:
SQL> alter session set nls_date_format=’yyyy-mm-dd hh24:mi:ss’;
2、查看具体被锁时间:
SQL> select username,lock_date from dba_users where username=’USERNAME’;
3、解锁被锁用户:
SQL> alter user USERNAME account unlock;
4、查看是那个ip造成的USERNAME 用户被锁
主要监听日志,一般路径为:$ORACLE_HOME/network/admin/log/listener.log日志
win系统下:d:\app\orcl\product\12.1.0\dbhome_1\log\diag\tnslsnr\02843ZYT\listener\alert\log.xml
如果实在找不到,可以在终端或cmd窗口输入lsnrctl status 输出的信息中会有监听的日志文件路径
5、根据监听日志中的信息,可以看出在这个时间段IP为10.69.1.11在尝试多次失败登陆造成的被锁
10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49434)) * establish * lhoms * 0
注:
一般数据库默认是10次尝试失败后锁住用户
1、查看FAILED_LOGIN_ATTEMPTS的值
select * from dba_profiles
2、修改为30次
alter profile default limit FAILED_LOGIN_ATTEMPTS 30;
3、修改为无限次(为安全起见,不建议使用)
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;