一、问题现象
oracle数据库密码修改后连接速度特别慢,甚至出现超时的问题,查询表也特别慢
更改密码后,每次连接异常慢,就算用正确的密码连接,验证延时也非常大,导致应用程序连接反复出现超时现象;
二、问题原因
经查实,这是由于11G的延迟密码特性引起,特别在一些自动连接特性的应用来说,如果密码认证错误,会一直累积密码验证时间,导致后面的正确验证也异常超时,这种问题一般发生在修改应用账户密码后,应用服务器没有及时更新数据库连接信息导致。
三、解决办法
如果需要修改应用账户密码,需要提前确定好那些应用服务器需要更改连接信息,需提前准备好相应的脚本,如应用太多,需要在更改后作出相应的监控措施,如:
检查数据库登录日志dba_audit_session,可以查出登录失败的主机和应用,通知架构负责人及时调整:
Select * From Dba_Audit_Session Where User_Name = 'mbs7_Oms' And Action_Name = 'logon' And Timestamp Between To_Date('2013-12-03 1:00:00', 'yyyy-mm-dd hh24:mi:ss') And To_Date('2013-12-03 2:10:00', 'yyyy-mm-dd hh24:mi:ss') Order By Sample_Time Desc
如处理不及时,导致用户被延迟认证特性阻塞,可用以下脚本在异常节点批量查杀远程连接进程的办法解决,脚本如下:
ps -ef | grep LOCAL=NO | awk '{print $2}' | xargs kill -9
这里注意的是:
查杀的同时要通知架构人员尽快清理连接缓存,另外注意查杀后,对于一些正常的连接进程要手工重新启动, 如审计库的远程连接进程等。
当然这个特性也可以设置屏蔽,通过设置EVENTS 28401可以屏蔽密码延迟验证:
SQL> ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;
设置该事件后重启数据库即可。
参考资料:
https://bbs.csdn.net/topics/391032982