跟踪当前会话
SQL>alter session set events '10046 trace name context forever, level 12'; --启动10046事件
SQL>alter session set events '10046 trace name context off'; -- 关闭10046事件
跟踪其他会话
用户1:求出sid
SQL> select userenv('sid') from dual;
SID
――――――――――――
267
SQL> select sid,serial# from v$session where SID=267;
SID SERIAL#
---------- ----------
267 996
SQL> exec dbms_monitor.session_trace_enable(267,996,waits=>true,binds=>true); -- 启动trace
SQL> exec dbms_monitor.session_trace_disable(267,996); -- 关闭trace
生成文件路径:
SYS-SQL> show parameter user_dump
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string e:\oracle\diag\rdbms\mydb\mysi
d\trace
就是最早生成的那个文件
PARSING IN CURSOR #4 len=37 dep=1 uid=0 oct=3 lid=0 tim=18682923412 hv=1398610540 ad='2f5d719c' sqlid='grwydz59pu6mc' select text from view$ where rowid=:1 END OF STMT PARSE #4:c=0,e=21,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=18682923409 BINDS #4: Bind#0 oacdty=11 mxl=16(16) mxlc=00 mal=00 scl=00 pre=00 oacflg=18 fl2=0001 frm=00 csi=00 siz=16 off=0 kxsbbbfp=0d380bd8 bln=16 avl=16 flg=05 value=000001FE.0000.0001 EXEC #4:c=0,e=267,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=18682923799 FETCH #4:c=0,e=31,p=0,cr=2,cu=0,mis=0,r=1,dep=1,og=4,tim=18682923866 STAT #4 id=1 cnt=1 pid=0 pos=1 obj=69 op='TABLE ACCESS BY USER ROWID VIEW$ (cr=1 pr=0 pw=0 time=0 us cost=1 size=15 card=1)'
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:当前行源的数据访问操作