下面是一個10046的例子,可以用來分析具體的一些sql執行計畫,做個記錄!
設定10046事件來進行SQL跟蹤,可以設定不同的追蹤層級
Level 0 停用SQL跟蹤,相當於SQL_TRACE=FALSE
Level 1 標準SQL跟蹤,相當於SQL_TRACE=TRUE
Level 4 在level 1的基礎上增加綁定變數的資訊
Level 8 在level 1的基礎上增加等待事件的資訊
Level 12 在level 1的基礎上增加綁定變數和等待事件的資訊
啟用跟蹤事件10046
10046事件由於跟蹤的事件不同,產生的文檔的目錄也不相同,跟蹤使用者會話(trace檔案位於USER_DUMP_DEST ),跟蹤background進程(trace檔案位於BACKGROUND_DUMP_DEST )。
1.在全域設定
修改初始化參數
EVENT = "10046 trace name context forever, level 8"
2.在當前session設定
alter session set events '10046 trace name context forever, level 8';
alter session set events '10046 trace name context off';
測試執行個體
SQL> set serverout on;
SQL> alter session set events '10046 trace name context forever, level 8';
Session altered
--為了查看生產檔案省事,設定一個添加名稱
SQL> alter session set tracefile_identifier='yuzh';
Session altered
SQL>執行語句
執行結果
--查看結果所在目錄
SQL> show parameter user_dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string /u01/app/Oracle/admin/CNDBS1T9/udump
--如果不設定別名,通過如下語句得到目標檔案
SQL> select d.value || '/' || lower(rtrim(i.instance, chr(0))) || '_ora_' ||p.spid|| '.trc' trace_file_name
2 from (select p.spid
3 from v$mystat m, v$session s, v$process p
4 where m.statistic# = 1
5 and s.sid = m.sid
6 and p.addr = s.paddr) p,
7 (select t.instance
8 from v$thread t, v$parameter v
9 where v.name = 'thread'
10 and (v.value = 0 or t.thread# = to_number(v.value))) i,
11 (select value from v$parameter where name = 'user_dump_dest') d;
TRACE_FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/admin/CNDBS1T9/udump/cndbs1t9_ora_17764.trc
--如果設定了別名,其實上述語句得出的檔案也還是可用的,不過還是使用別名檔案最好,檔案名稱如下
cndbs1t9_ora_17764_yuzh.trc
--直接解讀可能比較困難,我們使用tkprof來解析一下
oracle@shdb06t $ tkprof cndbs1t9_ora_17764_yuzh.trc 123.txt
TKPROF: Release 10.2.0.4.0 - Production on Tue Aug 24 15:07:17 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
oracle@shdb06t $ cat 123.txt
--一般需調優的評估量就是disk query current 這三個指標
--關閉10046
alter session set events '10046 trace name context off';