Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

334

积分

0

好友

2

主题
1#
发表于 2013-5-10 18:11:06 | 查看: 5073| 回复: 5
一条sql,在awr的 sql order by version count中 版本数300,
但是 v$sql_shared_cursor中,这个sql 只有9条记录,
查询 v$sqlarea.version_count 在300 左右。  

后两个查询是在同一个时间点。
这是为什么呢?

我的理解是 对于同一条sql,同一个时间点 v$sql_shared_cursor里,应该有和当时的v$sqlarea.version_count一样多的记录数。

同一sql_id在v$sql 和v$sql_shared_cursor中的记录数是一样的。

例如:

  1. SQL> select version_count from v$sqlarea where sql_id='275m6zph100fq';

  2. VERSION_COUNT
  3. -------------
  4.             356

  5. SQL> select count(*) from v$sql_shared_cursor where sql_id='275m6zph100fq';

  6.   COUNT(*)
  7. ----------
  8.          9

  9. SQL> select count(*) from v$sql where sql_id='275m6zph100fq';

  10.   COUNT(*)
  11. ----------
  12.          9
复制代码
2#
发表于 2013-5-10 18:16:43
v$fixed_view_definiton 通过这个视图可以看到底层定义,两个获取的基表不一样的!
10G时version的计数确实不正确了,只能参考用 ps:我是这么认为的

回复 只看该作者 道具 举报

3#
发表于 2013-5-10 19:11:49
Hank-D 发表于 2013-5-10 18:16
v$fixed_view_definiton 通过这个视图可以看到底层定义,两个获取的基表不一样的!
10G时version的计数确实 ...

基表是不一样。
但是v$sql 和 v$sql_shared_cursor的基表也不一样啊

回复 只看该作者 道具 举报

4#
发表于 2013-5-11 13:07:31
我的理解:  V$SQLAREA是对该父游标下 不同版本child cursor的计数,

而 V$SQL 和 V$SQL_SRARED_CURSOR是当前 shared pool中有的子游标个数

回复 只看该作者 道具 举报

5#
发表于 2013-5-11 13:07:44
具体你可以dump librarycache level 11来看一下

回复 只看该作者 道具 举报

6#
发表于 2013-5-13 11:11:05
Maclean Liu(刘相兵 发表于 2013-5-11 13:07
我的理解:  V$SQLAREA是对该父游标下 不同版本child cursor的计数,

而 V$SQL 和 V$SQL_SRARED_CURSOR是 ...

测试 了一下: 如果父游标没有被挤 出 (在v$sqlarea中存在),那么version_count是累积的,

如果父游标被挤出,那么version_count会从0开始重新计算

V$SQLAREA是对该父游标下 不同版本child cursor的计数  这是对的。前提是父游标一直在shared_pool中。

谢谢ML

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-5-20 06:00 , Processed in 0.048350 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569