最近有好几个数据库上面出现了共享池争用问题。
但由于一些材料都是在内网无法取出,只好用文字描述一番。
问题描述:
在早上9点到9点20之前,alert日志报出大量ora-3136的问题,应用上反应数据库无法连接。
生成awr报告分析后发现,top 5等待事件都是shared pool相关的等待,于是分析是由于共享池争用导致oracle无法及时处理新的连接请求。
接下来自然是要分析为何共享池出现争用问题。
一般共享池争用问题多是由于硬解析过于严重,然后发现awr报告里面显示library cache hit才77%,顿时觉得找到原因了。。。
但是接着分析其他业务时间,发现library cache hit也是77%左右,但并未出现那么严重的共享池方面争用。。。
且sga是自动管理的,共享池处于增长状态,而buffer cache则相应的被shrink。。。。
查了下库上硬解析语句,发现也不是特别多,这就比较奇怪了,按说共享池争用严重到影响数据库连接,不应该如此无迹可寻。。。
无意间查了下vv$active_session_history视图,发现9点到9点20这个时间段,会话数远超平时,平时只有几百个,而这次竟有4万多。。。
这下子便可以解释通了:
数据库上本身library cache的命中率就不高,当大量会话连接,且多是硬解析语句,共享池争用便体现出来了。。。。。。
抓出这些突增的sql语句,交给业务人员分析。。。。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
今年又是很多故事要发生。。。。