接上篇博文Oracle执行语句跟踪(1)——使用sql trace实现语句追踪,一旦我们通过会话追踪获取到超时事物的执行语句,就可以使用10046事件对语句进行追踪。

启用10046事件追踪的方式


SQL> alter session set events '10046 trace name context forever ,level 12' ;
SQL> alter session set events '10046 trace name context off' ;

从上面语句可以看出追踪的是当前正在使用的会话,在两个语句之间可以放入我们需要分析的语句。

获取trace文件

在当前sqlplus会话下,可以通过以下语句获得trace文件的数字编号。其中SPID即为trace文件的数字编号,一般的组成方式为实例名_ora_SPID.ora


select b.sid,b.SADDR,c.ADDR,c.PID,c.SPID from v$session b,v$process c
where b.SID=(select distinct sid from v$mystat)
and b.PADDR=c.ADDR;

trace文件的解析一样可以使用tkprof。


tkprof INST_ora_3370.trc INST_ora_3370.trc explain=test/test

用于监控的脚本

为了同时更好的分析查实事件,我写了一个脚本用于同时获取外部时间计时同时生成trace文件。



prompt written by camash

prompt Importing table ...

set trimspool on;

set linesize 120;

set pagesize 2000;

set newpage 1;

set heading off;

set term off;

spool test_formal_4.txt;

set feedback off

set define off

var t1 varchar2(20)

var t2 varchar2(20)

set timing on

alter session set events '10046 trace name context forever ,level 12' ;

exec :t1:=to_char(SYSTIMESTAMP,'hh24:mi:ss.ff3');

your sql script

alter session set events '10046 trace name context off' ;

prompt Done.

exec :t2:=to_char(SYSTIMESTAMP,'hh24:mi:ss.ff3')

set serverout on

exec dbms_output.put_line('start time: '|| :t1);

exec dbms_output.put_line('end time: '|| :t2);

spool off;

这样每条SQL语句的实际时间就会存放在执行目录的“test_formal_4.txt”文件中,而trace文件将在trace文件目录中生成。

版权说明:camash原创,转载请注明出处 http://www.cnblogs.com/shenfeng/

--EOF--

Oracle执行语句跟踪(2)——使用10046事件实现语句追踪的更多相关文章

  1. Oracle执行语句跟踪(1)——使用sql trace实现语句追踪

    系统上的某个接口提交数据经常超时(超过3秒),而我单独在后台数据库(Oracle)执行insert,只需要17ms.提交数据的客户端没有任何的调试日志,只能通过跟踪后台语句记录实际调用过程中的数据库执 ...

  2. Oracle警告、跟踪文件(10046、死锁等跟踪)

    跟踪文件由各个后台进程生成,警报日志中记录关键操作包括:     ·所有启动和关闭命令,包括中间命令,如alter database mount     ·实例的所有内部错误(ORA-600错误,只能 ...

  3. SQL Tuning 基础概述03 - 使用sql_trace和10046事件跟踪执行计划

    1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: alter session set sql_trace = true; //开始sql_trace alter session ...

  4. Oracle 课程八之性能优化之10046事件

    Oracle 的事件很多. 具体参考blog: Oracle 跟踪事件 set event 转摘:http://blog.csdn.net/tianlesoftware/archive/2009/12 ...

  5. Oracle SQL Trace 和 10046 事件

    http://blog.csdn.net/tianlesoftware/article/details/5857023 一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRAC ...

  6. 10046事件sql_trace跟踪

    查看 sql 执行计划的方法有许多种, 10046 事件就是其中的一种. 与其他查看 sql 执行计划不同, 当我们遇到比较复杂的 sql 语句, 我们可以通过 10046 跟踪 sql 得到执行计划 ...

  7. 深入理解Oracle调试事件:10046事件详解

    10046事件是SQL_TRACE的扩展,被戏称为"吃了兴奋剂的SQL_TRACE"       有效的追踪级别:              ① 0级:SQL_TRACE=FASL ...

  8. 10046事件跟踪会话sql

    背景知识: 10046 事件按照收集信息内容,可以分成4个级别: Level 1: 等同于SQL_TRACE 的功能 Level 4: 在Level 1的基础上增加收集绑定变量的信息 Level 8: ...

  9. oracle 执行跟踪

    一.sql_trace的介绍 --打开trace文件设置,把sql trace设置为true,就会在udump目录中增加一个trc文件.alter session set sql_trace=true ...

随机推荐

  1. Servlet、MySQL中文乱码

    1.Servlet中文乱码: 在doPost或doGet方法里,加上以下两行即可: response.setContentType("text/html;charset=UTF-8" ...

  2. CSS 奇技淫巧十八招

    http://www.tuicool.com/articles/VZneI3   開始覺得自己會寫 CSS 也算有一段時間了,常常遇到一些非常實用的技巧不斷地反覆使用,但是我個人覺得對初學者來說很難從 ...

  3. Android Phonebook编写联系人UI加载及联系人保存流程(四)

    2014-01-07 10:23:22 将百度空间里的东西移过来. 5. KindSectionView KindSectionView是何方神圣呢?它又是怎么怎么和一个DataKind,以及一个Ra ...

  4. 编绎openssl杂记(window)

    Window 下 OpenSSL 编绎过程 1. 下载 ActivePerl-5.12.4.1205  , openssl-0.9.8 , 配置Perl环境变量 , 解压openssl-0.9.82. ...

  5. UITableViewCell 单元格样式

    UITableViewCell 单元格样式作用 typedef NS_ENUM(NSInteger, UITableViewCellStyle) { UITableViewCellStyleDefau ...

  6. SharedPreference 存储小量数据,一般首次启动显示引导界面就用这个。

    写://添加一个SharedPreference并传入数据SharedPreference sharedPreferences = getSharedPreferences("share_d ...

  7. iOS开发之UITableView使用总结

    什么是UITableView 在众多移动应用中,能看到各式各样的表格数据 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView UITableView继承自UIScrollVie ...

  8. AS的快捷键

    Ctrl+Shift+Alt+N 查找类中的方法或变量 Ctrl+P 方法参数提示 Alt+Insert 生成代码(如get,set方法,构造函数等) 删除导入多余的包Ctrl+Alt+o 提取局部变 ...

  9. TPLink 备份文件bin文件解析[续]

    Most routers allow to save and restore configuration from files. This is cool because you can edit t ...

  10. ubuntu16.04操作练习&问题解决

    1. 安装更新时提示/boot空间不足: boot文件夹里存放的是系统引导文件和内核的一些东西,旧内核的东西需要手动删除,释放空间.所以: step1:查看 dpkg --get-selections ...