如何使用TKPROF跟踪有问题的sql

   1  先从os上利用top命令找到当前占用cpu资源最高的一个进程的PID号:14483

load averages:  1.53,  1.37,  1.39 db2     23:11:15

246 processes: 236 sleeping, 1 running, 2 zombie, 4 stopped, 3 on cpu

CPU states: 68.0% idle, 17.3% user,  3.0% kernel, 11.6% iowait,  0.0% swap

Memory: 16.0G real, 3.4G free, 9.7G swap in use, 11.0G swap free

   PID USERNAME THR PR NCE  SIZE   RES STATE   TIME FLTS    CPU COMMAND

 14483 oracle     1 51   0  8.8G  8.8G sleep  77.1H    1  5.69% oracle

 28222 oracle     1 52   0  8.8G  8.8G cpu18  93:55 2742  3.32% oracle

  3722 oracle     1 59   0  8.8G  8.8G sleep 157:41    0  0.45% oracle

 16077 oracle     1 59   0  8.8G  8.8G sleep  17.1H    0  0.34% oracle

 12687 oracle     1 59   0  8.8G  8.8G sleep   0:07    0  0.29% oracle

 17781 oracle     1 49   0  8.8G  8.8G run    91:11    8  0.24% oracle

  2359 oracle     1 59   0  8.8G  8.8G cpu19 524:53    0  0.12% oracle

  6559 oracle     1 59   0  8.8G  8.8G sleep 237:41    0  0.10% oracle

  2242 oracle     1 59   0  8.8G  8.8G sleep 980:56    0  0.09% oracle

  2356 oracle     1 59   0  8.8G  8.8G sleep 121:31    0  0.08% oracle

 16106 oracle     1 59   0  8.8G  8.8G sleep 168:44    0  0.05% oracle

 11432 oracle     1 49   0 2576K 1680K cpu11   0:11    0  0.05% top

  2333 oracle     1 59   0  8.9G  8.8G sleep 159:03    0  0.05% oracle

  2321 oracle     1 59   0  8.8G  8.8G sleep  78:20    0  0.04% oracle

  2282 oracle     1 59   0  8.8G  8.8G sleep 424:57    0  0.03% oracle

然后在数据库中根据PID号找到相应的sid号和serial#

SQL> select s.sid,s.serial# from v$session s,v$process p

  2  where s.paddr=p.addr and p.spid='14483';

       SID    SERIAL#

---------- ----------

       101      25695

使用dbms_system.set_sql_trace_in_session包来对这个session进行trace

SQL> exec DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(101,25695,true);

PL/SQL procedure successfully completed.

user_dump_dest定义的路径下查找刚刚最近生成的trace文件,根据时间来排序,找最近的trace文件,接着使用tkprof工具对此trace文件进行格式化分析,生成分析后的trace文件。

$tkprof orcl_ora_14483.trc allan.txt explain=system/manager aggregate=yes sys=no waits=yes sort=fchela

TKPROF: Release 9.2.0.4.0 - Production on Sun Dec 5 22:27:28 2004

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

这里生成的allan.txt文件就是我们最终得到的格式化后的trace文件了,然后打开这个文件进行分析。

一、首先tkprof工具输出的最后总的统计:

OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows

------- ------  -------- ---------- ---------- ---------- ---------- 

Parse       20      0.01       0.02          0         58          0           0

Execute  13197     0.81       0.90         17       7436       6316        1484

Fetch    12944     22.86      22.10         20    2205941          0        8972

------- ------  -------- ---------- ---------- ---------- ---------- 

total    26161     23.68      23.02         37    2213435       6316       10456<

你可能感兴趣的:(数据库,职场,休闲,tkprof)