ZT 自動10046 trace指令碼
我在日常工作中經常需要用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; --這裡寫執行的
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82387/viewspace-1016559/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中開啟trace 10046 event 的各種方法[zt]Oracle
- ORACLE TRACE 10046Oracle
- Oracle 10046 SQL TRACEOracleSQL
- 10046 trace詳解(1)
- sql_trace/ 10046 整理SQL
- sql_trace and 10046事件SQL事件
- 自動ftp指令碼FTP指令碼
- Oracle SQL Trace 和 10046 事件OracleSQL事件
- 讀懂Oracle 10046 SQL TRACEOracleSQL
- Oracle SQL Trace 和10046 事件OracleSQL事件
- Event 10046 - Enable SQL Statement TraceSQL
- specjvm自動化指令碼JVM指令碼
- 自動備份指令碼指令碼
- docker指令碼自動化Docker指令碼
- LNMP自動部署指令碼LNMP指令碼
- awr自動收集指令碼指令碼
- 自動化RMAN指令碼指令碼
- sql_trace相關指令碼SQL指令碼
- Ubuntu自動啟動配置指令碼Ubuntu指令碼
- 網路卡自動啟動指令碼指令碼
- oracle sql trace與10046淺談OracleSQL
- Maclean教你讀Oracle 10046 SQL TRACEMacOracleSQL
- How to read Oracle 10046 trace fileOracle
- Dockerfile---指令碼自動化Docker指令碼
- Linux自啟動指令碼Linux指令碼
- Ceph 自動reweight指令碼指令碼
- hadoop自動提交指令碼Hadoop指令碼
- MySQL自動備份指令碼MySql指令碼
- 自動生成Statspack的指令碼指令碼
- vue自動化部署指令碼Vue指令碼
- Linux管理指令碼之自動執行指令碼Linux指令碼
- centos 自動啟動指令碼和自啟動服務CentOS指令碼
- windows下oracle自動啟動指令碼WindowsOracle指令碼
- 單個SQL語句的10046 traceSQL
- sql_trace、10046、10053、tkprofSQL
- 如何使用SQL_TRACE和10046事件SQL事件
- 跟蹤SQL - SQL Trace 及 10046 事件SQL事件
- iOS自動打包指令碼+自動上傳到firiOS指令碼