Oracle10g SQL优化辅助工具之 set autotrace

来源:互联网 发布:倩女幽魂2mac版 编辑:程序博客网 时间:2024/06/05 17:22

set autotrace可以用来跟踪SQL执行计划,收集统计信息。

SQL> select * from v$version where rownum<3;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production

 

SQL> select * from dual;

 

--分别在执行sql前设置set autotrace 的不同参数,观察效果


SQL> set autotrace
用法: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

 

--关闭跟踪执行计划和统计信息功能。
SQL> set autotrace off;

--执行计划和统计信息都显示
SQL> set autotrace on ;

 

--只显示执行计划和统计信息,不显示sql执行结果。
SQL> set autotrace  traceonly;


-- 只显示执行计划
SQL> set autotrace on explain;


--只显示统计信息
SQL> set autotrace on  statistics;

 

 


使用autotrace功能时,oracle启用了两个session。

一个用来执行SQL。另一个用来记录执行计划和输出结果。

 

SQL> set autotrace off;
--未启用autotrace前,只有一个sesion

SQL> select s.SID, s.SERIAL#, s.USERNAME, p.PID, p.SPID
  2    from v$session s, v$process p
  3   where s.PADDR = p.ADDR
  4     and s.USERNAME is not null ;

       SID    SERIAL# USERNAME                              PID SPID
---------- ---------- ------------------------------ ---------- ------------
       136          5 REPORT                                 22 5320

 

 

 

 

SQL> set autotrace on statistics;
--启用autotrace 后,有两个session。并且两个session对于一个spid。
SQL> select s.SID, s.SERIAL#, s.USERNAME, p.PID, p.SPID
  2    from v$session s, v$process p
  3   where s.PADDR = p.ADDR
  4     and s.USERNAME is not null ;

       SID    SERIAL# USERNAME                       PID  SPID
---------- ---------- ------------------------------ ---------- ------------
       143        118 REPORT                                 22 5320
       136          5   REPORT                                 22 5320


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