tkprof 命令行工具用法

做用:格式化跟蹤文件,例如格式化sql trace,10046產生的輸出文件。sql

(1) . TKPROF的參數:
不輸入任何參數,直接輸入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

(2). 幾個重要參數的用法講解
數據庫

  • sys參數,若是不指定默認值爲yes.這個參數的含義是,輸出文件中是否包含以SYS用戶運行的sql語句。這個參數仍是蠻有用的,咱們執行sql語句的時候,後臺常常會執行不少遞歸的語句,好比你輸入了SELECT * FROM TEST;若是這個語句是硬解析的話,那麼會產生不少遞歸的SQL,遞歸的去查詢表的統計信息,列的統計信息,索引的統計信息等,固然遞歸的不止是這些。這些遞歸的sql都是以SYS用戶運行的,若是你不但願看到這些遞歸SQL,那麼就加上這個參數sys=no.
  • record參數,它指定的是一個路徑下的文件,這個文件用來生成在跟蹤文件中找到的全部的非遞歸SQL。好比你在SQLPLUS裏執行了三條語句,select * from a;select * from b;select * from c;,那麼若是你指定了這個參數如:record=c:\test.log,那麼你用tkprof格式化跟蹤文件後,這個test.log裏就會記錄這三個SQL。這個特性在有些時候仍是滿有用的,由於跟蹤文件每每都會比較大,找起來會比較費勁,咱們能夠經過指定這個參數先大致瞭解下,跟蹤文件裏都有哪些非遞歸SQL。並且這個功能還有助於咱們重演SQL語句(綁定變量的不能夠)。
  • aggregate參數,它指定tkprof是否將一樣文本內容的sql聚合處理,好比,你執行了十次select * from a,若是你指定這個參數爲no(默認狀況),那麼產生的輸出文件會有十個這樣語句的執行信息,若是你指定的是yes,那麼tkprof會把這十次的執行信息彙總顯示。這個參數怎麼指定就看你的須要了,我的以爲仍是滿有用的一個參數。
  • sort參數,這個參數是常常使用到的一個參數,它用來指定tkprof輸出文件裏sql語句按照什麼排序,默認是按照執行的前後順序排序的,咱們能夠指定它按照其餘方式排序,好比磁盤讀取數,CPU時間等。這個參數最常常用的方式是:sort=prsela,exeela,fchela,其實這三個值加起來就是響應時間,即按照響應時間排序。這裏別產生誤解,tkprof會根據prsela,exeela,fchela三個值的和進行排序,而不是像SQL語句似的一個個的排序。
  • print參數,它常常搭配sort參數一塊兒使用,用來指定tkprof輸出sql語句的數量。這兩個參數搭配使用起來就比較妙,好比你想知道一個跟蹤文件裏響應時間排前十的SQL,那麼你就能夠sort=prsela,exeela,fchela print=10來搭配使用。
  • explain參數,這個參數的含義是爲每個SQL提供一個執行計劃。使用的方法是explain=用戶名/密碼,其實原理很簡單,就是經過你指定的用戶名,密碼登錄數據庫,而後爲每個sql執行如下explain plan for sql,輸出到plan_table裏,最後添加到輸出文件裏。注意,因爲explain plan for 命令要求執行操做的用戶要對sql語句裏包含的對象都有執行權限,若是包含視圖,也要對視圖基於的基礎表有執行權限,不然產生不了執行計劃。注意增長了這個參數後,執行tkprof會比較慢。
  • wait參數,指定輸出文件中包含不包含等待事件,默認是包含的。通常都取默認值。
相關文章
相關標籤/搜索