Oracle AUTOTRACE故障处理:SP2-0618、SP2-0611
Oracle的AUTOTRACE命令简介
- Oracle提供了一个称为EXPLAIN PLAN的工具,使用EXPLAIN PLAN命令,允许生成执行计划输出。
- SQL*PLUS提供了AUTOTRACE工具,允许查看已执行查询的执行计划,而不必使用EXPLAIN PLAN命令。
一、故障发生:SP2-0618、SP2-0611
开启AUTOTRACE功能时报错。
在SQL命令行执行
SET AUTOTRACE ON
脚本时报错:
二、解决方法
1.1、用sqlplus以sysdba身份登录到Oracle数据库
以管理员权限打开命令窗口,输入:
sqlplus / as sysdba
以sysdba身份登录到数据库。
1.2、执行$ORACLE_HOME/sqlplus/admin/plustrce.sql脚本来生成PLUSTRACE角色
因为PLUSTRACE角色不是预先定义好的,所以需要执行$ORACLE_HOME/sqlplus/admin/plustrce.sql脚本来生成PLUSTRACE角色。
@D:\oracle_database\11.2.0\dbhome_1\sqlplus\admin\plustrce.sql
上面的脚本修改成自己的目录。
1.3、将PLUSTRACE角色赋予给你要使用AUTOTRACE命令的用户。
grant plustrace to log; -- log为要使用SET AUTOTRACE ON的用户
1.4、cmd命令行的SQL窗口下连接到指定的用户
conn log/1 -- conn 用户名/密码
1.5、开启AUTOTRACE功能
SET AUTOTRACE ON
开启成功。
1.5、查看执行计划
三、Autotrace命令详解
3.1、设置Autotrace的命令
序号 | 命令 | 解释 |
---|---|---|
1 | SET AUTOTRACE OFF | 此为默认值,即关闭Autotrace |
2 | SET AUTOTRACE ON | 产生结果集和解释计划并列出统计 |
3 | SET AUTOTRACE ON EXPLAIN | 显示结果集和解释计划不显示统计 |
4 | SETAUTOTRACE TRACEONLY | 显示解释计划和统计,尽管执行该语句但您将看不到结果集 |
5 | SET AUTOTRACE TRACEONLY STATISTICS | 只显示统计 |
Eg: |
SET AUTOTRACE ON, set timing on, alter session set time_statistics=true;
3.2、Autotrace执行计划的各列的涵义
序号 | 列名 | 解释 |
---|---|---|
1 | ID_PLUS_EXP | 每一步骤的行号 |
2 | PARENT_ID_PLUS_EXP | 每一步的Parent的级别号 |
3 | PLAN_PLUS_EXP | 实际的每步 |
4 | OBJECT_NODE_PLUS_EXP | Dblink或并行查询时才会用到 |
3.3、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) | 在磁盘上执行的排序量 |