上次我们介绍了:Oracle 11g数据库默认审计选项说明详解,本文我们主要介绍一个Oracle 11g数据库中审计功能的应用实例,希望能够对您有所帮助。
在用户的profile 属性里面有一个属性:FAILED_LOGIN_ATTEMPTS,该参数默认值是10. 即当我们用户连续10次输入错误密码,这个用户就会被锁住。用户连词失败次数是在表USER$ 中的lcount字段记录的。 该值默认为0. 当失败一次,该值加1. 成功登录,该值清零。
一般在生产环境下,会根据具体情况设置这个参数,如果防止用户被锁,则将这个参数设置为UNLIMITED。 这个是注意的地方。当然设置成无限也有它的弊端,比如不能防止暴力破解数据库密码。
有关profile 的更多内容参考:
http://blog.csdn.net/tianlesoftware/article/details/6238279
在Oracle 11g中默认启用了对登录注销操作LOGON/LOGOFF的审计,那么如果我们发现用户被锁,那么可以应用11g的审计功能来查看从哪台机器上发来的链接失败导致用户被锁,可以帮助我们定位问题。
脚本如下:
- SQL> selectos_username,userhost,terminal,username,count(*)
- 2 from dba_audit_trail
- 3 where returncode = 1017
- 4 group byos_username,userhost,username,terminal;
- OS_USERNAME USERHOST TERMINAL USERNAME COUNT(*)
- ------------------------------------------------------------ ------------ ------------ ----------
- DavidDai\Administrator WORKGROUP\DAVIDDAI DAVIDDAI ICD 7
- DavidDai\Administrator WORKGROUP\DAVIDDAI DAVIDDAI SYSTEM 9
- DavidDai\Administrator WORKGROUP\DAVIDDAI DAVIDDAI SYS 3
- DavidDai\Administrator WORKGROUP\DAVIDDAI DAVIDDAI EXIT 1
注意:对于LOGON PER SECOND很高的数据库,如果应用程序配置文件中的数据库用户密码不正确,同时应用在短期内发起大量会话登录数据库的话可能引发频繁的dc_users字典缓存锁,用户登录无法成功,乃至整个实例hang住。这个问题直接参考Maclean的blog:
Row Cache lock Problem
http://www.oracledatabase12g.com/archives/row-cache-lock-problem.html
关于Oracle 11g数据库审计功能的应用实例就介绍到这里了,希望本次的介绍能够对您有所收获!
【编辑推荐】