chenhuiggggg

2019-12-30

详述Oracle11g因JDBC bug引发异常Library Cache Lock等待处理事件

墨墨导读:在Oracle 11g 版本中可能出现由于JDBC bug导致sql绑定变量无法共享,过期游标过多的情况,此时如果发生大量并发业务,很有可能造成异常librarycache lock等待事件,造成数据库突发性能问题。在此,我们分享一次由jdbc bug和绑定变量长度问题共同“作案”引发数据库性能故障的案例。library cache lock等待事件是Oracle数据库较为常见的等待事件之一,在之前的几次月刊中,我们也提到过产生library cache lock等待出现的原因有很多,如登录密码错误尝试过多、热表收集统计信息和SQL解析失败等。查看故障期间数据库发现大量librarycache lock等待,数据库活动会话飙升至1000以上,数据库响应非常缓慢,业务受到严重影响。故障时间段内的TOP EVENT主要表现在library cache lock和library cache: mutex X等待上。从AWR中可以看出SQL AREA BUILD被请求次数是最多的,这跟ASH中大量library cache lock是吻合的,SQL AREA中cursro reloads次数也达到10740