原 Oracle中的密码延迟验证是什么?如何屏蔽?
Tags: Oracle原创等待事件library cache lock密码延迟验证row cache lock
简介
从Oracle 11g开始,如果一个用户使用不正确的密码尝试登录数据库,那么随着登录失败次数的增加,每次登录验证前延迟等待的时间也会增加。
通过设置EVENTS 28401可以屏蔽密码延迟验证:
1 | ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE; |
设置该事件后重启数据库即可。
关于28401事件的解释如下所示:
1 2 3 4 5 6 7 8 | [oracle@orclalhr ~]$ oerr ora 28401 28401, 00000, "Event to disable delay after three failed login attempts" // *Document: NO // *Cause: N/A // *Action: Set this event in your environment to disable the login delay // which will otherwise take place after three failed login attempts. // *Note: THIS IS NOT A USER ERROR NUMBER/MESSAGE. THIS DOES NOT NEED TO BE // TRANSLATED OR DOCUMENTED. |
对于正常的系统,由于密码的更改,可能存在某些被遗漏的客户端,不断重复尝试使用错误密码登录数据库,从而引起数据库内部长时间的“library cache lock”或“row cache lock”的等待,这种情形非常常见。这种现象在Oracle 10.2和11.1中体现的等待事件为:“row cache lock”,而在Oracle 11.2中体现的等待事件为:“library cache lock”。
当出现这类问题时,非常典型的AWR报告呈现如下。首先在TOP 5中,可能会看到显著的library cache lock的等待,以下范例来自Oracle 11.2.0.3版本的真实情况:
若数据库版本小于11.2,则在AWR中可能的情况如下所示: