执行计划-准备篇

目前我所知道的有两种方法查看执行计划;

●一个是用PLSQL Developer工具,用F5执行语句就能看见执行计划

QQ截图未命名

 

●另一个就是用autotrace语句(必须在SQL*Plus内运行)

我装的是oracle10g,默认不能直接调用这个语句,必须先设置一下:

 

1.用sys用户运行脚本ultxplan.sql
建立这个表的脚本是:(UNIX:$ORACLE_HOME/rdbms/admin, Windows:%ORACLE_HOME%\rdbms\admin)ultxplan.sql。
SQL> connect
sys/sys@colm2 as sysdba;
SQL> @C:\oracle\ora92\rdbms\admin\utlxplan.sql;
SQL> create public synonym plan_table for plan_table; --建立同义词
SQL> grant all on plan_table to public;--授权所有用户
2.要在数据库中建立一个角色plustrace,用sys用户运行脚本plustrce.sql来创建这个角色,这个脚本在目录(UNIX:$ORACLE_HOME/sqlplus/admin, Windows:%ORACLE_HOME%\sqlplus\admin)中;
SQL> @C:\oracle\ora92\sqlplus\admin\plustrce.sql;
3.然后将角色plustrace授予需要autotrace的用户
SQL>grant plustrace to public;

 

通过设置AUTOTRACE系统变量可以控制这个报告:
set autotrace off:  不生成autotrace报告,这是默认设置
set autotrace on explain:  autotrace报告只显示优化器执行路径
set autotrace on statistics: autotrace报告只显示sql语句的执行统计信息
set autotrace on: autotrace报告既包括优化器执行路径,又包括SQL语句的执行统计信息。 
set autotrace traceonly: 这与set autotrace on类似,但是不显示用户的查询输出(如果有的话)

 

(参考自:http://blog.sina.com.cn/s/blog_4b8abbd60100augv.html

 

更新一下开关的说明

 

set auto[race] {on|off|trace[only]} [exp[plan]][stat[litics]]

set autot off

对话禁止使用autotrace命令

set autot on

这个命令包括expstat

执行语句

生成explain plan

生成统计信息

set auto trace

不执行sql命令,这同样包括expstat

生成explain plan

生成统计信息

set autot trace exp stat

set autot trace相同

set autot trace exp

不执行sql语句

生成explain plan

set autot trace stat

不执行sql语句

生成统计信息

 

 

以下是执行set autotrace on出来的内容

SQL> set autotrace on;

SQL> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON


执行计划
----------------------------------------------------------
Plan hash value: 3383998547

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     4 |   120 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| DEPT |     4 |   120 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement


统计信息
----------------------------------------------------------
          4  recursive calls
          0  db block gets
         16  consistent gets
          0  physical reads
          0  redo size
        641  bytes sent via SQL*Net to client
        400  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          4  rows processed

 

酱紫执行计划应该都知道怎么使用了吧。下次讲执行计划怎么看。

posted @ 2010-10-06 19:38  my36z  阅读(1003)  评论(0编辑  收藏  举报