Oracle 配置Auto Trace监控sql执行计划

2014-11-24 18:22:23 · 作者: · 浏览: 0

Oracle 11g以后已经默认为dba role自动打开autotrace


配置autotrace:


进入到$ORACLE_HOME/rdbms/admin下面


进入到sqlplus中,


执行:


SQL> @utlxplan


创建分析表,为了方便操作,我们可以创建一个同义词


SQL> create public synonym plan_table for plan_table;


我们可以把这个表的权限赋给我们想要给的用户,也可以给public这样任何一个人就可以使用sql*plus进程跟踪啦。这样就不需要每个用户都按照自己的计划表啦。


SQL> grant all on plan to public;


创建plustrace的角色


进入到%ORACLE_HOME%/sqlplus/admin(linux,unix是$ORACLE_HOME/sqlplus/admin)


执行


SQL> @plustrce.sql


我们也可以把他的权限赋予给public


SQL> grant plustrace to public;


关于autotrace的操作:


安装成功后,会自动得到一个autotrace的报告,我们可以使用一个参数显示执行的时间:


SQL> set timing on


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 类似,但是不显示用户的查询输出。


这是开启autotrace后的一个执行计划


SQL> insert into t values (2,'2');


已创建 1 行。


已用时间: 00: 00: 00.00


执行计划
----------------------------------------------------------


-------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 1 | 100 | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------


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


以下是对执行计划中的统计信息的解析:




Autorace工具是我们经常使用的性能评测工具,能够帮助解决很多问题。