Luo Hao

Oracle排查账户锁定

Rehoni / 2020-06-22


设置时间格式

遇到登录报用户被锁时,先不要着急解锁,先使用dba角色的用户登录,设置具体时间格式,以便我们查询具体的被锁时间:

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

查看具体被锁时间:

select username,lock_date from dba_users where username='username';

或者

select username,lock_date from dba_users where username='xxx'; 

如果发现被锁用户的时间信息已经不存在,原因是用户已经被客户解锁,所以视图dba_users中已经看不到用户被锁时间的信息。

这个时候通过查看表user$来解决这个问题:

select name,ltime from user$ where name ='XXXX';

查看造成用户被锁的ip

主要监听日志,一般路径为:$ORACLE_HOME/network/admin/log/listener.log日志

查看监听日志:可以看出IP、登录用户Res0l、端口2067、登陆程序Datagrip等内容。

22-6 -2020 15:31:20 * (CONNECT_DATA=(SID=ora12a)(CID=(PROGRAM=DataGrip)(HOST=__jdbc__)(USER=Res0l))) * (ADDRESS=(PROTOCOL=t                         cp)(HOST=198.120.100.198)(PORT=2067)) * establish * ora12a * 0
2020-06-22T15:31:23.829623+08:00
22-6 -2020 15:31:23 * (CONNECT_DATA=(SID=ora12a)(CID=(PROGRAM=DataGrip)(HOST=__jdbc__)(USER=Res0l))) * (ADDRESS=(PROTOCOL=t                         cp)(HOST=198.120.100.198)(PORT=2071)) * establish * ora12a * 0
2020-06-22T15:31:26.862394+08:00

如果实在找不到,可以在终端或cmd窗口输入lsnrctl status 输出的信息中会有监听的日志文件路径

lsnrctl status

或者执行全文件夹搜索

find /users/oracle/ -name listener.log

解锁

alter user test account unlock;

注意

一般数据库默认是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;

参考

https://www.jb51.net/article/117229.htm

https://www.jianshu.com/p/b815d45e5928