![bb](http://img.blog.itpub.net/blog/attachment/201507/1/12798004_1435716619Oaol.png?x-oss-process=style/bb)
在盖老师的公开课中,提到了一个控制SQL多版本的参数,有很多朋友讨论,这个参数是:_CURSOR_OBSOLETE_THRESHOLD 。
为什么会有这个参数呢?请看下面这个示意图,这是一个真实的生产环境,第一个SQL显示,其Version Count已经达到了26万个,这不仅仅占用了内存,而且会使得SQL解析延迟:
对于版本过多的SQL,一次软解析甚至不如重新执行一次硬解析来的高效,所以Oracle引入了一系列的控制手段来处理这些特殊的游标。
在11.2.0.3之后,这些解决方案最终形成了一个隐含参数,也就是 _CURSOR_OBSOLETE_THRESHOLD,其作用是当SQL版本超过这个参数设定后,直接舍弃这个游标,重新解析,重头开始。在这一版本之前,通过补丁和参数("_cursor_features_enabled" 和 event 106001)可以达成类似的效果。
Oracle的很多细节控制都是体贴入微的,且用且珍惜吧。
关于SQL的多版本,MOS文章 296377.1 非常值得仔细看看。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12798004/viewspace-1718565/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12798004/viewspace-1718565/