溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

分析及格式化trace文件 - TKPROF (Transient Kernel Profiler)

發(fā)布時間:2020-08-10 17:51:52 來源:ITPUB博客 閱讀:201 作者:Davis_itpub 欄目:建站服務(wù)器

TKPROF (Transient Kernel Profiler) :   TKPROF是一個用于分析oracle跟蹤文件并且產(chǎn)生一個更加清晰合理的輸出結(jié)果的可執(zhí)行工具.   或者解釋為Trace Kernel Profile 也是可以的。

先看例子:

tsgoooo</u01/product/admin/epd3/udump>$tkprof  epd3_ora_23315.trc  trace.txt   explain=sfis1/sfis1  print=50  record=sql.txt  

獲得幫助: 輸入tkprof 后直接回車可以看到幫助 

tsgoooo</u01/product/admin/epd3/udump>$tkprof
Usage: tkprof tracefile outputfile [explain= ] [table= ]
              [print= ] [insert= ] [sys= ] [sort= ]
  table=schema.tablename   Use 'schema.tablename' with 'explain=' option.
  explain=user/password    Connect to ORACLE and issue EXPLAIN PLAN.
  print=integer    List only the first 'integer' SQL statements.
  aggregate=yes|no
  insert=filename  List SQL statements and data inside INSERT statements.
  sys=no           TKPROF does not list SQL statements run as user SYS.
  record=filename  Record non-recursive statements found in the trace file.
  waits=yes|no     Record summary for any wait events found in the trace file.
  sort=option      Set of zero or more of the following sort options:
    prscnt  number of times parse was called
    prscpu  cpu time parsing
    prsela  elapsed time parsing
    prsdsk  number of disk reads during parse
    prsqry  number of buffers for consistent read during parse
    prscu   number of buffers for current read during parse
    prsmis  number of misses in library cache during parse
    execnt  number of execute was called
    execpu  cpu time spent executing
    exeela  elapsed time executing
    exedsk  number of disk reads during execute
    exeqry  number of buffers for consistent read during execute
    execu   number of buffers for current read during execute
    exerow  number of rows processed during execute
    exemis  number of library cache misses during execute
    fchcnt  number of times fetch was called
    fchcpu  cpu time spent fetching
    fchela  elapsed time fetching
    fchdsk  number of disk reads during fetch
    fchqry  number of buffers for consistent read during fetch
    fchcu   number of buffers for current read during fetch
    fchrow  number of rows fetched
    userid  userid of user that parsed the cursor 

幾個重要參數(shù)的用法講解

  • sys參數(shù),如果不指定,默認值為yes.這個參數(shù)的含義是,輸出文件中是否包含以SYS用戶運行的sql語句。這個參數(shù)還是蠻有用的,我們執(zhí)行sql語句的時候,后臺經(jīng)常會執(zhí)行很多遞歸的語句,比如你輸入了SELECT * FROM TEST;如果這個語句是硬解析的話,那么會產(chǎn)生很多遞歸的SQL,遞歸的去查詢表的統(tǒng)計信息,列的統(tǒng)計信息,索引的統(tǒng)計信息等,當然遞歸的不止是這些。這些遞歸的sql都是以SYS用戶運行的,如果你不希望看到這些遞歸SQL,那么就加上這個參數(shù)sys=no.
  • record參數(shù),它指定的是一個路徑下的文件,這個文件用來生成在跟蹤文件中找到的所有的非遞歸SQL。比如你在SQLPLUS里執(zhí)行了三條語句,select * from a;select * from b;select * from c;,那么如果你指定了這個參數(shù)如:record=c:\test.log,那么你用tkprof格式化跟蹤文件后,這個test.log里就會記錄這三個SQL。這個特性在有些時候還是很有用的,因為跟蹤文件往往都會比較大,找起來會比較費勁,我們可以通過指定這個參數(shù)先大體了解下,跟蹤文件里都有哪些非遞歸SQL。而且這個功能還有助于我們重演SQL語句(綁定變量的不可以)。
  • aggregate參數(shù),它指定tkprof是否將同樣文本內(nèi)容的sql聚合處理,比如,你執(zhí)行了十次select * from a,如果你指定這個參數(shù)為no(默認情況),那么產(chǎn)生的輸出文件會有十個這樣語句的執(zhí)行信息,如果你指定的是yes,那么tkprof會把這十次的執(zhí)行信息匯總顯示。這個參數(shù)怎么指定就看你的需要了,個人覺得還是很有用的一個參數(shù)。
  • sort參數(shù),這個參數(shù)是經(jīng)常使用到的一個參數(shù),它用來指定tkprof輸出文件里sql語句按照什么排序,默認是按照執(zhí)行的先后順序排序的,我們可以指定它按照其他方式排序,比如磁盤讀取數(shù),CPU時間等。這個參數(shù)最經(jīng)常用的方式是:sort=prsela,exeela,fchela,其實這三個值加起來就是響應(yīng)時間,即按照響應(yīng)時間排序。這里別產(chǎn)生誤解,tkprof會根據(jù)prsela,exeela,fchela三個值的和進行排序,而不是像SQL語句似的一個個的排序。
  • print參數(shù),它經(jīng)常搭配sort參數(shù)一起使用,用來指定tkprof輸出sql語句的數(shù)量。這兩個參數(shù)搭配使用起來就比較妙,比如你想知道一個跟蹤文件里響應(yīng)時間排前十的SQL,那么你就可以sort=prsela,exeela,fchela print=10來搭配使用。
  • explain參數(shù),這個參數(shù)的含義是為每一個SQL提供一個執(zhí)行計劃。使用的方法是explain=用戶名/密碼,其實原理很簡單,就是通過你指定的用戶名,密碼登陸數(shù)據(jù)庫,然后為每一個sql執(zhí)行以下explain plan for sql,輸出到plan_table里,最后添加到輸出文件里。注意,由于explain plan for 命令要求執(zhí)行操作的用戶要對sql語句里包含的對象都有執(zhí)行權(quán)限,如果包含視圖,也要對視圖基于的基礎(chǔ)表有執(zhí)行權(quán)限,否則產(chǎn)生不了執(zhí)行計劃。注意增加了這個參數(shù)后,執(zhí)行tkprof會比較慢。
  • wait參數(shù),指定輸出文件中包含不包含等待事件,默認是包含的。一般都取默認值。
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI