ZT 自动10046 trace脚本

本文介绍了一种在Oracle数据库中使用10046事件进行追踪的方法,包括开始和结束追踪的SQL脚本,以及如何查看追踪文件。同时提供了不同级别的追踪设置及其含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在日常工作中经常需要用10046跟踪一些进程,为了方便,写了一个可以方便查看trace的小脚本。

sql

X
suk@oracle9i> @end_trace--结束trace,此时会自动打开格式化后的trace文件



如果是linux,则在进入sqlplus前需要设置:export EDITOR=vi
或者在$ORACLE_HOME/sqlplus/admin/glogin.sql中加入:
DEFINE _EDITOR = vi
---------------------------------------------------------------------------------
附:以下是事件的有效trace级别:
Level 0 tracing被关闭。这相当于设置sql_trace=false。
Level 1 跟踪sql语句,包括解析、执行、提取、提交和回滚等(SQL_TRACE=TRUE)。这是默认级别。
Level 4 SQL trace信息加绑定变量值(包括变量的详细信息)。
Level 8 SQL trace信息加等待事件信息。
Level 12 SQL trace 信息,等待事件信息,和绑定变量值。
2、获取跟踪文件
你能使用trace事件10046来跟踪用户会话或Oracle后台进程。
会话位置:USER_DUMP_DEST
后台位置:BACKGROUND_DUMP_DEST
sql:
select d.value || '/' || lower(rtrim(i.instance, chr(0))) || '_ora_' ||
p.spid || '.trc' trace_file_name
from (select p.spid
from v$mystat m, v$session s, v$process p
where m.statistic# = 1
and s.sid = m.sid
and p.addr = s.paddr) p,
(select t.instance
from v$thread t, v$parameter v
where v.name = 'thread'
and (v.value = 0 or t.thread# = to_number(v.value))) i,
(select value from v$parameter where name = 'user_dump_dest') d
注意:TRACE将消耗相当的系统资源,因此我们在使用TRACE的时候应当慎重。对于正式的系统,应当只在必要的时候进行TRACE操作,并且应当及时关闭。


begin_trace:
---------------------------------------------------------
-- run in SQL*Plus --

set termout off
set heading off
set verify off
set feedback off
alter session set timed_statistics=true;
alter session set events '10046 trace name context forever,level 12';
---------------------------------------------------------


end_trace:
--------------------------------------------------------
-- run in SQL*Plus --

alter session set events '10046 trace name context off';
column trace_file_name new_val f
column tk_name new_val tk
select
d.value||b.is_win||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name ,
d.value||b.is_win||'tk.prf' tk_name
from
( select p.spid
from v$mystat m,v$session s,v$process p
where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,
( select t.instance from v$thread t,v$parameter v
where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,
( select value from v$parameter where name = 'user_dump_dest') d,
(select DECODE(count(*),0,'/','') is_win from v$version where upper(banner) like '%WINDOWS%') b;

set termout on
set heading on
set verify on
set feedback on
host tkprof &f &tk
edit &tk
--------------------------------------------------------

使用方法:

suk@oracle9i> @begin_trace --设置事件
suk@oracle9i> select * from dual; --这里写执行的

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/82387/viewspace-1016559/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/82387/viewspace-1016559/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值