- 避免进程去扫描长长的子游标列表child cursor list以找到一个合适的子游标child cursor
- 废弃的游标将在一定时间内被age out,其占用的内存可以被重新利用
实际在版本10g中就引入了该Cursor Obsolescence游标废弃特性,当时child cursor 的总数阀值是1024, 但是这个阀值在11g中被移除了,这导致出现一个父游标下大量child cursor即high version count的发生;由此引发了一系列的版本11.2.0.3之前的cursor sharing 性能问题,主要症状是版本11.2.0.1和11.2.0.2上出现大量的Cursor: Mutex S 和 library cache lock等待事件。 增强补丁Enhancement patch《Bug 10187168 - Enhancement to obsolete parent cursors if VERSION_COUNT exceeds a threshold》就该问题引入了新的隐藏参数_cursor_obsolete_threshold(Number of cursors per parent before obsoletion.),该"_cursor_obsolete_threshold"参数用以指定子游标总数阀值,若一个父游标的child cursor count<=>version count高于"_cursor_obsolete_threshold",则触发Cursor Obsolescence游标废弃特性。 注意版本11.2.0.3中默认就有"_cursor_obsolete_threshold"了,而且默认值为100。 对于版本11.1.0.7、11.2.0.1和11.2.0.2则都有该Bug 10187168的bug backport存在,从2011年5月开始就有相关针对的one-off backport补丁存在。 但是这些one-off backport补丁不使用"_cursor_obsolete_threshold"参数。在版本11.1.0.7、11.2.0.1和11.2.0.2上需要设置合适的"_cursor_features_enabled"(默认值为2)参数,并设置必要的106001 event,该event的level值即是child cursor count的阀值,必须设置该106001事件后该特性才生效。 但是请注意
本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1278491