sql跟踪及tkprof使用

简述

在oracle数据库中,awr是关于数据库系统整体的负载情况和运行情况的报告。而当系统负载都显示正常,而客户端执行某些动作响应很慢,或者某些终端连接的会话执行缓慢或异常时,就需要用到会话级别的跟踪了。

常见方法概述

Session级别跟踪的方法有许多,比如当前会话的跟踪,可以执行命令

Alter session set sql_trace=true;

Alter session set sql_trace=false;

或者使用10046事件

Alter session set events ‘10046 trace name context forever,level 12’;

Alter session set events ‘10046 trace name context off’

其中level 12是可选级别。

Level 1是指标准的sql跟踪,与设置sql_trace效果相同。

Level 4是指在标准的基础上增加绑定变量信息。

Level 8是指在标准的基础上增加等待事件信息。

Level 12是指在标准的基础上同时增加绑定变量信息和等待事件信息。

以上例子是在session级别进行跟踪,若环境中需要在整个实例级别进行跟踪,则直接将以上命令中的session更改为system即可实现。但系统级别的跟踪将消耗大量的系统资源,因此,若非性能诊断需要,不要开启在系统级别的sql_trace。

我们要用的方法

方法有很多,会用一种就行,下面我们说下我推荐的一种方法。

首先,可以设置trace文件标志,使我们的trace文件更容易找出来。

Alter session set tracefile_identifier=’wjf’;

之后打开计时

Alter system set timed_statistics=true;

然后查找到要跟踪会话的sid与serial#,

Select sid,serial#,osuser,machine from v$session;

找到sid与serial#后,就可以执行跟踪了,比如sid=22,serial#=22;

执行以下命令

Exec dbms_monitor.session_trace_enable(22,22,waits=>true,binds=>true);

Exec dbms_monitor.session_trace_disable(22,22);

其中waits=>true跟binds=>true想必也不用解释了。

追踪文件处理(tkprof)

追踪后的trc文件可以在DIAGNOSTIC_DEST目录下找到,但是直接追踪产生的trc文件可读性并不好,需要借助一个oracle提供的工具处理以下,这个工具就是tkprof。

例如我们此处生成trc文件名称为orcl_ora_1234_wjf.trc.

则我们需要在系统级别,即退出sqlplus,在shell或cmd下执行以下命令

Shell>tkprof d:/app/administrator/diag/rdbms/orcl/orcl/trace/orcl_ora_1234_wjf.trcd:/wjf_2222.txt

这样就能生成可读性较强的追踪文件进行分析了。Tkprof工具必须输入的两个参数也就是一个输入文件,一个输出文件而已。

但tkprof还有一些其他参数,很多时候需要利用其他参数来生成文件,从而更方便找出问题。

Tkprof工具的标准语法

tkprof filename1filename2 [waits=yes|no] [sort=option] [print=n]

[aggregate=yes|no] [insert=filename3] [sys=yes|no] [table=schema.table]

[explain=user/password] [record=filename4] [width=n]

Tkprof参数介绍

介绍几个自我感觉比较常用的参数

Waits=yes|no:是否包含等待事件信息。

Print=n:设置显示多少行sql。比如你设置了排序信息,可以只查看top 10的sql,就可以设置print=10了。

Sys=yes|no:设置是否包含sys用户所发布的sql。主要是为了启动或禁止显示用户为执行自己的sql所产生的递归sql,默认为yes。

Sort=option:设置生成sql根据指定选项进行排序。

prscnt  number oftimes parse was called

prscpu  cpu timeparsing

prsela  elapsedtime parsing

prsdsk  numberof disk reads during parse

prsqry  numberof buffers for consistent read during parse

prscu   numberof buffers for current read during parse

prsmis  numberof misses in library cache during parse

execnt  numberof execute was called

execpu  cputime spent executing

exeela  elapsedtime executing

exedsk  numberof disk reads during execute

exeqry  numberof buffers for consistent read during execute

execu   numberof buffers for current read during execute

exerow  numberof rows processed during execute

exemis  numberof library cache misses during execute

fchcnt  numberof times fetch was called

fchcpu  cputime spent fetching

fchela  elapsedtime fetching

fchdsk  numberof disk reads during fetch

fchqry  numberof buffers for consistent read during fetch

fchcu   numberof buffers for current read during fetch

fchrow  numberof rows fetched

userid  useridof user that parsed the cursor

其他还有一些参数,具体可以查看联机文档中的performance tunning guide。

Tkprof举例

