ITPub博客

首页 > 数据库 > Oracle > SQL多版本控制 - _CURSOR_OBSOLETE_THRESHOLD

SQL多版本控制 - _CURSOR_OBSOLETE_THRESHOLD

原创 Oracle 作者:pxbibm 时间:2015-07-01 10:20:16 0 删除 编辑


在盖老师的公开课中,提到了一个控制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博客 ” ,链接:https://blog.itpub.net/12798004/viewspace-1718565/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
【DBAplus社群】联合发起人。ACOUG核心成员,Oracle用户组年轻专家。熟悉Oracle的体系结构,擅长Oracle数据库架构规划、SQL优化、OWI方面性能的优化。曾服务于航天、航空、机车、大型制造行业数据库的维护以及系统开发工作,开发过基于Oracle数据库的大型ERP系统。
  • 博文量
    341
  • 访问量
    2469830