Oracle Tkprof详细介绍
admin
2023-04-28 05:41:33
0

今天小编就为大家带来一篇有关Oracle Tkprof的文章。小编觉得挺不错的,为此分享给大家做个参考。一起跟随小编过来看看吧。

Tkprof是一个用于分析Oracle跟踪文件并且产生一个更加清晰合理的输出结果的可执行工具。如果一个系统的执行效率比较低,一个比较好的方法是通过跟踪用户的会话并且使用Tkprof工具使用排序功能格式化输出,从而找出有问题的SQL语句。

 

. 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 readsduring parse

 prsqry  number of buffers forconsistent read during parse

 prscu   number of buffers forcurrent read during parse

 prsmis  number of misses inlibrary cache during parse

 execnt  number of execute wascalled

 execpu  cpu time spent executing

 exeela  elapsed time executing

 exedsk  number of disk readsduring execute

 exeqry  number of buffers forconsistent read during execute

 execu   number of buffers forcurrent read during execute

 exerow  number of rows processedduring execute

 exemis  number of library cachemisses during execute

 fchcnt  number of times fetch wascalled

 fchcpu  cpu time spent fetching

 fchela  elapsed time fetching

 fchdsk  number of disk readsduring fetch

 fchqry  number of buffers forconsistent read during fetch

 fchcu   number of buffers forcurrent read during fetch

 fchrow  number of rows fetched

 userid  userid of user that parsedthe 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是用于给一个长时间运行的事务提供一个一致性读的快照,缓存实际上在头部存储了状态。

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

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

 

. Tkprof的使用步骤基本上遵循以下几步:

1、设置TIMED_STATISTICSTrue,可以在会话级别,也可以在实例级别。

会话级:

SQL> alter session settimed_statistics=True;

实例级:

SQL> alter system settimed_statistics=True scope=both;

2 设置SQL_TRACE,可以在会话级,也可以在数据库级。

会话级:

SQL> alter session set sql_trace=true

实例级:

SQL> alter system set sql_trace=truescope=both;

关于Oracle Tkprof的介绍就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

相关内容

热门资讯

烈焰熊熊,堪比“原子弹”,欧洲... 据美国有线电视新闻网(CNN)7月29日报道,席卷法国西南部的大片野火燃烧得如此猛烈,以至于形成了一...
外交部:对日本熊本县地震遇难者... 据凤凰卫视报道,针对日本熊本县发生强震造成人员伤亡,中国外交部发言人毛宁7月29日在例行记者会上表示...
高铁喧哗被劝阻后叫嚣全家体制内... “女子高铁喧哗被劝阻后叫嚣全家体制内”一事迎来官方通报。据新京报报道,7月29日,辽宁北票市公安局发...
广东专业蓝牙耳机定制厂家推荐,... 在珠三角腹地,广东早已成为全球蓝牙耳机产业链的“心脏地带”。从深圳华强北的声学元件批发,到东莞、惠州...
格雷厄姆葬礼变地缘竞价场!两大... 有些葬礼,送别的是逝者;有些葬礼,演的却是活人最现实的政治博弈。当地时间7月28日,美国老牌鹰派参议...
一道小学数学题难住3名医学博士... 3名不同学校的博士同做一道数学题,谁最厉害?近日,一陕西网友发布的视频引发热议。29日,视频发布者“...
华为全新“小艺任务”亮相:整合... 7月29日,在华为鸿蒙电脑新品技术沟通会上,终端云服务小艺业务部总裁贾永利宣布,小艺将迎来“从对话到...
广西日报特稿《王的猜想》火了,... 澎湃新闻记者 蒋子文 实习生 汤煜炜为应对外界购买纸质版特稿《王的猜想》的热情,《广西日报》宣布紧急...
月租20元内!2026年平价云... 不少手游玩家、账号运营从业者挑选云手机时,首要诉求就是低价够用,想要控制每月支出在20元以内,同时兼...
诺奖得主如何看待王虹境遇?“我... 中村修二(2014年诺贝尔物理学奖得主)【导读】近日王虹与邓煜双双获得2026年菲尔兹奖,成为了首批...