oracle 执行语句显示2,Oracle执行语句跟踪(2)——使用10046事件实现语句追踪

接上篇博文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--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值