Oracle autotrace使用说明
一、启用Autotrace功能
任何以SQL*PLUS连接Session都可以用Autotrace,不过还是要做一些设置的,否则可能报错。
1、报错示例:
1 SQL :> set autotrace on; 2 SP2-0613: Unable to verify PLAN_TABLE format or existence 3 SP2-0611: Error enabling EXPLAIN report 4 SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled 5 SP2-0611: Error enabling STATISTICS report 6 7 ******************************************************************************* 8 9 SQL> set autotrace on; 10 SP2-0613: 无法验证 PLAN_TABLE 格式或实体 11 SP2-0611: 启用EXPLAIN报告时出现错误 12 SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色 13 SP2-0611: 启用STATISTICS报告时出现错误
该错误的主要原因是由于当前用户下没有PLAN_TABLE这张表及相应的PLUSTRACE角色权限。
2、解决方法:
2.1、以SYS用户登录:
1 SQL> conn /as sysdba 2 Connected.
2.2、运行utlxplan.sql($ORACLE_HOME/rdbms/admin下)脚本创建PLAN_TABLE:
grant all on plan_table to scott;
2.3、通过执行plustrace.sql($ORACLE_HOME/sqlplus/admin/plustrace.sql)脚本创建plustrace角色:
grant plustrace to scott;
grant select any dictionary to scott;
二、设置Autotrace的命令:
序号 | 命令 | 解释 |
1 | SET AUTOTRACE OFF | 此为默认值,即关闭Autotrace |
2 | SET AUTOTRACE ON | 产生结果集和解释计划并列出统计 |
3 | SET AUTOTRACE ON EXPLAIN | 显示结果集和解释计划不显示统计 |
4 | SET AUTOTRACE TRACEONLY | 显示解释计划和统计,尽管执行该语句但您将看不到结果集 |
5 | SET AUTOTRACE | 只显示统计 |
Eg:SET AUTOTRACE ON
set timing on
alter session set time_statistics=true;
三、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) | 在内存执行的排序量 |
6 | sorts (disk) | 在磁盘上执行的排序量 |