首页 > 代码库 > 设置SQL*Plus 的AUTOTRACE

设置SQL*Plus 的AUTOTRACE

AUTOTRACE 是SQL*Plus 中一个工具,可以显示所执行查询的解释计划(explain plan)以及所用的
资源。这本书中大量使用了AUTOTRACE 工具。
配置AUTOTRACE 的方法不止一种,以下是我采用的方法:
(1)cd [ORACLE_HOME]/rdbms/admin;
(2)作为SYSTEM 登录SQL*Plus;
(3)运行@utlxplan;
(4)运行CREATE PUBLIC SYNONYM PLAN_TABLE FOR PLAN_TABLE;
(5)运行GRANT ALL ON PLAN_TABLE TO PUBLIC。


如果愿意,可以把GRANT TO PUBLIC 中的PUBLIC 替换为某个用户。通过将PLAN_TABLE 置为public,
任何人都可以使用SQL*Plus 进行跟踪(在我看来这并不是件坏事)。这么一来,就不需要每个用户都安装
自己的计划表。还有一种做法是,在想要使用AUTOTRACE 的每个模式中分别运行@utlxplan。


下一步是创建并授予PLUSTRACE 角色:
(1)cd [ORACLE_HOME]/sqlplus/admin;
(2)作为SYS 或SYSDBA 登录SQL*Plus;
(3)运行@plustrce;
(4)运行GRANT PLUSTRACE TO PUBLIC。
重申一遍,如果愿意,可以把GRANT 命令中PUBLIC 替换为每个用户。


关于AUTOTRACE
你会自动得到一个AUTOTRACE 报告,其中可能列出SQL 优化器所用的执行路径,以及语句的执行统计
信息。成功执行SQL DML(即SELECT、DELETE、UPDATE、MERGE 和INSERT)语句后就会生成这个报告。它
对于监视并调优这些语句的性能很有帮助。

 

控制报告
通过设置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 类似,但是不显示用户的查询输出(如果有的话)。

《Oracle9i10g编程艺术》