TKPROF 命令语法

来源:互联网 发布:乳晕 冰点脱毛 知乎 编辑:程序博客网 时间:2024/06/07 23:39

一. TKPROF 命令语法:

TKPROF  filename1, filename2 [ SORT  = [ opion][,option] ]

  [  PRINT = integer ]

  [ AGGREGATE  = [ YES | NO ] ]

  [ INSERT = filename3 ]

  [ SYS = [ YES | NO ]  ]

  [  [ TABLE = schema.table ] | [ EXPLAIN = user/password ]  ]

  [  RECORD = filename ]


filename1  指定的输入文件,可以是多个文件联起来。

Filename2  格式化输出文件。

SORT     在输出到输出文件前,先进程排序。如果省去,则按照实际使用的顺序输出到文件中。排序选项有以下多种:

  prscnt  number of times parse was called

  prscpu  cpu time parsing

  prsela  elapsed time parsing

  prsdsk  number of disk reads during parse

  prsqry  number of buffers for consistent read during parse

  prscu   number of buffers for current read during parse

  prsmis  number of misses in library cache during parse

  execnt  number of execute was called

  execpu  cpu time spent executing

  exeela  elapsed time executing

  exedsk  number of disk reads during execute

  exeqry  number of buffers for consistent read during execute

  execu   number of buffers for current read during execute

  exerow  number of rows processed during execute

  exemis  number of library cache misses during execute

  fchcnt  number of times fetch was called

  fchcpu  cpu time spent fetching

  fchela  elapsed time fetching

  fchdsk  number of disk reads during fetch

  fchqry  number of buffers for consistent read during fetch

  fchcu   number of buffers for current read during fetch

  fchrow  number of rows fetched

  userid  userid of user that parsed the cursor

 

PRINT        只列出输出文件的第一个integer SQL语句。默认为所有的SQL语句。

AGGREGATE    如果= NO ,则不对多个相同的SQL进行汇总。

INSERT       SQL 语句的一种,用于将跟踪文件的统计信息存储到数据库中。在TKPROF创建脚本后,在将结果输入到数据库中。

SYS         禁止或启用 SYS用户所发布的SQL语句列表到输出文件中。

TABLE       在输出到输出文件前,用于存放临时表的用户名和表名。

EXPLAIN     对每条SQL 语句确定其执行规划。并将执行规划写到输出文件中。

其中比较有用的一个排序选项是fchela,即按照elapsed time fetching来对分析的结果排序(记住要设置初始化参数timed_statistics=true),生成的文件将把最消耗时间的sql放在最前面显示。另外一个有用的参数就是sys,这个参数设置为no可以阻止所有以sys用户执行的sql被显示出来,这样可以减少分析出来的文件的复杂度,便于查看


二. Tkprof命令输出的解释:

 

首先解释输出文件中列的含义:

CALL:每次SQL语句的处理都分成三个部分

Parse:这步将SQL语句转换成执行计划,包括检查是否有正确的授权和所需要用到的表、列以及其他引用到的对象是否存在。

Execute这步是真正的由Oracle来执行语句。对于insertupdatedelete操作,这步会修改数据,对于select操作,这步就只是确定选择的记录。

Fetch返回查询语句中所获得的记录,这步只有select语句会被执行。

COUNT:这个语句被parseexecutefetch的次数。

CPU这个语句对于所有的parseexecutefetch所消耗的cpu的时间,以秒为单位。

ELAPSED这个语句所有消耗在parseexecutefetch总的时间。

DISK从磁盘上的数据文件中物理读取的块的数量。一般来说更想知道的是正在从缓存中读取的数据而不是从磁盘上读取的数据。

QUERY在一致性读模式下,所有parseexecutefetch所获得的buffer的数量。一致性模式的buffer是用于给一个长时间运行的事务提供一个一致性读的快照,缓存实际上在头部存储了状态。

CURRENTcurrent模式下所获得的buffer的数量。一般在current模式下执行insertupdatedelete操作都会获取buffer。在current模式下如果在高速缓存区发现有新的缓存足够给当前的事务使用,则这些buffer都会被读入了缓存区中。

ROWS: 所有SQL语句返回的记录数目,但是不包括子查询中返回的记录数目。对于select语句,返回记录是在fetch这步,对于insertupdatedelete操作,返回记录则是在execute这步。


C:/Users/Administrator.DavidDai>tkprof d:/app/administrator/diag/rdbms/orcl/orcl

/trace/orcl_ora_7240.trc D:/orcl_ora_7240.txt aggregate=yes sys=no waits=yes sor

t=fchela

$tkprof orcl_ora_14483.trc allan.txt explain=system/manager aggregate=yes sys=no waits=yes sort=fchela








0 0