如何使用10046 trace

来源:互联网 发布:tstil淘宝女装旗舰店 编辑:程序博客网 时间:2024/06/01 19:56
大致步骤如下:

1、首先获得spid、sid、serial#,machine为连接oracle的机器名

SELECT SID FROM V$MYSTAT WHERE ROWNUM =1; --查看当前session的sid



在执行:
select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr =b.addr  and a.sid = '190';



spid=6888,SPID是操作系统的进程id。PID是oracle的进程ID。
machine 是机器名。serial# 如果一个SID又被其他的session使用的话,这个数值就会自增1(当一个session结束,另一个session开始使用了同一个sid)
sid 和 serial# 确定一个唯一的会话。
继续往下看,就可以知道为什么找到SPID了;

2、使用10046 事件跟踪
SQL> alter session set events '10046 trace name context forever ,level 12' ;    会话已更改。 --开启本会话的10046事件



3.再跑sql:





4.跑完sql就可以关闭10046
-- 关闭10046事件
SQL> alter session set events '10046 trace name context off' ;


5.跑下面脚本查看生成的trc文件所在目录:

select d.value || '/' || lower(rtrim(i.instance, chr(0))) || '_ora_' ||p.spid|| '.trc' trace_file_name
           from (select p.spid
                from v$mystat m, v$session s, v$process p
               where m.statistic# = 1
                  and s.sid = m.sid
                 and p.addr = s.paddr) p,
           (select t.instance
                from v$thread t, v$parameter v
            where v.name = 'thread'
                 and (v.value = 0 or t.thread# = to_number(v.value))) i,
            (select value from v$parameter where name = 'user_dump_dest') d;


这里可以看到生成的trc文件是由 实例名_ora_'spid'.trc 组成 直接看这个文件就可以知道spid了。

6.再进入该目录,登录oracle。生成的文件是trc文件需要解析。在命令行下执行oracle的tkprof命令解析
$ tkprof  orcl_ora_6888.trc orcl_ora_6888.sql


成功。
就可以在同一目录:g:\app\diag\rdbms\orcl\orcl\trace/
spid为系统的进程号。
下找到最终生成的orcl_ora_6888.sql文件,打开即可。




原创粉丝点击