ITPUB??ì3
ITPUB论坛 » Oracle数据库管理 » 一个很奇怪的问题,分析数据会影响Oracle使用RBO的判断?

标题: 一个很奇怪的问题,分析数据会影响Oracle使用RBO的判断?
离线 Kamus
版主


精华贴数 52
个人空间 400
技术积分 47623 (15)
社区积分 3596 (455)
注册日期 2002-5-26
论坛徽章:42
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章蓝色妖姬紫蜘蛛

发表于 2005-1-4 15:21 
一个很奇怪的问题,分析数据会影响Oracle使用RBO的判断?

今天,现场人员报告说,历史查询服务器很慢,一样的SQL放到主库中运行比转发到历史查询库上要快很多。

于是要来SQL,在两个库中分别查看执行计划。
select /*+rule*/ cola,colb
from tablea
where  colc in (....)
and cold >= 111 and cold <=222;

主库中是使用了cold上的索引,而历史库中则使用了全表扫描,这是导致查询速度差异的原因。

但是问题是,仔细检查了两个库中的表,所有的列定义,索引定义,分区定义都是一样的,而且由于SQL中明确指定了/*+RULE*/的提示,所以也排除了数据在两个库中分布不一样的问题。

cold是表的PK中的第一个字段。

以下所有的操作都是在历史库中进行的:
1。去除了/*+RULE*/提示,改用FIRST_ROWS,执行计划没有变化,仍然使用了全表扫描,改为/*+use_index(table,index)*/,仍然全表扫描。

2。作了一次25%的estimate,使用FIRST_ROWS,执行计划改变为使用正确的索引了。但是/*+RULE*/和/*+use_index(table,index)*/仍然全表扫描

3。作100053的trace,奇怪的问题出现了,居然udump目录中不生成任何trace文件。
alter session set events '10053 trace name context forever, level 1';
explain plan for ...
alter session set events '10053 trace name context off';

4。于是禁用主键,同时删除了index,然后重新启用主键,此时unique index自动创建了。再次查看执行计划,全部正常了。

5。用dbms_stats包gather_table_stats,重新执行SQL,发现又再次变为全表扫描

6。用dbms_stats包delete_table_stats之后重新开始使用索引。

至此基本上明白是统计信息的收集导致了在使用/*+RULE*/时,SQL没有正确地遵守RBO的规则。
奇怪的问题。

100053没有trace生成也是奇怪的问题。

数据库 是8174
optimizer_mode设置为first_rows


__________________
有事情请发Gmail邮箱,站内IM可能不能及时回复。    

***Chanel [K]***



从明天起, 做一个幸福的人  
喂马, 劈柴, 周游世界  
从明天起, 关心粮食和蔬菜  
我有一所房子 面朝大海, 春暖花开
只看该作者    顶部
离线 oracle-plus
喝一杯咖啡~~


精华贴数 0
个人空间 0
技术积分 4468 (357)
社区积分 3 (22645)
注册日期 2004-8-19
论坛徽章:2
会员2006贡献徽章授权会员    
      

发表于 2005-1-4 15:38 
你有沒有試過用alter session set OPTIMIZER_MODE=ture?
然後用select cola,colb
from tablea
where colc in (....)
and cold >= 111 and cold <=222;
?


__________________
學無止境!做IT人,更是如此!
只看该作者    顶部
离线 abcd
┖ 選擇離開 ┐



精华贴数 0
个人空间 0
技术积分 524 (4110)
社区积分 68 (4770)
注册日期 2001-12-30
论坛徽章:1
授权会员     
      

发表于 2005-1-4 15:39 
是不是就是/*+RULE*/ 的 HINTS没起作用?
817在+后面还需要空格吧,有吗?

以前发现过,在有的时候确实HINTS不起作用。


__________________
随风飘逝。。。
只看该作者    顶部
离线 玉面飞龙
斧头帮帮主


精华贴数 1
个人空间 0
技术积分 10638 (131)
社区积分 3892 (427)
注册日期 2002-1-20
论坛徽章:32
现任管理团队成员ITPUB元老ITPUB北京九华山庄2008年会纪念徽章参与2007年甲骨文全球大会(中国上海)纪念管理团队2006纪念徽章蓝锆石
会员2007贡献徽章会员2006贡献徽章授权会员生肖徽章2007版:鼠生肖徽章2007版:猴生肖徽章2007版:虎

发表于 2005-1-4 15:43 
alter session set events '10053 trace name context forever, level 1';
explain plan for ...
alter session set events '10053 trace name context off';
10053只适用于cbo,rbo的情况下不会产生trace文件


5。用dbms_stats包gather_table_stats,重新执行SQL,发现又再次变为全表扫描
6。用dbms_stats包delete_table_stats之后重新开始使用索引。

就很奇怪。


__________________
http://www.yumianfeilong.com 包括 oracle技术,投资理财,财经评论等~

欢迎访问
只看该作者    顶部
离线 玉面飞龙
斧头帮帮主


