一個快速檢視trace的小指令碼

space6212發表於2019-01-29
在日常工作中經常需要用10046跟蹤一些程式,為了方便,寫了一個可以方便檢視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 &t



使用方法:
程式碼:

suk
@oracle9i> @begin_trace --設定事件
suk
@oracle9i> select * from dual; --這裡寫執行的sql

X
suk
@oracle9i> @end_trace--結束trace,此時會自動開啟格式化後的trace檔案
.



如果是linux,則在進入sqlplus前需要設定:export EDITOR=vi
或者在$ORACLE_HOME/sqlplus/admin/glogin.sql中加入:
DEFINE _EDITOR = vi

稍作改動,這個指令碼可以方便跟蹤很多事件。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63759/,如需轉載,請註明出處,否則將追究法律責任。

相關文章