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来执行语句。对于insert、update、delete操作,这步会修改数据,对于select操作,这步就只是确定选择的记录。

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

COUNT:这个语句被parse、execute、fetch的次数。

CPU:这个语句对于所有的parse、execute、fetch所消耗的cpu的时间,以秒为单位。

ELAPSED:这个语句所有消耗在parse、execute、fetch的总的时间。

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

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

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

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

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

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

会话级:

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;

时间: 2024-08-14 20:02:15

Oracle Tkprof的相关文章

Oracle 11g 查看执行计划之10046事件

使用10046事件查看真实的执行计划 操作如下: SQL> conn / as sysdba Connected. SQL> SQL> oradebug setmypid Statement processed. SQL> SQL> oradebug event 10046 trace name context forever,level 12; Statement processed. SQL> select count(object_id) from roidba.

Oracle 10046事件 介绍(二) ---tkprof

之前简单的写了10046事件介绍的文章http://hbxztc.blog.51cto.com/1587495/1898624,当然收集10046 trace不是最终的目的,能够读懂并且通过分析10046 trace进而分析相应sql的性能问题才是10046 trace真正发挥作用的地方.但是10046事件所产生的原始trace文件习惯称之为裸trace文件(raw trace),Oracle记录在裸trace文件中的内容一眼看上去并不是那么观,也不是那么容易看懂.为了祼trace文件能够以一种

Oracle性能分析3:TKPROF简介

tkprof它是Oracle它配备了一个命令直插式工具,其主要作用是将原始跟踪文件格文本文件的类型,例如,最简单的方法,使用下面的: tkprof ly_ora_128636.trc ly_ora_128636.txt tkprof带有非常多參数,在多数情况下,使用这些參数对你的分析将非常有帮助. tkprof參数 假设不带不论什么參数执行tkprof,它将打印出完整的參数列表,并带有简单的描写叙述.以下是对參数的说明: explain 为每一个SQL语句提供一个运行计划. 该參数须要指定用户.

Oracle中有个tkprof来格式化oracle的trace文件

1.MySQL日志文件系统的组成2.慢查询日志3.慢查询日志演示long_query_time : 设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10sslow_query_log : 指定是否开启慢查询日志log_slow_queries : 指定是否开启慢查询日志(该参数要被slow_query_log取代,做兼容性保留)slow_query_log_file : 指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.logmin_exa

Oracle性能分析3:TKPROF介绍

tkprof是Oracle自带的一个命令行工具,主要作用是将原始的跟踪文件转换为格式化的文本文件,最简单的使用方式如下: tkprof ly_ora_128636.trc ly_ora_128636.txt tkprof带有很多参数,在多数情况下,使用这些参数对你的分析将很有帮助. tkprof参数 如果不带任何参数运行tkprof,它将打印出完整的参数列表,并带有简单的描述.下面是对参数的说明: explain 为每个SQL语句提供一个执行计划.该参数需要指定用户.密码,也可以指定数据库连接串

oracle中如何使用TKPROF命令查看Trace file

Trace file(追踪文件)是以trc为后续的文本文件,它记录了各种sql操作及所消耗的时间等,根据trace文件我们就可以了解哪些sql导致了系统的性能瓶颈,进而采取恰当的方式调优. 当我们操作oracle数据库,每次都会产生一个会话(session),session中记录了所有操作,这些操作都会记录在trace文件中. 如何使用TKPROF命令查看Trace file: SQL>alter session set sql_trace=true; SQL>select count(*)

ORACLE 物理读 逻辑读 一致性读 当前模式读总结浅析

在ORACLE数据库中有物理读(Physical Reads).逻辑读(Logical Reads).一致性读(Consistant Get).当前模式读(DB Block Gets)等诸多概念,如果不理解或混淆这些概念的话,对你深入理解一些知识无疑是一个障碍,但是这些概念确实挺让让人犯晕的.下面我们总结.学习一下这方面的知识点.捋一捋他们的关系和特点,希望对你有所帮助. 物理读(Physical Reads) 从磁盘读取数据块到内存的操作叫物理读,当SGA里的高速缓存(Cache Buffer

ORACLE中seq$表更新频繁的分析

在分析ORACLE的AWR报告时,发现SQL ordered by Executions(记录了按照SQL的执行次数排序的TOP SQL.该排序可以看出监控范围内的SQL执行次数)下有一个SQL语句执行非常频繁,一个小时执行了上万次: update seq$ set increment$=:2, minvalue=:3, maxvalue=:4, cycle#=:5, order$=:6, cache=:7, highwater=:8, audit$=:9, flags=:10 where ob

Oracle 2016年第一次认真复习

1.desc table_name 可以查询表的结构 2.怎么获取有哪些用户在使用数据库 select username from v$session; 3.如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ? select sys_context('userenv','ip_address') from dual; 如果是登陆本机数据库,只能返回127.0.0.1 4.如何给表.列加注释? SQL>comment on table 表 is '表注释'; 注释已创建 SQL>co