疯狂老司机 2020-01-01
重点:
为什么重启应用无法解决?
1、kill session:故障发生后数据库端进行kill session操作,但是因为有连接池,所以连接池会尝试重连数据库,kill 后的重连在连接池上几乎是并发的,因此负载也很高,所以kill session不行;
2、重启应用:重启应用前数据库端的latch竞争一直都有,大量的活动会话并没有释放。如果这个时候重启应用还是会有新的连接进来,这些新进的连接依然会进入到队列中等待,继而加剧争用,因为重启并不会中止数据库上之前的连接,所以重启应用也不行;
3、关闭应用并kill session:应该关闭应用,然后数据库端kill session,再启动应用。
参考文档:重启大法失效?详述Oracle11g因JDBC bug引发异常Library Cache Lock等待处理事件