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