Oracle PL/SQL Profiler應用指南
2024-08-29 13:44:13
供稿:網友
Oracle PL/SQL PRofiler應用指南
Profiler是ORACLE PL/SQL 的一個調試優化跟蹤方案的應用
相對sqltrace+tkprof工具調試優化跟蹤方案來說, Profiler有最直觀更方便的優點,因為不需要生成和讀取服務器端的跟蹤文件,它是將跟蹤數據全部存儲的數據庫表里,所以也得到了一些第三方工具的支持,如PL/SQL DEVELOPER 。
注:Profiler生成的跟蹤信息遠遠沒有trace生成的具體,它沒有執行計劃、沒有CPU及IO 信息,它只是生成主要的執行時間信息,所以分析起來比較快,比較直觀,可以讓我們以最快的時間定位要優化的SQL。
下面將介紹ORACLE PL/SQL profiler的具體應用
1、安裝
安裝總共要運行兩個ORALCE自帶的服務腳本
(1)、創建profiler的基礎結構
@$ORACLE_HOME/rdbms/admin/proftab.sql;
proftab.sql會在當前用戶下創建如下表結構及序列:
plsql_profiler_runs - profiler運行信息
plsql_profiler_units - profiler每個單元信息
plsql_profiler_data - profiler每個單元的具體數據
plsql_profiler_runnumber 用來生成profiler唯一運行編號的序列
(2)、創建數據庫服務運行包
@$ORACLE_HOME/rdbms/admin/profload.sql;
profload.sql主要是創建sys.dbms_profiler包
包主要的函數過程有
start_profiler,
stop_profiler,
pause_profiler,
resume_profiler,
flush_data,
internal_version_check,
get_version,
rollup_unit,
rollup_run
主要使用的函數是
start_profiler--啟動 profiler
stop_profiler--停止 profiler
其它為一些輔助函數
2、應用實例
declare
v_run_number integer;
v_temp1 integer;
begin
--1.啟動profiler
sys.dbms_profiler.start_profiler(run_number => v_run_number);
--顯示當前跟蹤的運行序號(后面查詢要用)
dbms_output.put_line('run_number:'v_run_number);
--2.運行要跟蹤的PL/SQL
--select count(*) into v_temp1 from scott.emp t;
--select count(*) into v_temp1 from scott.dept t;
--3.停止profiler
sys.dbms_profiler.stop_profiler;
end;
3、查詢結果
select u.unit_name,--單元名稱
d.line,--代碼行號
d.total_time,--總共運行時間(單位:10000億分之一秒)
d.total_occur,--總共運行次數
d.min_time,--最小運行時間
d.max_time,--最大運行時間
s.text--源代碼
from plsql_profiler_data d, sys.all_source s, plsql_profiler_units u
where d.runid = 33--運行號v_run_number
and u.runid = d.runid
and d.unit_number = u.unit_number
and d.total_occur <> 0
and s.type(+) = u.unit_type
and s.owner(+) = u.unit_owner
and s.name(+) = u.unit_name
and d.line# = nvl(s.line, d.line#)
order by u.unit_number, d.line#
以上介紹的是通過手工方法應用Profiler,使用相對比較煩雜,最后查詢也不直觀,下面將具體介紹在PL/SQL DEVELOPER 應用Profiler
1、 打開test window
方法一、新建一個test window
方法二、選擇要跟蹤運行的過程,快捷菜單test,如下圖所示
在test window中輸入你要執行的PL/SQL腳本
2、打開Profiler,如下圖所示
假如在打開Profiler出現出錯提示則說明你沒有安裝Profiler,具體安裝步驟見上文的安裝過程。
3、F8執行腳本,執行完成后,切換到profiler選項卡,如下圖所示
每列的具體意義如下:
unit --單元名稱
line--代碼行號
total time--總共運行時間(本行代碼的執行時間與最長代碼執行時間的百分比圖)
occurrences--總共運行次數
text--源代碼
Average time—平均運行時間
maximum time--最大運行時間
minimum time--最小運行時間
列表中顯示的源代碼只顯不一行,假如要定位則可以在對應的行中打開右鍵,選擇
[Go to unit line] ,這樣就會直接跳到對應的源代碼位置。
工具欄
1、 顯示配置對話框
2、 刷新
3、 刪除當前運行號的數據
4、Run:顯示當前的系統的所有Profiler列表,缺省為當前的跟蹤
5、Unit:顯示本次跟蹤的單元列表信息(執行時間),缺省為所有單元的執行時間
配置PL/SQL Developer 的Profiler選項,如下圖所示
Available Columns:可用列
Selected Columns:選擇要查看的列
Time units:時間單位(秒、毫秒、微秒)
Show 0 occurrences:是否顯示執行0次的處理語句
Graphical time display:用圖形顯示處理時間的顏色深度百分比
葉正盛
2005-04-17