ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 1087|回复: 18

PLAN_HASH_VALUE 和 CHILD_NUMBER 都能识别子游标的执行计划,但却没一一匹配?

[复制链接]
论坛徽章:
304
奥迪
日期:2013-07-29 13:45:59红旗
日期:2014-02-07 10:47:20路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
发表于 2017-10-30 10:05 | 显示全部楼层 |阅读模式
ORACLE 11204, 

查看过,同一SQL_ID的PLAN_HASH_VALUE 下还可以有多个子游标?难道PLAN_HASH_VALUE 还不能唯一识别执行计划?

论坛徽章:
116
现任管理团队成员
日期:2011-05-07 01:45:08娜美
日期:2017-08-29 10:15:28
发表于 2017-10-30 13:15 | 显示全部楼层
不能,只要相同plan hash只能代表执行计划相同。并不代表sql在同一次硬解析下完成
来自苹果客户端来自客户端

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
发表于 2017-10-30 14:17 | 显示全部楼层
SQL语句(1)<-->(n)子游标;
子游标(m)<-->(n)执行计划;
plan_hash_value可以唯一识别执行计划,没什么其下还有多个子游标之说。

使用道具 举报

回复
论坛徽章:
304
奥迪
日期:2013-07-29 13:45:59红旗
日期:2014-02-07 10:47:20路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
 楼主| 发表于 2017-10-30 17:38 | 显示全部楼层
sqysl 发表于 2017-10-30 14:17
SQL语句(1)(n)子游标;
子游标(m)(n)执行计划;
plan_hash_value可以唯一识别执行计划,没什么其 ...

这就回到最初的问题上了,为何会有多个子游标?

使用道具 举报

回复
论坛徽章:
304
奥迪
日期:2013-07-29 13:45:59红旗
日期:2014-02-07 10:47:20路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
 楼主| 发表于 2017-10-30 17:41 | 显示全部楼层
sqysl 发表于 2017-10-30 14:17
SQL语句(1)(n)子游标;
子游标(m)(n)执行计划;
plan_hash_value可以唯一识别执行计划,没什么其 ...

看看这种情况,为何出现3个子游标?
SQL>select sql_id, plan_hash_value, child_number  from v$sql where sql_id='0z7urrujts018' and plan_hash_value='3200232780';

SQL_ID                     PLAN_HASH_VALUE CHILD_NUMBER
-------------------------- --------------- ------------
0z7urrujts018                   3200232780            0
0z7urrujts018                   3200232780            1
0z7urrujts018                   3200232780            2

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
发表于 2017-10-30 18:39 | 显示全部楼层
ZALBB 发表于 2017-10-30 17:41
看看这种情况,为何出现3个子游标?
SQL>select sql_id, plan_hash_value, child_number  from v$sql wh ...

一个父游标对应多个子游标,这个没问题,也是很常见的,原因比较多,网上相关资料挺多的,你可以搜下参考,具体也可以参考视图V$SQL_SHARED_CURSOR。

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
发表于 2017-10-30 19:25 来自手机 | 显示全部楼层
ZALBB 发表于 2017-10-30 17:41
看看这种情况,为何出现3个子游标?
SQL>select sql_id, plan_hash_value, child_number  from v$sql wh ...

你这种情况,就是一个SQL有多个子游标,多个子游标用一个执行计划。

使用道具 举报

回复
论坛徽章:
304
奥迪
日期:2013-07-29 13:45:59红旗
日期:2014-02-07 10:47:20路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
 楼主| 发表于 2017-10-30 22:15 | 显示全部楼层
sqysl 发表于 2017-10-30 18:39
一个父游标对应多个子游标,这个没问题,也是很常见的,原因比较多,网上相关资料挺多的,你可以搜下参考 ...

我的意思是,多个子游标,是因为执行计划不同而衍生出来,现在发现执行计划相同,但子游标却不同,这不合理,

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
发表于 2017-10-30 22:31 来自手机 | 显示全部楼层
ZALBB 发表于 2017-10-30 22:15
我的意思是,多个子游标,是因为执行计划不同而衍生出来,现在发现执行计划相同,但子游标却不同,这不合 ...

多个子游标是因为执行计划不同衍生出来的?你从哪里看到的?还是从哪里听说的?我觉得这样理解欠妥,你看看我贴出的那个视图,估计就明白了。

使用道具 举报

回复
认证徽章
论坛徽章:
22
ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:00天枰座
日期:2016-01-18 10:58:39马上加薪
日期:2014-10-21 18:48:25马上加薪
日期:2014-10-21 18:48:312015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39沸羊羊
日期:2015-06-11 17:08:14巨蟹座
日期:2015-07-10 09:11:44秀才
日期:2016-02-18 10:08:14秀才
日期:2016-06-23 14:15:06
发表于 2017-11-1 10:56 | 显示全部楼层
Oracle认为不安全(或许环境发生了一些变化,或许是条件传入的问题,或许是直方图的问题),CBO重新解析了一次SQL,所产生的执行计划可能相同,也可能不同

使用道具 举报

回复

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

本版积分规则

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