一.
tkprof命令語法:
tkprof filename1, filename2 [ sort = [ opion][,option] ]
[ print = integer ]
[ aggregate = [ yes | no ] ]
[ insert = filename3 ]
[ sys = [ yes | no ] ]
[ [ table = schema.table ] | [ explain = user/password ] ]
[ record = filename ]
filename1
指定的輸入檔案,可以是多個檔案聯起來。
filename2
格式化輸出檔案。
sort
在輸出到輸出檔案前,先程序排序。如果省去,則按照實際使用的順序輸出到檔案中。排序選項有以下多種:
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
只列出輸出檔案的第乙個
integer
的sql
語句。預設為所有的
sql語句。
aggregate
如果= no
,則不對多個相同的
sql進行彙總。
insert
sql
語句的一種,用於將跟蹤檔案的統計資訊儲存到資料庫中。在
tkprof
建立指令碼後,在將結果輸入到資料庫中。
sys
禁止或啟用
將sys
使用者所發布的
sql語句列表到輸出檔案中。
table
在輸出到輸出檔案前,用於存放臨時表的使用者名稱和表名。
explain
對每條sql
語句確定其執行規劃。並將執行規劃寫到輸出檔案中。
其中比較有用的乙個排序選項是
fchela
,即按照
elapsed time fetching
來對分析的結果排序(記住要設定初始化引數
timed_statistics=true
),生成的檔案將把最消耗時間的
sql放在最前面顯示。另外乙個有用的引數就是
sys,這個引數設定為
no可以阻止所有以
sys使用者執行的
sql被顯示出來,這樣可以減少分析出來的檔案的複雜度,便於檢視
二. 對tkprof命令輸出的解釋:
首先解釋輸出檔案中列的含義:
call
:每次sql
語句的處理都分成三個部分
parse
:這步將
sql語句轉換成執行計畫,包括檢查是否有正確的授權和所需要用到的表、列以及其他引用到的物件是否存在。
execute
:這步是真正的由
oracle
來執行語句。對於
insert
、update
、delete
操作,這步會修改資料,對於
select
操作,這步就只是確定選擇的記錄。
fetch
:返回查詢語句中所獲得的記錄,這步只有
select
語句會被執行。
count:
這個語句被
parse
、execute
、fetch
的次數。
cpu:這個語句對於所有的
parse
、execute
、fetch
所消耗的
cpu的時間,
以秒為單位。
elapsed
:這個語句所有消耗在
parse
、execute
、fetch
的總的時間。
disk
:從磁碟上的資料檔案中物理讀取的塊的數量。一般來說更想知道的是正在從快取中讀取的資料而不是從磁碟上讀取的資料。
query
:在一致性讀模式下,所有
parse
、execute
、fetch
所獲得的
buffer
的數量。一致性模式的
buffer
是用於給乙個長時間執行的事務提供乙個一致性讀的快照,快取實際上在頭部儲存了狀態。
current:在
current
模式下所獲得的
buffer
的數量。一般在
current
模式下執行
insert
、update
、delete
操作都會獲取
buffer
。在current
模式下如果在快取記憶體區發現有新的快取足夠給當前的事務使用,則這些
buffer
都會被讀入了快取區中。
rows:
所有sql
語句返回的記錄數目,但是不包括子查詢中返回的記錄數目。對於
select
語句,返回記錄是在
fetch
這步,對於
insert
、update
、delete
操作,返回記錄則是在
execute
這步。
/trace/orcl_ora_7240.trc d:/orcl_ora_7240.txt
aggregate=yes sys=no waits=yes sor
t=fchela
$tkprof orcl_ora_14483.trc allan.txt explain=system/manager aggregate=yes sys=no waits=yes sort=fchela
10046事件與tkprof命令
0 conn as sysdba 1 啟用10046 alter session set events 10046 trace name context forever,level 12 oradebug event 10046 trace name context forever,level 12...
tkprof引數詳解
tkprof引數詳解 table schema.table 指定tkprof處理sql trace檔案時臨時表的模式名和表名 insert scriptfile 建立乙個檔名為scriptfile的檔案,包含了tkprof存放的輸出sql語句 sys yes no 確定系統是否列出由sys使用者產生...
sql跟蹤及tkprof使用
在oracle資料庫中,awr是關於資料庫系統總體的負載情況和運 況的報告。而當系統負載都顯示正常,而client執行某些動作響應非常慢,或者某些終端連線的會話執行緩慢或異常時,就須要用到會話級別的跟蹤了。session級別跟蹤的方法有很多。比方當前會話的跟蹤,能夠執行命令 alter sessio...