所以,一个比较正常的tkprof语句可能是这个样子的

tkprof d:/app/administrator/diag/rdbms/orcl/orcl/trace/orcl_ora_1234_wjf.trcd:/wjf_2222.txt waits=no  sys=no  sort=(prscpu,execpu,fchcpu) print=10;

就这样了,就像生成awr报告一样,生成文件永远是最简单的,能把生成的报告读的多透彻才是见功底的东西。在此,我仅仅把生成报告的过程做个记录,至于怎么读,慢慢再说。

时间: 2024-10-22 07:26:04

sql跟踪及tkprof使用的相关文章

SQL 跟踪方法相关介绍

oracle sql跟踪方法:1.sql_trace打开跟踪:alter session set sql_trace=true;为跟踪文件做标记:alter session set tracefile_identifier='look_for_me';停止跟踪:alter session set sql_trace=false;最后生成的跟踪文件可以采用tkprof工具生成来查看. 2.10046跟踪代码跟踪界别介绍:Level 0 停用SQL跟踪,相当于SQL_TRACE=FALSELevel

Oracle性能分析1:开启SQL跟踪和获取trace文件

当Oracle查询出现效率问题时,我们往往需要了解问题所在,这样才能针对问题给出解决方案.Oracle提供了SQL执行的trace信息,其中包含了SQL语句的文本信息,一些执行统计,处理过程中的等待,以及解析阶段(如生成执行计划)产生的信息.这些信息有助于你分解sql语句的服务时间和等待时间,并了解所用资源和同步点的详细信息,从而帮助你诊断存在的性能问题. 这篇文章介绍了怎么开启SQL跟踪和获取trace文件,详细信息如下. 开启SQL跟踪 从内部技术细节看,SQL跟踪是基于10046调试事件的

迷你sql profile,给缺少sql跟踪的朋友们

如果你的数据库没有sqlprofile,看这里. 如果你没时间装sqlserver那一系列的东西,看看这里,也许能解决呢. 这是一个迷你版的sqlprofile ,在win7下测试,链接sqlserver 2012没有问题. http://expressprofiler.codeplex.com/

sql sever 2012 sql跟踪和查询快捷键

原文地址:https://www.cnblogs.com/zhangdashao/p/11430946.html

PLSQL_性能优化效能跟踪工具SQL Trace分析(案例)

2014-06-25 BaoXinjian 一.摘要 SQL TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL TRACE是非常常用的方法.一般,一次跟踪可以分为以下几步:1.界定需要跟踪的目标范围,并使用适当的命令启用所需跟踪.2.经过一段时间后,停止跟踪.此时应该产生了一个跟踪结果文件.3.找到跟踪文件,并对其进行格式化,然后阅读或分析. 另文已介绍了其他的跟踪工具DBMS_PROFILER, Form Trace, Re

Sql Server来龙去脉系列之三 查询过程跟踪

我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更新.CPU占用过高等,跟踪这些状态是非常有用地. 本章节覆盖了事件系统的关键区域:触发器.事件通知器.改变跟踪.SQL跟踪.扩展事件等.这些事件都有一个相似目的:响应或者记录发生的事件.但每一中事件的工作方式又不一样. 基础:触发器和事件通知器 触发器非常多,Data Manipulation La

ST05 跟踪SQL

      SAP R/3 提供标准ABAP SQL 跟踪工具.使用T-Code:ST05 可以进入追踪设定画面: 在Trace Modes 区域中选择需要在SAP R/3 Server 上trace 的范围: SQL Trace: 追踪该AP Server 上已过滤的SQL 语句.  Enqueue Trace: 追踪Enqueue Server 上的队列. RFC Trace: 追踪该AP Server 上RFC 行为. Buffer Trace: 追踪该AP Server 上Buffer

mysql跟踪sql

mysql中执行的sql跟踪比oracle简单多了,它自身有log.我们只要打开这个log记录,执行sql语句,再查看这个log就可以了.1. 首先要打开log的开关使用命令:show variables like '%log%';能看到一个查询结果: 将其设置为ON,使用以下命令:set global general_log=ON再查看一下:show variables like '%log%'; general_log的开关应该已经打打开了 注意,我们还能看到一个general_log_fi

How To Use TKPROF To Trace And Analyze Sql Explan

The SQL Trace facility and TKPROF let you accurately assess the efficiency of the SQL statements an application runs. For best results, use these tools withEXPLAIN PLAN rather than using EXPLAIN PLAN alone. Using the SQL Trace Facility and TKPROF: 1.