Oracle跟蹤文件分析工具TKPROF使用簡介
Tkprof是一個用于分析Oracle跟蹤文件并且產生一個更加清晰合理的輸出結果的可執行工具。本文從以下幾個方面來介紹Tkprof的使用。
1.設置參數文件
設置三個參數timed_staticstices ,user_dump_dest, max_dump_file_size.
timed_staticstices 用于啟動或禁止對定時統計信息(如CUP時間、占用時間),以及動態性能表中多種統計信息的收集功能。
- alter session set timed_statistics true;
- alter system set timed_statistics false;
MAX_DUMP_FILE_SIZE 當實例層啟用SQL TRACE的時候,在每次請求服務器的時候,都將在跟蹤文件中產生一個文本行,這些文件的***尺寸受限于初始化參數的設置。默認為500(blocks)。若里面的數據被截斷則增大SIZE。若為UNLIMITED則意味著沒有上限。
USER_DUMP_DEST 設置跟蹤文件的存儲位置。默認為admin/用戶/udump;
- alter system set user_dump_dest=newdir
2.啟動SQL TRACE實用工具
對會話啟動SQL TRACE:
- alter session set sql_trace=true;
- alter session set sql_trace=false;
ALTER SESSION SET EVENTS:
- alter session set events '10046 trace name context forever,level<n>';
- alter session set events '10046 trace name context off';
- alter system set events '10046 trace name context forever,level 1'
- alter system set events '10046 trace name context off'
說明:
n=1---------激活標準SQL_TRACE工具,這與設置SQL_TRACE=TRUE 沒有任何不同;
n=4---------激活標準SQL_TRACE,且可以撲獲跟蹤文件中的綁定變量;
n=8---------激活標準SQL_TRACE,且可在查詢級上撲獲跟蹤文件中的等待事件;
n=12--------激活標準SQL_TRACE,并包括撲獲綁定變量與等待事件。
對用戶實例啟動SQL TRACE:
- alter system set sql_trace=true;
- alter system set sql_trace=false;
3.使用tkprof格式化trace文件
代碼如下:
- tablefontschema.tablename Use 'schema.tablename' with 'explain=' option. //用于指定在將執行規劃寫進輸出文件之前,TKPROF用于臨時存放執行規劃所用表的架構和名稱。
- explain=user/password Connect to ORACLE and issue EXPLAIN PLAN.
- print=integer List only the first 'integer' SQL statements. //只列出輸出文件中的***個INTEGER的SQL語句,若忽略,則TKPROF將列出所有跟蹤的SQL語句。
- aggregate=yes|no //若用戶指定AGGREGATE=NO,TKPROF將不會對相同SQL文本的多個用戶進行匯總。
- insert=filename List SQL statements and data inside INSERT statements. //SQL腳本的一種,用于將跟蹤文件的動機信息存儲到數據庫中。
- sys=no TKPROF does not list SQL statements run as user SYS. //于啟動或禁止將用戶SYS所發布的SQL語句列表到輸出文件之中,也包括遞歸SQL(為執行用戶的SQL語句,ORACLE還必須執行一些附加語句)語句在內。默認為YES。
- record=filename Record non-recursive statements found in the trace file. //對于跟蹤文件中的所用非遞歸SQL語句,TKPROF 將以指定的名稱來創建某個SQL腳本。用于對跟蹤文件中的用戶時間進行重放。
- 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: //在將被跟蹤的SQL語句列表輸出到跟蹤文件之前,先將其按照指定排序選項的降序關系對其進行排序;若指定了多種排序選項,那么根據排序選項所指定值的和的降序關系對其進行排序;若忽略此參數,那么TKPROF將按照使用次序把語句列表到輸出文件中。
- prscnt number of times parse was called //語句解析的數目。
- prscpu cpu time parsing //語句解析所占用的CPU時間。
- prsela elapsed time parsing //語句解析所占用的時間(總是大于或等于CPU時間)。
- prsdsk number of disk reads during parse// 語句解析期間,從磁盤進行物理讀取的數目。
- prsqry number of buffers for consistent read during parse// 語句解析期間,一致模式塊讀取(CONSISTENT MODE BLOCK READ)的數目。
- prscu number of buffers for current read during parse //語句解析期間,當前模式讀取(CURRENT MODE BLOCK READ)的數目。
- prsmis number of misses in library cache during parse// 語句解析期間,庫緩存失敗的數目。
- execnt number of execute was called //語句執行的數目。
- execpu cpu time spent executing //語句執行所占用的CPU時間。
- exeela elapsed time executing //語句執行所占用的時間(總是大于或等于CPU時間)。
- exedsk number of disk reads during execute //語句執行期間,從磁盤進行物理讀取的數目。
- exeqry number of buffers for consistent read during execute //語句執行期間,一致模式塊讀取(CONSISTENT MODE BLOCK READ)的數目。
- execu number of buffers for current read during execute //語句執行期間,當前模式讀取(CURRENT MODE BLOCK READ)的數目。
- 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 //取數據所占用的CPU時間。
- fchela elapsed time fetching //取數據所占用的時間(總是大于或等于CPU時間)。
- fchdsk number of disk reads during fetch //取數據期間,從磁盤進行物理讀取的數目。
- fchqry number of buffers for consistent read during fetch //取數據期間,一致模式塊讀取(CONSISTENT MODE BLOCK READ)的數目。
- fchcu number of buffers for current read during fetch //取數據期間,當前模式讀取(CURRENT MODE BLOCK READ)的數目。
- fchrow number of rows fetched //所獲取的行數。
- userid userid of user that parsed the cursor。
關于Oracle跟蹤文件分析工具TKPROF的使用就介紹到這里,謝謝大家!
【編輯推薦】



















