sql_trace跟蹤檔案中名詞簡寫說明

abraham_dba_2013發表於2014-12-04
    SQL_trace是oracle提供的一個非常好的跟蹤工具,主要用來檢查資料庫的異常情況,通過跟蹤資料庫的活動,找到有問題的語句。
一、概述:
    SQL_TRACE是Oracle的一個非常強大的工具。開啟SQL_TRACE就可以逐步捕獲任何一個會話的資料庫活動,或者捕獲整個資料庫的活動,並將資料庫活動記錄成跟蹤檔案。每次使用完之後需要關閉跟蹤,否則會降低系統的效能。
    SQL_TRACE可以幫助診斷許多問題,其中包括:
二、用法:
   1、檔案跟蹤的分類:
      跟蹤DBA可以採用兩種方式進行跟蹤:
      a.跟蹤整個資料庫例項。
     只需要簡單的修改引數檔案(pfile/spfile)引數 SQL_TRACE = TRUE ,然後重新啟動資料庫即可。在全域性啟用SQL_TRACE會導致所有程式的活動被跟蹤,包括後臺程式及所有使用者程式,這樣也會資料庫導致效能下降比較明顯。
      b.會話級跟蹤。
     SQL_TRACE的通常使用方式是僅跟蹤一個會話。被跟蹤的會話可以是您自己的,也可以是其它使用者的會話。如果是自己的會話,只需要在SQL*PLUS中執行一下命令即可:
      SQL> alter session set sql_trace = true;
      類似的如果取消對會話的跟蹤,執行一下命令:
      SQL> alter session set sql_trace = false;
     
      如果需要跟蹤一個特定的會話,首先需要獲取會話的SID和Serial#,這些資訊可以在檢視V$SESSION中獲得,一旦知道了這兩個引數,就可以執行一下命令:
      SQL> execute SYS.dbms_system.set_sql_trace_in_session(13,9,true);
      同樣也可以使用這個過程關閉會話跟蹤:
     SQL> execute SYS.dbms_system.set_sql_trace_in_session(13,9,false);
    
    可以批量生成啟用指令碼語句:
     SELECT username,
       sid,
       serial#,
       program,
       'exec sys.dbms_system.set_sql_trace_in_session(' || sid || ',' ||
       serial# || ',true);'
  FROM v$session a
 WHERE a.username = 'SPCS_WMS_SH'
   AND module = 'JDBC Thin Client';

  2、跟蹤檔案的位置:
     一旦為會話啟用了SQL_TRACE,ORACLE就會在udump管理區建立跟蹤檔案,檔案的目標位置由引數user_dump_dest來確定。每個操作都不會覆蓋原來的檔案,新的跟蹤記錄將會被追加到檔案末尾。通常情況下,可以通過以下SQL來確定檔名:    
    SELECT d.value || '/' || lower(rtrim(i.instance, chr(0))) || '_ora_' ||
       p.spid || '.trc' trace_file_name
  FROM (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;
 
 3、計時資訊:
    為了最大限度的利用跟蹤檔案,應該開啟計時標誌,通過引數TIMED_STATISTICTS=TRUE進行設定,這樣可以對每個SQL語句的執行時間等進行記錄,這個功能對系統效能的負擔很小。
    開啟會話的計時資訊:
    SQL> alter session set timed_statistics = true ;
    開啟資料庫系統的計時資訊
    SQL> alter system set timed_statistics = true ;
 
 4、TKPROF:
    通過前三步的設定已經知道如何生成SQL跟蹤檔案了,ORACLE生成的跟蹤檔案閱讀起來很困難(也就是易讀性很差)。ORACLE提供了一個格式化跟蹤檔案的工具 - TKPROF( Transient Kernel Profiler ),通過這個工具能將SQL檔案轉化為分析人員容易理解的格式。
   
    一般TKPROF工具的使用的簡單方法,只用到了兩個關鍵字:跟蹤檔名和輸出檔名 (TKPROF的具體請參閱其他資料):
    TKPROF
   
   通過設定tkprof的關鍵字[EXPLAIN = ],也可以在跟蹤檔案中增加SQL語句的執行計劃:
  C:>tkprof D:oracleadminora9iudumpora9i_ora_2060.trc d:report.txt explain=test/test;  
  
跟蹤原檔案內容:
PARSING IN CURSOR #140526285366352 len=34 dep=1 uid=90 oct=3 lid=90 tim=1417657718956666 hv=1291129642 ad='ff3fd770' sqlid='37cvw956ga4ta'
SELECT PROJECT_ID FROM WM_IN_ORDER
END OF STMT
PARSE #140526285366352:c=0,e=78,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=3568243417,tim=1417657718956664
EXEC #140526285366352:c=0,e=53,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=3568243417,tim=1417657718956839
WAIT #140526285366352: nam='Disk file operations I/O' ela= 108 FileOperation=2 fileno=4 filetype=2 obj#=79237 tim=1417657718962499
WAIT #140526285366352: nam='direct path read' ela= 208 file number=4 first dba=8515 block cnt=5 obj#=79237 tim=1417657718962796
WAIT #140526285366352: nam='direct path read' ela= 125 file number=4 first dba=141248 block cnt=8 obj#=79237 tim=1417657718963055
FETCH #140526285366352:c=6000,e=6234,p=13,cr=4,cu=0,mis=0,r=1,dep=1,og=1,plh=3568243417,tim=1417657718963181
STAT #140526285366352 id=1 cnt=1 pid=0 pos=1 obj=79237 op='TABLE ACCESS FULL WM_IN_ORDER (cr=4 pr=13 pw=0 time=6225 us cost=2081 size=927160 card=231790)'
CLOSE #140526285366352:c=1000,e=188,dep=1,type=3,tim=1417657718963433
EXEC #140526285378960:c=7000,e=7022,p=13,cr=4,cu=0,mis=0,r=1,dep=0,og=1,plh=0,tim=1417657718963470
WAIT #140526285378960: nam='SQL*Net message to client' ela= 2 driver id=1650815232 #bytes=1 p3=0 obj#=79237 tim=1417657718963544

跟蹤跟蹤檔案中名詞簡寫說明:
tim--time
ela--elapsed time(微秒單位)
r---rows
cr--consistent read
obj#--object_id

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

相關文章