全名为Trace Kernel Profile,用来格式化跟踪文件,是一个命令行工具。
基本的格式如下:
tkprof tracefile outputfile …
tracefile:要分析的trace文件
outputfile:格式化后的文件
可选参数及说明如下:
EXPLAIN 为每个SQL语句产生执行计划,指定用户方案和密码,使用其中的PLAN_TABLE表
TABLE 当EXPLAIN选项生效时可用,指定替代PLAN_TABLE的表
SYS 启用该选项时不包含递归调用,=NO时,sys用户运行的SQL语句(例如,解析操作阶段对数据字典的递归查询)不输出到输出文件中
SORT 指定SQL语句的排序方式
RECORD 指定文件名,将SQL语句写入,排除递归的SQL
PRINT 限定只输出指定数量的分析SQL语句,默认是无限制的,只有在和参数sort一起使用的时候才有意义
INSERT 指定一个文件名,容纳相关的插入SQL语句,将分析的SQL及统计插入TKPROF_TABLE
AGGREGATE是否将相同sql语句的执行信息合计起来,默认为yes
WAITS 指定是否统计跟踪文件中的等待事件
SORT选项可分三类,解析选项,执行选项和取数据选项(PRS,EXE,FCH),根椐这三种操作占用相关资源来排序。
TKPROF针对SQL的统计也分为三类:解析(prsela),执行(exeela),取数(fchela)
Count:Parse,Execute,Fetch发生的次数
CPU:表示处理数据调用花去的CPU时间,以秒为单位
Elapsed:是处理数据库调用花费的总的时间,以秒为单位
Disk:表示物理读取的数据块数量
Query:是在一致性模式(consistent mode)下从高速缓存逻辑读取的块数量
Current:代表在当前模式下从高速缓存逻辑读取的块数量
Rows:代表处理的数据行数量。对于查询来说,这就是获取的行数量。对于INSERT、DELETE、MERGE以及UPDATE 等语句来说,这是所影响的行数量
解析的信息开始两行Misses in library cache during parse和Misses in library cache during execute提供了发生在解析和执行调用阶段的硬解析数量。
如果在执行调用时没有硬解析发生,Misses in library cache during execute这一行将不存在。
执行计划分为两部分:
第一部分称为行源操作(Row Source Operation ),是游标关闭且开启跟踪情况下写到跟踪文件中的执行计划。这意味着如果应用程序不关闭游标而重用它们的话,不会有新的针对重用游标的执行计划写入到跟踪文件中。
第二部分,叫做执行计划 (Execution Plan),是由指定了explain参数的TKPROF生成的。既然这是随后生成的,所以和第一部分不一定完全匹配。万一你看到不一致,前者是正确的。
两个执行计划都通过Rows列提供执行计划中每个操作返回的行数,不是处理的。
对于每个行源操作来说,可能还会提供如下的运行时统计:
cr:是一致性模式下逻辑读出的数据块数
pr:是从磁盘物理读出的数据块数
pw:是物理写入磁盘的数据块数
time是以微秒表示的总的消逝时间。要注意根据统计得到的值不总是精确的。实际上,为了减少开销,可能用了采样
输出文件的结尾给出了所有关于跟踪文件的信息。首先可以看到跟踪文件名称、版本号、用于这个分析所使用的参数sort的值。然后,给出了所有会话数量与SQL语句数量。
从TKPROF的统计结果观察,发现下列特征的SQL可能需要调优:
1. 消耗过度的CPU资源;
2. 花费太长的时间在Parse,Execute,Fetch阶断;
3. 从磁盘读数据块太多而从SGA中读块很少;
4. 存取太多的数据块(从SGA或者磁盘)而返回的行数很少;