ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle数据库管理 » outline 问题

标题: outline 问题
离线 mascot7



精华贴数 0
个人空间 0
技术积分 42 (32440)
社区积分 229 (2280)
注册日期 2008-3-12
论坛徽章:0
      
      

发表于 2008-8-29 17:11 
outline 问题

SQL>  create outline ol_t1 for category cc on select count(*) from t1;
Outline created.
SQL> select count(*) from t1;
  COUNT(*)
----------
    314496

Execution Plan
----------------------------------------------------------
Plan hash value: 3693069535
-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |   912   (1)| 00:00:11 |
|   1 |  SORT AGGREGATE    |      |     1 |            |          |
|   2 |   TABLE ACCESS FULL| T1   |   314K|   912   (1)| 00:00:11 |
-------------------------------------------------------------------
Note
-----
   - outline "OL_T1" used for this statement

Statistics
----------------------------------------------------------
         34  recursive calls
        147  db block gets
       4151  consistent gets
          0  physical reads
        576  redo size
        517  bytes sent via SQL*Net to client
        492  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
          1  rows processed
SQL> create index ind_t1 on t1(object_id);
Index created.
SQL> alter session set use_stored_outlines=cc;
Session altered.
SQL> select count(*) from t1;
  COUNT(*)
----------
    314496

Execution Plan
----------------------------------------------------------
Plan hash value: 2450975207
------------------------------------------------------------------------
| Id  | Operation             | Name   | Rows  | Cost (%CPU)| Time     |
------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |        |     1 |   159   (3)| 00:00:02 |
|   1 |  SORT AGGREGATE       |        |     1 |            |          |
|   2 |   INDEX FAST FULL SCAN| IND_T1 |   314K|   159   (3)| 00:00:02 |
------------------------------------------------------------------------
Note
-----
   - outline "OL_T1" used for this statement

Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
        709  consistent gets
        702  physical reads
          0  redo size
        517  bytes sent via SQL*Net to client
        492  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed


请问为啥2次执行用的一个Outline ,执行计划确不同呢?而且从outln.ol$hints看,ol_t1就是全表扫描,为啥第二次就走了索引呢?

SQL> L
  1* select OL_NAME,CATEGORY, HINT_TEXT from outln.ol$hints where ol_name='OL_T1'
SQL> /
OL_NAME    CATEGORY   HINT_TEXT
---------- ---------- ----------------------------------------------------------------------
OL_T1      CC         FULL(@"SEL$1" [email=]"T1"@"SEL$1[/email]")
OL_T1      CC         OUTLINE_LEAF(@"SEL$1")
OL_T1      CC         ALL_ROWS
OL_T1      CC         OPT_PARAM('optimizer_dynamic_sampling' 0)
OL_T1      CC         OPTIMIZER_FEATURES_ENABLE('10.2.0.4')
OL_T1      CC         IGNORE_OPTIM_EMBEDDED_HINTS


只看该作者    顶部
离线 sqlanywhere
中级会员


精华贴数 0
个人空间 0
技术积分 1233 (1448)
社区积分 2 (24727)
注册日期 2003-7-24
论坛徽章:5
ITPUB元老授权会员2008北京奥运纪念徽章:赛艇2008北京奥运纪念徽章:皮划艇激流回旋数据库板块每日发贴之星 
      

发表于 2008-8-29 17:18 
OUTLINE只是希望ORA按你的计划去执行

但当ORACLE发现现有系统有更有效的路径时,会不按OUTLINE约定的去实现


__________________
只看该作者    顶部
离线 小虫08


来自 天津
精华贴数 0
个人空间 0
技术积分 4200 (348)
社区积分 245 (2189)
注册日期 2008-8-8
论坛徽章:25
红宝石萤石蓝锆石紫水晶海蓝宝石祖母绿
数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星

发表于 2008-8-29 17:20 
学习了


__________________
梦想有多远,就能走多远!
只看该作者    顶部
离线 小虫08


来自 天津
精华贴数 0
个人空间 0
技术积分 4200 (348)
社区积分 245 (2189)
注册日期 2008-8-8
论坛徽章:25
红宝石萤石蓝锆石紫水晶海蓝宝石祖母绿
数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星

发表于 2008-8-29 17:20 


QUOTE:
原帖由 sqlanywhere 于 2008-8-29 17:18 发表
但当ORACLE发现现有系统有更有效的路径时,会不按OUTLINE约定的去实现

那OUTLINE的主要作用是啥,不就是固定执行计划吗?


__________________
梦想有多远,就能走多远!
只看该作者    顶部
离线 mascot7



精华贴数 0
个人空间 0
技术积分 42 (32440)
社区积分 229 (2280)
注册日期 2008-3-12
论坛徽章:0
      
      

发表于 2008-8-29 17:25 


QUOTE:
原帖由 sqlanywhere 于 2008-8-29 17:18 发表
但当ORACLE发现现有系统有更有效的路径时,会不按OUTLINE约定的去实现

are you sure?
问题是如果oracle认为的执行计划不是很有效,怎么办?


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


精华贴数 51
个人空间 400
技术积分 46804 (13)
社区积分 3565 (391)
注册日期 2002-5-26
论坛徽章:30
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章授权会员2008北京奥运纪念徽章:跳水

发表于 2008-8-29 17:29 


QUOTE:
原帖由 sqlanywhere 于 2008-8-29 17:18 发表
但当ORACLE发现现有系统有更有效的路径时,会不按OUTLINE约定的去实现

这个不太对。。。

但是楼主的问题确实挺有趣的,测试一下。


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

***Chanel [K]***

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


精华贴数 0
个人空间 0
技术积分 1233 (1448)
社区积分 2 (24727)
注册日期 2003-7-24
论坛徽章:5
ITPUB元老授权会员2008北京奥运纪念徽章:赛艇2008北京奥运纪念徽章:皮划艇激流回旋数据库板块每日发贴之星 
      

发表于 2008-8-29 17:32 
OUTLINE应用情况之一

开发环境与生产环境基本一致,包括硬件,软件,表,用户,等等
当在开发环境调整为最优的时候,做一个OUTLINE,直接应用到生产里,就不用再考虑tuning了


__________________
只看该作者    顶部
离线 mascot7



精华贴数 0
个人空间 0
技术积分 42 (32440)
社区积分 229 (2280)
注册日期 2008-3-12
论坛徽章:0
      
      

发表于 2008-8-29 17:33 
谢版主!

SQL> show parameter statistics_level

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
statistics_level                     string      TYPICAL

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for Solaris: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production


只看该作者    顶部
离线 sqlanywhere
中级会员


精华贴数 0
个人空间 0
技术积分 1233 (1448)
社区积分 2 (24727)
注册日期 2003-7-24
论坛徽章:5
ITPUB元老授权会员2008北京奥运纪念徽章:赛艇2008北京奥运纪念徽章:皮划艇激流回旋数据库板块每日发贴之星 
      

发表于 2008-8-29 17:55 
up

关注......


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


精华贴数 51
个人空间 400
技术积分 46804 (13)
社区积分 3565 (391)
注册日期 2002-5-26
论坛徽章:30
现任管理团队成员2007年度ITPUB最佳技术原创精华ITPUB元老ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念
ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章授权会员2008北京奥运纪念徽章:跳水

发表于 2008-8-29 19:13 
这似乎是10.2.0.4的问题,我在10.2.0.1里面测试,一切正常。


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

***Chanel [K]***

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


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