Oracle 10046 SQL TRACE

pentium發表於2018-12-23

10046是一個Oracle的內部事件(event),透過設定這個事件可以得到Oracle內部執行系統解析、呼叫、等待、繫結變數等詳細的trace資訊,對於分析系統的效能有著非常重要的作用。

設定10046事件的不同級別能得到不同詳細程度的trace資訊,下面就列出各個不同級別的對應作用:

等級 二進位制 作用
0000 無輸出
1 0001 輸出 ****,APPNAME(應用程式名),PARSING IN CURSOR,PARSE ERROR(SQL解析),EXEC(執行),FETCH(獲取資料),UNMAP,SORT UNMAP(排序,臨時段),ERROR,STAT(執行計劃),XCTEND(事務)等行
2 0011 與等級1完全一樣
4 0101 包括等級1的輸出,加上BIND行(繫結變數資訊)
8 1001 包括等級1的輸出,加上WAIT行(等待事件資訊)
12 1101 輸出等級1、等級4以及等級8的所有資訊

等級1的10046 trace被視為是普通的SQL Trace,而等級4、等級8以及等級12則被稱為Extended SQL Trace,Extended SQL Trace裡面包括了最有用的WAIT資訊,因此在實際中也是用的最多的。

與SQL Trace相關的引數

在開啟10046時間的SQL Trace之前,要先設定好下面幾個引數。

timed_statistics
這個引數決定了是否收集與時間相關的統計資訊,如果這個引數為FALSE的話,那麼SQL Trace的結果基本沒有多大的用處,預設情況下這個引數設定為TRUE。
max_dump_file_size
dump檔案的大小,也就是決定是否限制SQL Trace檔案的大小,在一個很忙的系統上面做SQL Trace的話可能會生成很多的資訊,因此最好在會話級別將這個引數設定成unlimited。
tracefile_identifier
給Trace檔案設定識別字串,這是個非常有用的引數,設定一個易讀的字串能更快的找到Trace檔案。

要在當前會話修改上述引數很簡單,只要使用下面的命令即可:

1
2
3
ALTER   SESSION  SET   timed_statistics= true
ALTER   SESSION  SET   max_dump_file_size=unlimited
ALTER   SESSION  SET   tracefile_identifier='my_trace_session

10046 Trace啟動方法

使用sql_trace引數

sql_trace應該是簡單快捷的開啟Trace的方法了,不過透過sql_trace只能開啟級別為1的Trace,而無法開啟其他更高階的Trace。

session 級別: alter session set events ‘10046  trace name context forever,level X’;

system 級別 :      alter system  set events ‘10046  trace name context forever,level X’;

 針對非本會話的 某一個程式設定,如果你知道他的SPID 作業系統程式號

oradebug setospid SPID;

oradebug event 10046 trace name context forever, level X;


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

相關文章