Oracle PL/SQL Profiler應用指南 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- Oracle PL/SQL Profiler應用指南 (http://www.webasp.net/article/22/21194.htm) |
| -- 作者:未知 -- 發佈日期: 2005-04-29 |
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 |
| webasp.net |