引用网址:http://www.cnblogs.com/cangos/archive/2011/12/19/2293935.html
今天在一台机器中想分析下执行计划,但是在sqlplus中输入set autotrace on 报cannot set autotrace 错误
解决方法如下:
首先必须采用用Oracle的sqlplus登陆sys账号
sqlplus " sys/sys@XXX as sysdba "
然后执行如下脚本:
@F:\oracle\product\10.2.0\db_1\sqlplus\admin\plustrce.sql (创建plustrace角色并授权)

@F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlxplan.sql (创建执行计划的表)

然后执行: grant all on plan_table to public; (也可以授权给某一个单独的用户)
grant plustrace to public ;
运行结果:
SQL> grant all on plan_table to public;
授权成功。
SQL> grant plustrace to public ;
授权成功。
然后就可以进行 set autotrace了 但是只能在sqlplus中运行相关命令,在pl/sql developer等工具中仍然报错
运行结果:
SQL> SET AUTOTRACE ON ;
SQL>
关于Autotrace几个常用选项的说明:
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告
SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询输出
Autotrace执行计划的各列的涵义
| 序号 | 列名 | 解释 |
| 1 | ID_PLUS_EXP | 每一步骤的行号 |
| 2 | PARENT_ID_PLUS_EXP | 每一步的Parent的级别号 |
| 3 | PLAN_PLUS_EXP | 实际的每步 |
| 4 | OBJECT_NODE_PLUS_EXP | Dblink或并行查询时才会用到 |
AUTOTRACE Statistics常用列解释
| 序号 | 列名 | 解释 |
| 1 | db block gets | 从buffer cache中读取的block的数量 |
| 2 | consistent gets | 从buffer cache中读取的undo数据的block的数量 |
| 3 | physical reads | 从磁盘读取的block的数量 |
| 4 | redo size | DML生成的redo的大小 |
| 5 | sorts (memory) | 在内存执行的排序量 |
| 7 | sorts (disk) | 在磁盘上执行的排序量 |
本文介绍了解决在Oracle SQL Plus中使用Autotrace功能遇到的问题的方法。通过登录sys账号并执行特定脚本,可以成功启用Autotrace功能,并展示了如何设置不同的Autotrace选项。
622

被折叠的 条评论
为什么被折叠?



