首页 > 代码库 > Oracle执行计划——Oracle 如何启用执行计划

Oracle执行计划——Oracle 如何启用执行计划

AUTOTRACE是一项SQL*Plus功能,自动跟踪为SQL语句生成一个执行计划并且提供与该语句的处理有关的统计。SQL*Plus AUTOTRACE可以用来替代SQL Trace使用,AUTOTRACE的好处是您不必设置跟踪文件的格式,并且它将自动为SQL语句显示执行计划。然而,AUTOTRACE分析和执行语 句;而EXPLAIN PLAN仅分析语句。使用AUTOTRACE不会产生跟踪文件。

1 启用Autotrace

1.1 以sys用户,运行utlxplan.sql

sqlplus / as sysdba

SQL> @$ORACLE_HOME/rdbms/admin/utlxplan.sql

1.2 通过执行plustrce.sql脚本创建plustrace角色

SQL> @$ORACLE_HOME/sqlplus/admin/plustrce.sql

1.3 授权

将 plustrace 角色授予当前用户(无 DBA 角色的用户),或者grant plustrace to public;

2 设置Autotrace的命令

序号

命令

解释

1

SET AUTOTRACE OFF

此为默认值,即关闭Autotrace

2

SET AUTOTRACE ON

产生结果集和解释计划并列出统计

3

SET AUTOTRACE ON EXPLAIN     

显示结果集和解释计划不显示统计

4

SET AUTOTRACE TRACEONLY 

显示解释计划和统计,尽管执行该语句但您将看不到结果集

5

SET AUTOTRACE TRACEONLY STATISTICS  

只显示统计

Eg:SET AUTOTRACE ON, set timing on, alter session set time_statistics=true;

以下仅供参考


 

3 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)         

在磁盘上执行的排序量