Oracle AutoTrace
|
1、 |
AUTOTRACE的使用方法
2.1、安装
用sys用户运行脚本utlxplan.sql 该脚本会创建一张表 plan_table
脚本的位置是: (UNIX:$ORACLE_HOME/rdbms/admin/ utlxplan.sql Windows:%ORACLE_HOME%\rdbms\admin\ultxplan.sql)。
[oracle@cuug admin]$ sqlplus / as sysdba
SQL> @C:\oracle\ora92\rdbms\admin\utlxplan.sql;
SYS @ cuug >@$ORACLE_HOME/rdbms/admin/utlxplan;
Table created.
SYS @ cuug > create public synonym plan_table for plan_table;
Synonym created. --建立同义词 (9i)
SYS @ cuug >grant all on plan_table to public;
Grant succeeded. --授权所有用户
要在数据库中建立一个角色plustrace,用sys用户运行脚本plustrce.sql来创建这个角色,
脚本目录(UNIX:$ORACLE_HOME/sqlplus/admin, Windows:%ORACLE_HOME%\sqlplus\admin)中;
SYS @ cuug >@$ORACLE_HOME/sqlplus/admi/plustrce.sql;
然后将角色plustrace授予需要autotrace的用户;
SYS @ cuug >grant plustrace to public;
经过以上步骤的设置,就可以在sql*plus中使用autotrace了
2、2 使用
使用起来非常方便,只要使用一条命令就可以了
SYS @ cuug >SET AUTOTRACE ON;
*autotrace功能只能在SQL*PLUS里使用
其他一些使用方法:
2.2.1、在SQLPLUS中得到语句总的执行时间
SYS @ cuug > set timing on;
2.2.2、只显示执行计划--(会同时执行语句得到结果)
SQL>set autotrace on explain
比如:
sql> select count(*) from test;
count(*)
-------------
4
Execution plan
----------------------------
0 select statement ptimitzer=choose (cost=3 card=1)
1 0 sort(aggregate)
2 1 partition range(all)
3 2 table access (full) of 't_test' (cost=3 card=900)
2.2.3、只显示统计信息---(会同时执行语句得到结果)
SQL>set autotrace on statistics;
(备注:对于SYS用户,统计信息将会是0)
2.2.4、显示执行计划,屏蔽执行结果--(但语句实质还执行的
SYS @ cuug >set autotrace on traceonly;
(备注:同SET AUTOTRACE ON; 只不过不显示结果,显示计划和统计)
2.2.5、仅仅显示执行计划,屏蔽其他一切结果--(语句还是执行了)
SYS @ cuug >set autotrace traceonly explain;
对于仅仅查看大表的Explain Plan非常管用。
2.2.6、关闭
SYS @ cuug >set autotrace off;
总结:SQLPLUS 下的自动显示功能,在看执行计划中其语句还是会被执行的。尤其在执行UPDATE/DELETE语句时请千万注意,ORACLE是先执行脚本同时显示执行计划的,即使使用set autotrace on traceonly explain;
这个时候推荐使用EXPLAIN PLAN FOR来看或者PL/SQL等第三方工具 |