TKPROF工具

ORACLE系统中的性能调整方法主要分为两类:应用系统的调整和数据库系统的性能调整。应用系统的调整关注的焦点在应用设计相关的方面,比如:事务规则的调整、数据的设计、应用程序的设计,ORACLE系统的性能与应用系统的设计密切相关,性能调整90%的项目都集中在应用程序的调整。

在应用程序调整结束后就将进行数据库方面的调整。在进行数据库的性能调整之前,要做的一项关键工作是利用工具进行SQL语句的性能分析:TKPROF工具、解释执行计划、AUTOTRACE工具。应用程序中低效的SQL语句往往是导致整个系统问题所在。本篇文章将就TKPROF工具进行讨论和应用分析。

TKPROF工具

TKPROF工具(Trace Kernel Profile)是用于格式化用户跟踪文件的工具,它是个独立的工具,可以在操作系统下直接执行。

$tkprof ora_12558.trc trace.txt


(1)生成用户跟踪文件

用户跟踪文件包括所有的用户发出的SQL语句的信息,包括:每条语句的执行时间和占用资源的数量。因为跟踪文件的信息是没有格式化的原始信息,所以用TKPROF工具来转换信息,使其易于理解。


(2) 用TKPROF格式化用户跟踪文件

$trprof ora_12558.trc trace.txt

这个例子将会格式化ora_12558.trc跟踪文件,并生成格式化的转换文件trace.txt。除了命令的头两个参数代表输入文件名和输出文件名,还有其他的一些附加参数用于指定期望的信息。这些选项如下所示:

选项   定义和用法

EXPLAN   为跟踪文件中的每条语句生成一个执行计划。产生的结果保存在指定模式的PLAN_TABLE中,该模式在命令中给出,即命令中必须要给出用户名和口令。

TABLE   指定执行计划保存的表名称,替换缺省的PLAN_TABLE表名。

SYS   表明是否格式化的文件包括递归的SQL语句。

SORT   表明格式化的文件信息排序的规则。

RECORD   指定跟踪文件中的SQL语句写入哪一个文件。使你能将SQL语句与附加的资源使用信息分开。

PRINT   指定格式化的跟踪文件最多可以写入的SQL语句的数量。

INSERT   执行时创建一个脚本,用于生成一个TKPROF_TABLE表。

AGGREGATE 决定是否将多个执行相同语句分析的结果合并。


例1:$tkprof ora_1234.trc trace.txt sys=no explain=joe/sidney

该命令将忽略原始文件中的递归SQL;在格式化的跟踪文件中包括每条SQL语句的执行计划PLAN_TABLE依赖于用户JOE模式。

例2:$tkprof ora_1234.trc trace.txt print=10 record=sql.txt

该命令将翻译跟踪文件ora_1234.trc并保存头10条SQL语句到输出文件trace.txt;创建一个文件sql.txt,用于保存原始跟踪文件的头10条SQL语句。

例3:$tkprof ora_1234.trc trace.txt insert=trace.sql sort=(fchrow)

该命令将翻译跟踪文件ora_1234.trc并保存到输出文件trace.txt;创建第二个文件trace.sql,用于保存生成TKPORF_TABLE表的SQL命令。如果没有排序参数fchrow,TKPROF将会按照执行的顺序输出到trace.txt文件中去。


(3)TKPROF排序参数

TKPROF的每个排序参数都与SQL语句的三个过程相关:分析、执行和获取数据。

在分析阶段进行执行SQL的准备工作,如进行语句的检查、循环纠错、决定要使用对象的用户权利。与分析阶段相关的排序参数有:

选项   定义和用法

PRSCNT   语句被分析的次数。

PRSCPU   分析这条语句花费的CPU时间。

PRSELA   分析这条语句花费的总时间。

PRSDSK   分析这条语句时读磁盘的次数。

PRSMIS   分析这条语句时从SGA读回滚块的数量。

PRSCU   分析这条语句时从SGA读数据块的数量。


在SQL语句的执行阶段,执行语句中指定的动作。例如:从表中选择、插入、更新、删除数据。创建用户、表空间、数据文件等。与执行阶段相关的排序参数有:

选项   定义和用法

EXECNT   语句被执行的次数。

EXECPU   执行这条语句花费的CPU时间。

EXEELA   执行这条语句花费的总时间。

EXEDSK   执行这条语句时读磁盘的次数。

EXEMIS   执行这条语句时从SGA读回滚块的数量。

EXECU   执行这条语句时从SGA读数据块的数量。


如果在SQL语句中包括SELECT语句,SQL还将执行SQL语句中的最后一步,即fetch操作。fetch操作发生时SQL语句返回的结果集被送回用户。与fetch阶段相关的排序参数有:

选项   定义和用法

FCHCNT   语句获取时的行数。

FCHCPU   获取数据花费的CPU时间。

FCHELA   获取数据花费的总时间。

FCHDSK   获取数据时读磁盘的次数。

FCHQRY   获取数据时从SGA读回滚块的数量。

FCHROW   被语句获取的行数。

FCHCU   获取数据时从SGA读数据块的数量。


(4)用TKPROF翻译已格式化的跟踪文件

用户的跟踪文件被TKPROF格式化后,结果文件中的内容将会较好地用于性能分析。一个已经被TKPROF分析的格式化文件的例子如附图。

从这个跟踪文件可以发现,第三条语句被分析了一次,执行了五次,并执行了250此获取操作。这个过程耗费了CPU 0.18秒的时间,整个语句执行花费了0.20秒的时间。它需要从磁盘读取54个数据块,从SGA读取266个数据块并返回245行数据。在最后一行显示所有统计信息。


(5)标记需要调整的语句

使用TKPROF格式化的文件很容易看出需要调整的SQL语句。查找的依据是:

*耗费大量的CPU资源

*花费较长的时间进行SQL分析、执行和获取

*从磁盘读大量的数据块,而从SGA区读的数据很少

*访问大量的数据块但只返回一点数据

一旦找到这些语句就可以用执行计划工具来进一步决定为什么这些语句性能这么低了。

你可能感兴趣的:(TKPROF工具)