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
输出的信息中会有监听的日志文件路径
或者执行全文件夹搜索
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;