ORACLE系统中的性能调整方法主要分为两类:应用系统的调整和数据库系统的性能调整。应用系统的调整关注的焦点在应用设计相关的方面,比如:事务规则的调整、数据的设计、应用程序的设计,ORACLE系统的性能与应用系统的设计密切相关,性能调整90%的项目都集中在应用程序的调整。 在应用程序调整结束后就将进行数据库方面的调整。在进行数据库的性能调整之前,要做的一项关键工作是利用工具进行SQL语句的性能分析:TKPROF工具、解释执行计划、AUTOTRACE工具。应用程序中低效的SQL语句往往是导致整个系统问题所在。本篇文章将就TKPROF工具进行讨论和应用分析。 TKPROF工具 TKPROF工具(Trace Kernel Profile)是用于格式化用户跟踪文件的工具,它是个独立的工具,可以在操作系统下直接执行。 $tkprof ora_12558.trc trace.txt
用户跟踪文件包括所有的用户发出的SQL语句的信息,包括:每条语句的执行时间和占用资源的数量。因为跟踪文件的信息是没有格式化的原始信息,所以用TKPROF工具来转换信息,使其易于理解。
$trprof ora_12558.trc trace.txt 这个例子将会格式化ora_12558.trc跟踪文件,并生成格式化的转换文件trace.txt。除了命令的头两个参数代表输入文件名和输出文件名,还有其他的一些附加参数用于指定期望的信息。这些选项如下所示: 选项 定义和用法 TABLE 指定执行计划保存的表名称,替换缺省的PLAN_TABLE表名。 SYS 表明是否格式化的文件包括递归的SQL语句。 SORT 表明格式化的文件信息排序的规则。 RECORD 指定跟踪文件中的SQL语句写入哪一个文件。使你能将SQL语句与附加的资源使用信息分开。 PRINT 指定格式化的跟踪文件最多可以写入的SQL语句的数量。 INSERT 执行时创建一个脚本,用于生成一个TKPROF_TABLE表。 AGGREGATE 决定是否将多个执行相同语句分析的结果合并。
该命令将忽略原始文件中的递归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文件中去。
TKPROF的每个排序参数都与SQL语句的三个过程相关:分析、执行和获取数据。 在分析阶段进行执行SQL的准备工作,如进行语句的检查、循环纠错、决定要使用对象的用户权利。与分析阶段相关的排序参数有: 选项 定义和用法
选项 定义和用法
选项 定义和用法
(4)用TKPROF翻译已格式化的跟踪文件 用户的跟踪文件被TKPROF格式化后,结果文件中的内容将会较好地用于性能分析。一个已经被TKPROF分析的格式化文件的例子如附图。 从这个跟踪文件可以发现,第三条语句被分析了一次,执行了五次,并执行了250此获取操作。这个过程耗费了CPU 0.18秒的时间,整个语句执行花费了0.20秒的时间。它需要从磁盘读取54个数据块,从SGA读取266个数据块并返回245行数据。在最后一行显示所有统计信息。
使用TKPROF格式化的文件很容易看出需要调整的SQL语句。查找的依据是: *耗费大量的CPU资源 *花费较长的时间进行SQL分析、执行和获取 *从磁盘读大量的数据块,而从SGA区读的数据很少 *访问大量的数据块但只返回一点数据 一旦找到这些语句就可以用执行计划工具来进一步决定为什么这些语句性能这么低了。 |