使用SQL TRACE 實用工具和TKPROF

2021-04-01 09:46:11 字數 4731 閱讀 5694

使用sql trace 實用工具和tkprof

set timing on

設定sql查詢時間

一、設定init.ora 中的timed_statistices、max_dup_file_size、user_dump_dest

show parameter timed_statistics;

timed_statistics      用於啟動或禁止對定時統計資訊(如cup時間、占用時間),以及動態效能表中多種統計資訊的收集功能。

alter session set timed_statistics true;

alter system set timed_statistics false;

max_dup_file_size     當例項層啟用sql trace的時候,在每次請求伺服器的時候,都將在跟蹤檔案中產生乙個文字行,這些檔案

的最大尺寸受限於初始化引數的設定。預設為500。若裡面的資料被截斷則增大size。若為unlimited則意味

著沒有上限。

user_dump_dest        設定跟蹤檔案的儲存位置。預設為admin/使用者/udump;alter system set user_dump_dest=newdir

background_dump_dest 在多執行緒伺服器(mts)連線時採用。

二、啟動sql trace實用工具

對會話啟動sql trace

alter session set sql_trace=true;

alter session set sql_trace=false;

sys.dbms_system.set_sql_trace_in_session=( sid , serial# , true );

alter session set events

alter session set events '10046 trace name context forever,level';

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;

在web應用程式中用該使用者的觸發器

create or replace trigger logon_trigger

alter logon on database

begin

if(user='tkyte')then

excute immediate

'alter session set envets"10046 trace name context foreber,level4"');

end if;

end;   

create or replace trigger trace_logon

after logon on database

begin

if ( user = 'scott' ) then

execute immediate

'alter session set sql_trace=true';

end if;

end;

/三、利用tkprof格式化跟蹤檔案

tkprof

對跟蹤檔案中的***mit、rollback,tkprof不能產生報告

tkprof filename1 filename2 sort=(prsdsk,exedsk,fchdsk) print=10 explanin=scott/tiger table=scott.temp_plan_table_a

insert=storea.sql sys=no

filename1 tkprof的輸入檔案,它是sql跟蹤工具產生的跟蹤檔案,包含有關的統計資訊。

filename2 輸出tkprof輸出的格式化檔名。

sort 在將被跟蹤的sql語句列表輸出到跟蹤檔案之前,先將其按照指定排序選項的降序關係對其進行排序;若指定了多種排序選項,

那麼根據排序選項所指定值的和的降序關係對其進行排序;若忽略此引數,那麼tkprof將按照使用次序把語句列表到輸出檔案中。

prs**t 語句解析的數目;

prscpu 語句解析所占用的cpu時間;

prsela 語句解析所占用的時間(總是大於或等於cpu時間);

prsdsk 語句解析期間,從磁碟進行物理讀取的數目;

prsqry 語句解析期間,一致模式塊讀取(consistent mode block read)的數目;

prscu  語句解析期間,當前模式讀取(current mode block read)的數目

pr**is 語句解析期間,庫快取失敗的數目;

exe**t 語句執行的數目;

execpu 語句執行所占用的cpu時間;

exeela 語句執行所占用的時間(總是大於或等於cpu時間);

exedsk 語句執行期間,從磁碟進行物理讀取的數目;

exeqry 語句執行期間,一致模式塊讀取(consistent mode block read)的數目;

execu  語句執行期間,當前模式讀取(current mode block read)的數目

exerow 語句執行期間,所處理的語句行數;

exemis 語句執行期間,庫快取失敗的數目;

fch**t 取資料的數目;

fchcpu 取資料所占用的cpu時間;

fchela 取資料所占用的時間(總是大於或等於cpu時間);

fchdsk 取資料期間,從磁碟進行物理讀取的數目;

fchqry 取資料期間,一致模式塊讀取(consistent mode block read)的數目;

fchcu  取資料期間,當前模式讀取(current mode block read)的數目

