使用tkprof工具分析oracle trace追踪文件方法小结
转载: http://yedward.net/?id=140
启动跟踪文件
1. exec dbms_monitor.session_trace_enable
(很多时候,需要跟踪的不是当前用户的进程,而是其他用户,这时候可以通过系统提供的 dbms_system.set_sql_trace_in_session来实现。set_sql_trace_in_session方法有三个参数,分别是sid、serial#以及true(或false),当为true时,表示启用跟踪,当为false时,表示跟踪关闭。sid和serial#可以通过查找v$session视图找到,也可以参照下v$process视图。示例如下,在命令窗口执行
exec dbms_system.set_sql_trace_in_session(10, 223, true) -- 启用
exec dbms_system.set_sql_trace_in_session(10. 223, false) -- 停止)
2.查找跟踪文件
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
3.找到跟踪文件后,执行 t tkprof dcs_m000_5956.trc result.txt
下面列出一些tkprof生成文件中常看到的几个性能方面的数字:
count:表示执行的数据库调用数量。
cpu:表示处理数据调用花去的CPU时间,以秒为单位。
elapsed:表示处理数据库调用花费的总时间,以秒为单位。
disk:表示物理读的数据块数量。
query:表示在consistent mode下从高速缓存逻辑读取的块数量。
current:表示在当前模式下从高速缓存逻辑读取的块数量。
rows:表示处理的数据行数量。