12
返回列表 发新帖
楼主: xuebao_zx

[讨论] SQL version 版本过高。

[复制链接]
论坛徽章:
4
祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:20:57ITPUB9周年纪念徽章
日期:2010-10-08 09:34:02ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
11#
 楼主| 发表于 2010-1-25 01:32 | 只看该作者
应该如何来看待version_count值,如何理解?

是否在v$sql_shared_coursor视图中找不到相同版本的SQL,就需要解析一次,而version_count值就会加1呢。

那么v$sql_shared_coursor中的部分SQL过旧,被挤了出去,那么现次执行相同的SQL,此时相同版本在v$sql_shared_coursor找不到,就需要再次解析,version_count值就加1吗?
不知道我理解是否正常,请高人指点。。。。。

使用道具 举报

回复
论坛徽章:
13
生肖徽章2007版:蛇
日期:2009-09-29 15:44:15ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152010年世界杯参赛球队:日本
日期:2010-05-04 17:51:192010年世界杯参赛球队:南非
日期:2010-04-28 10:07:122010年世界杯参赛球队:希腊
日期:2010-04-23 16:19:412010新春纪念徽章
日期:2010-03-01 11:08:342010年世界杯参赛球队:科特迪瓦
日期:2010-01-27 14:47:432010年世界杯参赛球队:意大利
日期:2010-01-25 08:58:012010新春纪念徽章
日期:2010-01-04 08:33:08生肖徽章2007版:鼠
日期:2009-11-10 11:54:09
12#
发表于 2010-1-25 11:38 | 只看该作者

回复 #11 xuebao_zx 的帖子

I disagree with you.
could you please let me know how to identify that version_cout is equal to 2500?

使用道具 举报

回复
论坛徽章:
48
马上加薪
日期:2014-02-19 11:55:142011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB季度 技术新星
日期:2010-05-17 15:53:17数据库板块每日发贴之星
日期:2010-05-12 01:01:01数据库板块每日发贴之星
日期:2010-05-08 01:01:01数据库板块每日发贴之星
日期:2010-05-07 01:01:02数据库板块每日发贴之星
日期:2010-04-29 01:01:01
13#
发表于 2010-1-25 12:45 | 只看该作者
关注一下

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
14#
发表于 2010-1-26 04:51 | 只看该作者
xuebao_zx,

I'm confused about your words "证实一点,之前OPTIMIZER_MISMATCH 为Y的猜测是错的" in message #10. Earlier, you did not *猜测*, you actually showed it clearly you *had* OPTIMIZER_MISMATCH 为Y. See your message #7.

> 那么v$sql_shared_coursor中的部分SQL过旧,被挤了出去,那么现次执行相同的SQL,此时相同版本在
> v$sql_shared_coursor找不到,就需要再次解析,version_count值就加1吗?

Instead of saying "v$sql_shared_coursor中的部分SQL...被挤了出去", say SQLs in shared pool are aged out.

There're two cases. Normally when a SQL is aged out, the entire cursor, i.e. including its heap 0 and 6 are aged out. In that case, it makes no sense to talk about count of its remaining versions. But if only heap 6 is aged out, version_count stays unchanged. When the next parse occurs, version_count should not increase because Oracle simply adds a new heap 6 to an existing heap 0.

Also, don't ignore other people's messages, such as yanyp's message #9.

Yong Huang

使用道具 举报

回复
论坛徽章:
138
19周年集字徽章-19
日期:2020-06-08 08:30:56马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02路虎
日期:2013-11-22 12:26:18问答徽章
日期:2014-05-08 12:15:31
15#
发表于 2010-1-26 08:49 | 只看该作者
optimizer_mismatch不一定只是因为optimizer_mode不对,查查
v$sql_optimizer_env

使用道具 举报

回复
论坛徽章:
4
祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:20:57ITPUB9周年纪念徽章
日期:2010-10-08 09:34:02ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
16#
 楼主| 发表于 2010-1-26 15:23 | 只看该作者
Yong Huang
版主

通过测试已证实你所说的,
version_count与v$sql_shared_coursor过旧没有关系,当子游标过旧被挤出去时,下次执行会重新解析并放入v$sql_shared_coursor,而version_count不会发生变化.

使用道具 举报

回复
论坛徽章:
4
祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:20:57ITPUB9周年纪念徽章
日期:2010-10-08 09:34:02ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
17#
 楼主| 发表于 2010-1-26 15:32 | 只看该作者
原帖由 棉花糖ONE 于 2010-1-26 08:49 发表
optimizer_mismatch不一定只是因为optimizer_mode不对,查查
v$sql_optimizer_env



实验发现对session的优化模式做出语之后,sql_shared_coursor中会提示optimizer_mode_mismatch=Y,
而不是optimizer_mismatch=Y.

select version_count from v$sqlarea where sql_id='XXX';

可以看到version_count 值的增加。

使用道具 举报

回复
论坛徽章:
4
祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:20:57ITPUB9周年纪念徽章
日期:2010-10-08 09:34:02ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
18#
 楼主| 发表于 2010-1-26 15:41 | 只看该作者
感谢各位的参与,这个问题已解决,原来是绑定变量传入实参与定义的形参,
数据类型不同,执行过程中进行了隐含转换。

但想不通,为何会造成这么多的高版本,并且最终达到6000多个版本。
v$sql_shared_coursor给我的提示不光是,BIND_mismatch=Y,同时还有LANGUAGE_MISMATCH=Y,optimizer_mismatch=Y等等多个不匹配项,真奇怪!!!

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
19#
发表于 2010-1-27 02:56 | 只看该作者
If you want to understand this more, you have to open an SR. V$sql_shared_cursor is actually quite incomplete. Many mismatches are incorrectly lumped into bind_mismatch.

Yong Huang

使用道具 举报

回复
论坛徽章:
0
20#
发表于 2018-1-25 09:32 | 只看该作者
xuebao_zx 发表于 2010-1-24 11:04
通过测试明确一点,那就是绑定变量的传入值的改变,导致需要获取的数据量增加,从而使用ORACLE改变执行计划 ...

你说的这个是11g的自适应游标才这样吧。

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表