fchrow 所獲取的行數;     

print 只列出輸出檔案中的第乙個integer的sql語句,若忽略,則tkprof將列出所有跟蹤的sql語句。

aggregate 若使用者指定aggregate=no,tkprof將不會對相同sql文字的多個使用者進行彙總。

insert sql指令碼的一種,用於將跟蹤檔案的動機資訊儲存到資料庫中。

sys   用於啟動或禁止將使用者sys所發布的sql語句列表到輸出檔案之中,也包括遞迴sql(為執行使用者的sql語句,oracle還必須執行

一些附加語句)語句在內。預設為yes。

table 用於指定在將執行規劃寫進輸出檔案之前,tkprof用於臨時存放執行規劃所用表的架構和名稱。

session 對於跟蹤檔案中的個條sql語句,用於確定其相應的執行規劃,並將執行規劃寫進輸出檔案之中。

record 對於跟蹤檔案中的所用非遞迴sql語句,tkprof 將以指定的名稱來建立某個sql指令碼。用於對跟蹤檔案中的使用者時間進行重放。

find "total" resport.txt 用find來抽取所有的total行,以便我能知道應加速進行的查詢。

三、表式統計資訊

parse 將把sql語句轉化為執行規劃,其中包括對安全授權的檢查,以及對存在表、列和其他訪問物件進行檢查。

execute 由oracle進行語句執行。對於insert、update、delete的語句,將對資料進行修改;對於select語句,將對所選行進行確定。

fetch 將檢查出查詢的返回行,只有select語句能夠執行取資料的操作。

count 語句解析、執行或取資料等呼叫的次數;

cpu 某條語句進行解析、執行和取資料等呼叫所占用地時間,單位為秒。若timed_statistics功能處於為啟動,則該值為0;

elapsed 某條語句進行解析、執行和取資料等呼叫所占用地時間,單位為秒。若timed_statistics功能處於為啟動,則該值為0;

disk 對於所有語句解析、執行和取資料等呼叫,從磁碟資料檔案中物理讀取的資料塊數目;

qhery 對於所有語句解析、執行和取資料等呼叫,以一致模式所檢索的緩衝總數目。通常下,查詢通過一致模式進行檢索工作。

current 以當前模式所檢索的緩衝總數目,對insert、uopdate、delete 等語句,查詢通過當前模式進行檢索工作。

rows sql語句所處理行的總數目,它並不包括sql語句的子查詢所處理的行數。

parse-count/execute-count確定記憶體使用情況

cpu/elapsed確定等待時間

fetch-count/fetch-row確定一次性讀取的行數,是否用批量處理(預設使用時為15行)

disk count=query+crrent mode block count 則所有的塊從磁碟讀。應該有些從sga中讀取。

unnest_subquery =true 啟動子查詢去巢狀。

no_unnest 關閉特定子查詢塊

SQLCMD實用工具使用

sql server 2005中的 sqlcmd 工具使用 天新網1 你可以用sqlcmd執行互動式動作,如 c sqlcmd sqlcmd 1 select name from sys.databases 2 go 你也可以試著鍵入如下命令,現實伺服器列表 1 serverlist servers...

linux實用工具

基本實用工具 ls 顯示檔名 list cat 顯示文字檔案內容 rm i 刪除檔案 remove i開啟選項 less more 分屏顯示檔案 hostname 顯示系統名 檔案操作 cp sourcefile destinationfile 複製檔案copy mv oldname newname...

Linux實用工具

特殊字元 轉義字元可以用 括起來,也可以在前面加上 基礎的一些命令 列出檔名 ls 顯示檔案文字內容 cat 刪除檔案 rm 顯示系統名 hostname 複製檔案 cp 更改檔名 mv 列印檔案 lpr 查詢字串 grep 顯示頭,尾檔案 head,tail 按順序顯示檔案內容 sort 刪除檔案...