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