Oracle sql trace

來源:互聯網
上載者:User

標籤:

一.SQL_TRACE說明

1.1.在全域啟用    在參數檔案(pfile/spfile)中指定:sql_trace =true    1.2.在當前session級設定    啟用當前session的跟蹤:    alter session set sql_trace=true;    結束跟蹤:    alter session set sql_trace=false;    1.3.跟蹤其他使用者進程    跟蹤其他使用者的進程,可以通過Oracle提供的系統包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION來完成.SET_SQL_TRACE_IN_SESSION過程式要提供三個參數:        SQL> desc dbms_system    ...    PROCEDURE SET_SQL_TRACE_IN_SESSION     Argument Name                     Type                    In/Out Default?     ------------------------------           -----------------------   ------ --------     SID                               NUMBER                  IN     SERIAL#                          NUMBER                  IN     SQL_TRACE                        BOOLEAN                 IN    ...        通過v$session我們可以獲得sid、serial#等資訊:    SQL> select sid,serial#,username         2     from v$session      3  where username is not null;               SID    SERIAL#  USERNAME    ---------- ---------- -------------             8       2041  SYS             9        437  SCOTT        啟用跟蹤:    exec dbms_system.set_sql_trace_in_session(9,437,true)        停止跟蹤:    exec dbms_system.set_sql_trace_in_session(9,437,false)

二.10046事件說明

10046事件是Oracle提供的內部事件,是對SQL_TRACE的增強.10046事件可以設定以下四個層級:1 - 啟用標準的SQL_TRACE功能,等價於sql_trace4 - Level 1 加上綁定值(bind values)8 - Level 1 + 等待事件跟蹤12 - Level 1 + Level 4 + Level 8類似sql_trace,10046事件可以在全域設定,也可以在session級設定。2.1.在全域設定    在參數檔案中增加:     event="10046 trace name context forever,level 12"         此設定對所有使用者的所有進程生效、包括後台進程.2.2 對當前session設定    通過alter session的方式修改,需要alter session的系統許可權:     執行跟蹤:    SQL> alter session set events ‘10046 trace name context forever‘;    SQL> alter session set events ‘10046 trace name context forever, level 8‘;        結束跟蹤:    SQL> alter session set events ‘10046 trace name context off‘;2.3 對其他使用者session設定    通過DBMS_SYSTEM.SET_EV系統包來實現:        SQL> desc dbms_system    ...    PROCEDURE SET_EV     Argument Name                  Type                    In/Out Default?     ------------------------------ ----------------------- ------ --------     SI                             BINARY_INTEGER          IN     SE                             BINARY_INTEGER          IN     EV                             BINARY_INTEGER          IN     LE                             BINARY_INTEGER          IN     NM                             VARCHAR2                IN        ...    其中的參數SI、SE來自v$session視圖,查詢獲得需要跟蹤的session資訊:    select sid,serial#,username     from v$session     where username is not null;        SID SERIAL# USERNAME    ---------- ---------- ------------------------------    8 2041 SYS    9 437 SCOTT    執行跟蹤:    SQL> exec dbms_system.set_ev(9,437,10046,8,‘SCOTT‘);        結束跟蹤:    SQL> exec dbms_system.set_ev(9,437,10046,0,‘SCITT‘);

 

三.與SQL Trace相關的參數

在開啟10046時間的SQL Trace之前,要先設定好下面幾個參數。timed_statistics是否收集與時間相關的統計資訊,如果這個參數為FALSE的話,那麼SQL Trace的結果基本沒有多大的用處,預設情況下這個參數設定為TRUE。max_dump_file_sizedump檔案的大小,在一個很忙的系統上面做SQL Trace的話可能會產生很多的資訊,因此最好在會話層級將這個參數設定成unlimited。3.1 在全域設定這些參數可以載入spfile中,讓系統啟動時自動做全域設定。3.2 對當前session設定        ALTER SESSION SET timed_statistics=trueALTER SESSION SET max_dump_file_size=unlimited        3.3 對其他使用者session設定SYS.DBMS_SYSTEM.SET_BOOL_PARAM_IN_SESSION(:sid, :serial,‘timed_statistics‘, true)SYS.DBMS_SYSTEM.SET_INT_PARAM_IN_SESSION(:sid, :serial,‘max_dump_file_size‘, unlimited)    

 

四.擷取追蹤檔案

以上產生的追蹤檔案位於user_dump_dest目錄中,位置及檔案名稱可以通過以下SQL查詢獲得:                        select d.value||‘/‘||lower(rtrim(i.instance, chr(0)))||‘_ora_‘||p.spid||‘.trc‘ trace_file_namefrom ( select p.spid from sys.v$mystat m,sys.v$session s,sys.v$process p where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,     ( select t.instance from sys.v$thread  t,sys.v$parameter  v where v.name = ‘thread‘ and (v.value = 0 or t.thread# = to_number(v.value))) i,     ( select value from sys.v$parameter where name = ‘user_dump_dest‘) d; /

 

整理自互連網

Oracle sql trace

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.