`

SQL-Trace、10046

阅读更多
SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中

alter session set sql_trace=true;

或者

alter database set sql_trace=true;

 

确定当前的trace文件

默认路径:

10g  --   $ORACLE_BASE/admin/SID/udump

11g  --   $ORACLE_BASE/diag/rdbms/orcl/orcl/trace

 

/* Formatted on 2010/9/1 23:56:24 (QP5 v5.115.810.9015) */

SELECT      d.VALUE

         || '/'

         || LOWER(RTRIM(i.INSTANCE,CHR(0)))

         || '_ora_'

         || p.spid

         || '.trc'

            AS"trace_file_name"

  FROM   (SELECT   p.spid

            FROM   v$mystat m, v$session s, v$process p

           WHERE   m.statistic# =1AND s.SID=m.SIDANDp.addr = s.paddr)p,

         (SELECT   t.INSTANCE

            FROM   v$thread t, v$parameter v

           WHERE   v.NAME='thread'

                   AND(v.VALUE=0ORt.thread# =TO_NUMBER(v.VALUE))) i,

         (SELECT   VALUE

            FROM   v$parameter

           WHERE   NAME='user_dump_dest') d;

---设置文件标识然后find查找

alter session set tracefile_identifier='xxxxx';

 trc中说明:

PARSING IN CURSOR 部分:

        Len: 被解析SQL的长度

        Dep: 产生递归SQL的深度

        Uiduser id

        Otc: Oracle command type 命令的类型

        Lid: 私有用户id

        Tim:时间戳

        Hv hash value

        AdSQL address

 

PARSE,EXEC,FETCH 部分

        C: 消耗的CPU time

        Eelapsed time 操作的用时

        P: physical reads 物理读的次数

        Cr: consistent reads 一致性方式读取的数据块

        Cucurrent 方式读取的数据块

        Miscursor misss in cache 硬分析次数

        R: -rows 处理的行数

        Dep: depth 递归SQL的深度

        Og optimizer goal 优化器模式

        Timtimestamp时间戳

 

STATS 部分:

        Id: 执行计划的行源号

        Cnt:当前行源返回的行数

        Pid:当前行源号的父号

        Pos:执行计划中的位置

        Obj:当前操作的对象id(如果当前行原始一个对象的话)

        Op:当前行源的数据访问操作

 

 ------------------========================================

10046事件按照收集信息内容,可以分成4个级别:

        Level 1等同于SQL_TRACE 的功能

        Level 4Level 1的基础上增加收集绑定变量的信息

        Level 8Level 1 的基础上增加等待事件的信息

        Level 12:等同于Level 4+Level 8, 即同时收集绑定变量信息和等待事件信息。

 

对当前session 使用10046事件

        SQL>alter session set events 10046 trace name context forever, level 12; --启动10046事件

        执行相关事务

        SQL>alter session set events 10046 trace name context off; -- 关闭10046事件

 

该事件收集的信息也是放在trace文件中,查看trace文件的方法,参考第二节:TKPROF 工具。

SQL_TRACE跟踪

SQL> select sid,serial# from v$session where SID=xx;  

SQL> execute dbms_system.set_sql_trace_in_session(sid, serial#,true);  -- 启动SQL_TRACE

SQL> execute dbms_system.set_sql_trace_in_session(sid, serial#,false); -- 关闭SQL_TRACE

 

使用10046 事件跟踪

SQL> exec dbms_monitor.session_trace_enable(sid, serial#,waits=>true,binds=>true);  -- 启动trace

SQL> exec dbms_monitor.session_trace_disable(sid, serial#); -- 关闭trace

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics