实验目标:测试oracle 11g“密码延迟验证”特性.
Oracle11g引入了“密码延迟验证”的新特性,如果输入错误的密码登录,随着错误密码登录次数的增加,每次登录前验证的时间相应也会增加,此功能目的在于避免黑客将数据库密码攻破.
但对于正常系统,由于口令的更改,特别是从10g(默认密码不区分大小写)升级到11g(默认密码区分大小写),客户端不断重复错误密码尝试登陆,此时就会引起数据库内部长时间的LibraryCache Lock等待,这种异常状态在生产环境并不少见.
以下模拟该场景:
数据库:oracle 11.2.0.4
20:32:18SQL> conn liujun/leo (登陆消耗3秒)
ERROR:
ORA-01017:invalid username/password; logon denied
Warning:You are no longer connected to ORACLE.
20:32:21SQL> conn liujun/leo (登陆消耗2秒)
ERROR:
ORA-01017:invalid username/password; logon denied
20:32:23SQL> conn liujun/leo (登陆消耗4秒)
ERROR:
ORA-01017:invalid username/password; logon denied
20:32:27SQL> conn liujun/leo (登陆消耗3秒)
ERROR:
ORA-01017:invalid username/password; logon denied
20:32:30SQL> conn liujun/leo (登陆消耗4秒)
ERROR:
ORA-01017:invalid username/password; logon denied
20:32:34SQL> conn liujun/leo (登陆消耗5秒)
ERROR:
ORA-01017:invalid username/password; logon denied
20:32:39SQL> conn liujun/leo (登陆消耗5秒)
ERROR:
ORA-01017:invalid username/password; logon denied
20:32:44SQL> conn liujun/leo (登陆消耗7秒)
ERROR:
ORA-01017:invalid username/password; logon denied
20:32:51SQL> conn liujun/leo
ERROR:
ORA-01017:invalid username/password; logon denied
20:33:00SQL> conn liujun/leo (登陆消耗9秒)
ERROR:
ORA-28000:the account is locked
实验环境一个session尚且这样,若是生产环境,成百上千的session都使用错误的密码连接过来,就会造成严重的LibraryCache Lock的等待事件.
前端用户使用错误密码登录过多,就会导致输入正确的密码也需要等待很久,感觉就是数据库hang住.不过该账号一旦输入正确密码,延时就会清0.
遇到该问题,可以通过event28401关闭该特性:
altersystem set event='28401 trace name context forever,level 1' scope=spfile;
说明:参数SEC_CASE_SENSITIVE_LOGON控制密码大小写敏感
Mos文档:【Doc ID 1309738.1】