Chinaunix首页 | 论坛 | 博客
  • 博客访问: 497336
  • 博文数量: 161
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1947
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-25 01:20
文章分类

全部博文(161)

文章存档

2011年(44)

2010年(47)

2009年(48)

2008年(22)

我的朋友

分类: 数据库开发技术

2010-09-27 16:36:45

运行utlxplan,
run create public synonym plan_table for plan_table
run grant all on plan_table to pubic

Plustrace 权限生成
SQL>conn / as sysdba
SQL>@?/sqlplus/admin/plustrace.sql

给于用户plustrace权限
SQL> grant PLUSTRACE to scott;

给某用户生成plan table
SQL> @?/rdbms/admin/utlxplan.sql


查看执行计划的三种方法

 1设置autotrace

序号

命令

解释

1

SET AUTOTRACE OFF

此为默认值,即关闭Autotrace 

2

SET AUTOTRACE ON EXPLAIN

只显示执行计划

3

SET AUTOTRACE ON STATISTICS

 只显示执行的统计信息

4

SET AUTOTRACE ON

 包含2,3两项内容

5

SET AUTOTRACE TRACEONLY

 ON相似,但不显示语句的执行结果

 



2使用sql

示例:

SQL> EXPLAIN PLAN FOR SELECT * FROM DAVE;

已解释。

SQL> SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));

PLAN_TABLE_OUTPUT

3使用toad,pl/sql,develop工具


查看执行计划

cardinality(基数)/rows

表示CBO从一个行源(row source)返回的记录数,

9icardinality 缩写成card

10g中,card值被rows替换


Cardinality的值对于CBO做出正确的执行计划来说至关重要

SQL> SET AUTOTRACE TRACEONLY;  -- 只显示执行计划,不显示结果集

SQL> select * from scott.emp a,scott.emp b where a.empno=b.mgr;

已选择13行。

 执行计划

----------------------------------------------------------

Plan hash value: 992080948
---------------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 13 | 988 | 6 (17)| 00:00:01 |
| 1 | MERGE JOIN | | 13 | 988 | 6 (17)| 00:00:01 |
| 2 | TABLE ACCESS BY INDEX ROWID| EMP | 14 | 532 | 2 (0)| 00:00:01 |
| 3 | INDEX FULL SCAN | PK_EMP | 14 | | 1 (0)| 00:00:01 |
|* 4 | SORT JOIN | | 13 | 494 | 4 (25)| 00:00:01 |
|* 5 | TABLE ACCESS FULL | EMP | 13 | 494 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------------------

 
Predicate Information (identified by operation id):
---------------------------------------------------

   4 - access("A"."EMPNO"="B"."MGR")
       filter("A"."EMPNO"="B"."MGR")
   5 - filter("B"."MGR" IS NOT NULL)
 
统计信息
----------------------------------------------------------

          0 recursive calls
          0 db block gets
         11 consistent gets
          0 physical reads
          0 redo size
       2091 bytes sent via SQL*Net to client
        416 bytes received via SQL*Net from client
          2 SQL*Net roundtrips to/from client
          1 sorts (memory)
          0 sorts (disk)
         13 rows processed


执行计划中的字段解释
  ID: 一个序号,但不是执行的先后顺序。执行的先后根据缩进来判断
(一般按缩进长度来判断,缩进最大的最先执行,如果 有2行缩进一样,那么就先执行上面的。)
       Operation: 当前操作的内容。
       Rows: 当前操作的Cardinality,Oracle估计当前操作的返回结果集。
       Cost(CPU):Oracle 计算出来的一个数值(代价),用于说明SQL执行的 代价。
       Time:Oracle 估计当前操作的时间。

谓词说明
access 表示这个谓词条件的值将会影响数据的访问路劲(表还是索引)。
Filter:表示谓词条件的值不会影响数据的访问路劲,只起过滤的作用。


统计信息说明
recursive calls
db block gets : 从buffer cache中读取的block的数量    
consistent gets: 从buffer cache中读取的undo数据的block的数量    
physical reads: 从磁盘读取的block的数量    
redo size: DML生成的redo的大小    
sorts (memory) :在内存执行的排序量    
sorts (disk) :在磁盘上执行的排序量    

bytes sent via SQL*Net to client
bytes received via SQL*Net from client
SQL*Net roundtrips to/from client
rows processed


阅读(953) | 评论(2) | 转发(0) |
1

上一篇:SQL trace 10046事件

下一篇:oracle ASM安装记录

给主人留下些什么吧!~~

chinaunix网友2011-06-05 02:14:15

大连法律咨询在线 http://www.fabowang.com 大连律师在线咨询 http://www.fabowang.com 大连法律顾问网 http://www.fabowang.com 大连律师咨询 http://www.fabowang.com

chinaunix网友2010-09-30 10:47:27

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com