关于version_count 和 OPTIMIZER_COST
原文出自 http://xxscfh.itpub.net/post/304/49451
这两个视图对于dba诊断数据库问题,具有十分重要的意义。其中的某些字段需要我们了解和掌握……
1、version_count
这个字段表示有多少个child
cursors在一个parent下面。由于配置参数、执行环境(用户)等不同,即使一个相同的sql语句,在执行的过程中,会出现各种各样的执行计划。
每个执行计划的执行,也就产生了一个child
cursor。version_count就表示这个意义。如果这个值过太,那么我们很有可能就没有实现绑定变量。
如果确信实现了绑定变量,那么就是oracle的bug了。
搜索Metalink,Bug:1210242,该Bug描述为:
On certain SQL statements cursors are not shared when TIMED_STATISTICS is enabled.
我们可以通过以下方法来确定是否真的具有那么多的version_count:
- SQL> ALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level 4'; 来dump出内存来确信改sql是否具有那么多的version
- 通过查询v$sql (可以通过hash_value跟v$sqlarea联合)来看child_number的个数
2、OPTIMIZER_COST
要经常查看这个参数,表示的是优化器为此付出的代价
小小菜鸟一枚