tkprof工具简介

Tkprof工具介绍和分析

    Tkprof是一个用于分析oracle跟踪文件并且产生一个更加清晰合理的输出结果的可执行工具。

如果一个系统的执行效率比较低,一个比较好的方法是通过跟踪用户的会话并且使用Tkprof工具使用排序功能格式化输出,从而找出有问题的SQL语句。

Tkprof的使用步骤

1,  在数据库级别上设置Timed_statisticstrue

8i数据库需要修改init文件增加timed_statistics=true,然后重启数据库使其有效。

9i数据库可以在sqlplus中完成修改

SQL> alter system set timed_statistics= true scope =both;

2,  使用各种功能得到你想要查看sessiontrace文件

Oracle中能够得到一个sessiontrace的方法很多,这里简单介绍一下。

方法一:如果需要在数据库级别上设置trace,可以在init.ora文件中加入sql_trace=true,这样在数据库运行的同时会trace所有数据库的活动,一般来说,只有在数据库的所有事务都需要被监控的时候才使用这种方法,使用这种方法会产生大量的trace文件,并且会耗费大量的数据库性能,不推荐使用。如果一定要用,则在trace信息收集完成后,记得去掉这个参数,然后重启数据库。

方法二:如果需要在session级别上设置trace,可以在sqlplus中使用下列语句:

  SQL>alter session set sql_trace=true

或者使用10046跟踪事件。

  SQL>alter session set events ’ 10046 trace name context forever,level 1’ ;

另外我们还可以使用dbms_session程序包完成同样的操作。

  SQL>exec dbms_system.set_sql_trace_in_session(SID,Serial#,true);

3、找到生成的正确的trace文件,在init.ora初始化参数中,user_dump_dest定义的路径就是。我们也可以使用下述语句得到这个参数的设置。

  SQL> show parameter user_dump_dest

4、对trace文件使用tkprof工具进行分析。

   C:/> tkprof tracefile outfile [explain=user/password][options…]

一般来说,使用tkprof得到的输出文件包括三个部分:

ü         SQL语句本身。

ü         相关的诊断信息,包括CPU时间、总共消耗事件、读取磁盘数量、逻辑读数量、以及查询中返回的记录数目。

ü         列出这个语句的执行计划。

下面用一个具体的例子来说明如何利用tkprof来分析trace文件。

首先,从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

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

Select s.sid,s.serial# from v$session s, v$process p

Where s.paddr = p.addr and p.spid = ‘ 14483’ ;

第三步,使用dbms_system.set_sql_trace_in_session包来对这个session进行trace

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值