关于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

要经常查看这个参数,表示的是优化器为此付出的代价

原文地址:https://www.cnblogs.com/princessd8251/p/2986307.html