精华贴数 1
个人空间 0
技术积分 10638 (131)
社区积分 3892 (427)
注册日期 2002-1-20
论坛徽章:32
现任管理团队成员ITPUB元老ITPUB北京九华山庄2008年会纪念徽章参与2007年甲骨文全球大会(中国上海)纪念管理团队2006纪念徽章蓝锆石
会员2007贡献徽章会员2006贡献徽章授权会员生肖徽章2007版:鼠生肖徽章2007版:猴生肖徽章2007版:虎

发表于 2005-1-4 15:45 


QUOTE:
最初由 abcd 发布
是不是就是/*+RULE*/ 的 HINTS没起作用?
817在+后面还需要空格吧,有吗?

以前发现过,在有的时候确实HINTS不起作用。


似乎不加空格也可以。 注意  Optimizer=HINT: RULE


Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

SQL> set atuottrace on
SP2-0158: unknown SET option "atuottrace"
SQL> set autotrace on
SQL> select /*+ rule */ count(*) from t;
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=HINT: RULE
   1    0   SORT (AGGREGATE)
   2    1     TABLE ACCESS (FULL) OF 'T'


SQL> select /*+rule*/ count(*) from t;

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=HINT: RULE
   1    0   SORT (AGGREGATE)
   2    1     TABLE ACCESS (FULL) OF 'T'


SQL> select /*+rule */ count(*) from t;

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=HINT: RULE
   1    0   SORT (AGGREGATE)
   2    1     TABLE ACCESS (FULL) OF 'T'


SQL> select /*+ rule*/ count(*) from t;

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=HINT: RULE
   1    0   SORT (AGGREGATE)
   2    1     TABLE ACCESS (FULL) OF 'T'


__________________
http://www.yumianfeilong.com 包括 oracle技术,投资理财,财经评论等~

欢迎访问
只看该作者    顶部
离线 yangtingkun
版主


精华贴数 12
个人空间 44924
技术积分 49161 (14)
社区积分 3211 (498)
注册日期 2001-12-29
论坛徽章:144
现任管理团队成员NBA季后赛纪念徽章参与2009年中国云计算大会纪念NBA常规赛纪念章生肖徽章2007版:鸡生肖徽章2007版:羊
BLOG每日发帖之星     

发表于 2005-1-4 15:47 
analyze是否产生同样的影响?


__________________
学习ORACLE最大的障碍是什么——浮躁

http://yangtingkun.itpub.net

个人BLOG文章索引:http://www.itpub.net/showthread.php?s=&threadid=699527

11g的一点研究:http://www.itpub.net/852861.html
只看该作者    顶部
离线 prada_gu
顾三


精华贴数 16
个人空间 0
技术积分 27089 (36)
社区积分 6054 (289)
注册日期 2001-12-22
论坛徽章:25
现任管理团队成员IT宝贝    
      

发表于 2005-1-4 15:56 
把索引重建一下,再把表重新分析一下看看呢


__________________
只看该作者    顶部
离线 Kamus
版主


精华贴数 52
个人空间 400
技术积分 47623 (15)
社区积分 3596 (455)
注册日期 2002-5-26
论坛徽章:42
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章蓝色妖姬紫蜘蛛

发表于 2005-1-4 16:38 
MD,现在可以作trace了,莫名其妙

.full是在作了分析以后,再抓取SQL执行计划的trace文件
.indx是在删除了分析数据以后,再抓取SQL执行计划的trace文件


重新上传了




Kamus 上传了这个附件:
2005-1-4 17:04
  下载次数: 57
trace.rar (4.16 KB)
 
__________________
有事情请发Gmail邮箱,站内IM可能不能及时回复。    

***Chanel [K]***



从明天起, 做一个幸福的人  
喂马, 劈柴, 周游世界  
从明天起, 关心粮食和蔬菜  
我有一所房子 面朝大海, 春暖花开
只看该作者    顶部
离线 logzgh
缥缈游侠


精华贴数 4
个人空间 0
技术积分 3672 (444)
社区积分 50 (5555)
注册日期 2004-8-5
论坛徽章:0
      
      

发表于 2005-1-4 16:45 
附件有问题,无法下载


__________________
我们就是数据库的医生诊断数据库问题就像看病一样,望闻问切=======MSN:logzgh@hotmail.com=======欢迎访问我的Bloghttp://blog.itpub.net/logzgh=======
只看该作者    顶部
离线 Kamus
版主


精华贴数 52
个人空间 400
技术积分 47623 (15)
社区积分 3596 (455)
注册日期 2002-5-26
论坛徽章:42
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章蓝色妖姬紫蜘蛛

发表于 2005-1-4 16:48 


QUOTE:
最初由 yangtingkun 发布
analyze是否产生同样的影响?

同样的影响


__________________
有事情请发Gmail邮箱,站内IM可能不能及时回复。    

***Chanel [K]***



从明天起, 做一个幸福的人  
喂马, 劈柴, 周游世界  
从明天起, 关心粮食和蔬菜  
我有一所房子 面朝大海, 春暖花开
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰网域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:060528号 联系我们 法律顾问