分析及格式化跟踪文件——TKPROF(瞬态内核分析器)

  

TKPROF内核分析器(瞬态):,,TKPROF是一个用于分析甲骨文跟踪文件并且产生一个更加清晰合理的输出结果的可执行工具只,或者解释为跟踪内核配置文件也是可以的。

  

先看例子:

  

tsgoooo tkprof 美元;epd3_ora_23315.trc trace.txt ,解释=sfis1/sfis1 打?50,=sql.txt 记录,

     

获得帮助:输入tkprof后直接回车可以看到帮助,

  

tsgoooo美元tkprof
用法:tkprof tracefile outputfile[解释=][表=]
,,,,,,,,,,,,,[打?][插入=][sys=][排序=]
,表=schema.tablename ,使用的模式。表”与“解释='选项。
,解释=用户/password ,,解释计划连接ORACLE和问题。
,打?integer ,,只有第一个整数的SQL语句列表。
,总=|否
,插入=filename SQL语句和数据在INSERT语句列表。
,sys=no ,,,,,,,,,TKPROF不会列出SQL语句作为用户系统运行。
,记录=filename 记录跟踪文件中发现的非递归语句。
,等待=yes | no ,,,记录总结任何等待事件在跟踪文件中找到。
,类型=option ,,,,下面的零个或多个排序选项:
,,,prscnt 解析的次数叫做
,,,prscpu cpu时间解析
,,,prsela 运行时间解析
,,,prsdsk 磁盘读取次数在解析
,,,prsqry 数量一致的缓冲区读取在解析
,,,prscu ,当前的缓冲区读取在解析
,,,prsmis 数量的想念在库缓存解析
,,,execnt 数量的执行被称为
,,,execpu cpu时间执行
,,,exeela 运行时间执行
,,,exedsk 在执行磁盘读取次数
,,,exeqry 缓冲区数量一致读期间执行
,,,execu ,当前的缓冲区读期间执行
,,,exerow 在执行处理的行数
,,,exemis 数字图书馆的缓存错过在执行
,,,fchcnt 的次数取名叫
,,,fchcpu cpu时间抓取
,,,fchela 运行时间抓取
,,,fchdsk 磁盘读取次数在获取
,,,fchqry 缓冲区数量一致的阅读中获取
,,,fchcu ,在获取读取缓冲区的当前数
,,,fchrow 获取的行数
,,,userid 标识的用户解析cursor 

     

<强>几个重要参数的用法讲解

  
      <李> sys参数,如果不指定,默认值为yes。这个参数的含义是,输出文件中是否包含以系统用户运行的sql语句。这个参数还是蛮有用的,我们执行sql语句的时候,后台经常会执行很多递归的语句,比如你输入了SELECT *从测试,如果这个语句是硬解析的话,那么会产生很多递归的sql,递归的去查询表的统计信息,列的统计信息,索引的统计信息等,当然递归的不止是这些。这些递归的sql都是以系统用户运行的,如果你不希望看到这些递归sql,那么就加上这个参数SYS=no。   <李>记录参数,它指定的是一个路径下的文件,这个文件用来生成在跟踪文件中找到的所有的非递归SQL。比如你在SQLPLUS里执行了三条语句,select * from a; select *从b, c; select *,那么如果你指定了这个参数如:记录=c: \ test.log,那么你用tkprof格式化跟踪文件后,这个test.log里就会记录这三个SQL。这个特性在有些时候还是很有用的,因为跟踪文件往往都会比较大,找起来会比较费劲,我们可以通过指定这个参数先大体了解下,跟踪文件里都有哪些非递归SQL。而且这个功能还有助于我们重演SQL语句(绑定变量的不可以)。   <李>总参数,它指定tkprof是否将同样文本内容的sql聚合处理,比如,你执行了十次select * from a,如果你指定这个参数为没有(默认情况),那么产生的输出文件会有十个这样语句的执行信息,如果你指定的是是的,那么tkprof会把这十次的执行信息汇总显示。这个参数怎么指定就看你的需要了,个人觉得还是很有用的一个参数。   <李>排序参数,这个参数是经常使用到的一个参数,它用来指定tkprof输出文件里sql语句按照什么排序,默认是按照执行的先后顺序排序的,我们可以指定它按照其他方式排序,比如磁盘读取数,CPU时间等。这个参数最经常用的方式是:=prsela, exeela, fchela,其实这三个值加起来就是响应时间,即按照响应时间排序。这里别产生误解,tkprof会根据prsela, exeela, fchela三个值的和进行排序,而不是像sql语句似的一个个的排序。   <李>打印参数,它经常搭配类参数一起使用,用来指定tkprof输出sql语句的数量。这两个参数搭配使用起来就比较妙,比如你想知道一个跟踪文件里响应时间排前十的sql,那么你就可以=prsela, exeela, fchela打?10来搭配使用。   <李>解释参数,这个参数的含义是为每一个SQL提供一个执行计划。使用的方法是解释=用户名/密码,其实原理很简单,就是通过你指定的用户名:密码登陆数据库,然后为每一个SQL执行以下解释计划为SQL,输出到plan_table里,最后添加到输出文件里。注意,由于解释计划命令要求执行操作的用户要对SQL语句里包含的对象都有执行权限,如果包含视图,也要对视图基于的基础表有执行权限,否则产生不了执行计划。注意增加了这个参数后,执行tkprof会比较慢。   

    分析及格式化跟踪文件——TKPROF(瞬态内核分析器)