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的深度
Uid:user id
Otc: Oracle command type 命令的类型
Lid: 私有用户id
Tim:时间戳
Hv: hash value
Ad:SQL address
PARSE,EXEC,FETCH 部分
C: 消耗的CPU time
E:elapsed time 操作的用时
P: physical reads 物理读的次数
Cr: consistent reads 一致性方式读取的数据块
Cu:current 方式读取的数据块
Mis:cursor misss in cache 硬分析次数
R: -rows 处理的行数
Dep: depth 递归SQL的深度
Og: optimizer goal 优化器模式
Tim:timestamp时间戳
STATS 部分:
Id: 执行计划的行源号
Cnt:当前行源返回的行数
Pid:当前行源号的父号
Pos:执行计划中的位置
Obj:当前操作的对象id(如果当前行原始一个对象的话)
Op:当前行源的数据访问操作
------------------========================================
10046事件按照收集信息内容,可以分成4个级别:
Level 1:等同于SQL_TRACE 的功能
Level 4:在Level 1的基础上增加收集绑定变量的信息
Level 8:在Level 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