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


您有 2 条公共消息
  • 来自: 公共消息 标题: 3-5月ITPUB数据库 ... 内容: ITPUB与3月和5月分别安排了Oracle 11g DBA和Oracle性能优化培训,以及 ...
  • 来自: 公共消息 标题: ITPUB邮箱已经恢复 内容: ITPUB邮箱用户请注意,邮箱现在已经恢复 web访问地址 http://emai ...

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


    精华贴数 52
    个人空间 400
    技术积分 47987 (18)
    社区积分 3611 (504)
    注册日期 2002-5-26
    论坛徽章:49
    现任管理团队成员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 (385)
    社区积分 3 (25136)
    注册日期 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 (4439)
    社区积分 68 (5170)
    注册日期 2001-12-30
    论坛徽章:1
    授权会员     
          

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

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


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


    精华贴数 1
    个人空间 0
    技术积分 10924 (140)
    社区积分 4060 (462)
    注册日期 2002-1-20
    论坛徽章:41
    现任管理团队成员ITPUB元老ITPUB北京九华山庄2008年会纪念徽章参与2007年甲骨文全球大会(中国上海)纪念管理团队2006纪念徽章蓝锆石
    会员2007贡献徽章会员2006贡献徽章授权会员2010年世界杯参赛球队:瑞士2010新春纪念徽章2010年世界杯参赛球队:意大利

    发表于 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
    技术积分 10924 (140)
    社区积分 4060 (462)
    注册日期 2002-1-20
    论坛徽章:41
    现任管理团队成员ITPUB元老ITPUB北京九华山庄2008年会纪念徽章参与2007年甲骨文全球大会(中国上海)纪念管理团队2006纪念徽章蓝锆石
    会员2007贡献徽章会员2006贡献徽章授权会员2010年世界杯参赛球队:瑞士2010新春纪念徽章2010年世界杯参赛球队:意大利

    发表于 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
    个人空间 69126
    技术积分 49460 (15)
    社区积分 3213 (554)
    注册日期 2001-12-29
    论坛徽章:162
    现任管理团队成员BLOG每日发帖之星2010新春纪念徽章2010年世界杯参赛球队:意大利BLOG每日发帖之星BLOG每日发帖之星
    BLOG每日发帖之星BLOG每日发帖之星BLOG每日发帖之星2010新春纪念徽章  

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


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

    http://yangtingkun.itpub.net

    个人BLOG文章索引:http://www.itpub.net/699527.html

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


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

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


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


    精华贴数 52
    个人空间 400
    技术积分 47987 (18)
    社区积分 3611 (504)
    注册日期 2002-5-26
    论坛徽章:49
    现任管理团队成员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
      下载次数: 61
    trace.rar (4.16 KB)
     
    __________________
    有事情请发Gmail邮箱,站内IM可能不能及时回复。    

    ***Chanel [K]***



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


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

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


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


    精华贴数 52
    个人空间 400
    技术积分 47987 (18)
    社区积分 3611 (504)
    注册日期 2002-5-26
    论坛徽章:49
    现任管理团队成员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号 联系我们