PL/SQL Profiler 和SQL Developer 報表

chncaesar發表於2013-08-30
執行PLSQL資料庫需要:
 1. 以SYS使用者執行$ORACLE_HOME/rdbms/admin/profload.sql, 建立dbms_profiler包
2. 當前schema(以scott為例)執行$ORACLE_HOME/rdbms/admin/proftab.sql建立profiler需要的表和sequence. 注意:這些都是普通的表。一般鼓勵每個schema建立自己的profiler表,以免混淆。
3. grant execute on dbms_profiler to scott.

使用SQL profiler例子:
begin
       dbms_profiler.start_profiler ('Performance');     
       pls; --procedure to be profiled.
       dbms_profiler.stop_profiler ();
end;

建立sql developer報表找出耗時最長的十行程式碼:
1. 執行SQL Developer, View --&gt Reports --&gt User Defined Reports --&gt New Reports 
2. 填入報表名,在Query裡貼入:
select * from (
select to_char(run.run_date, 'yyyy/mm/dd hh24:mi:ss') run_date, substr(run_comment, 1,20) run_comment, unit.unit_name object_name, 
dat.line#,substr(src.text, 1, 30) source_code, dat.total_occur, to_char(dat.total_time/1000000000, '9990.999') total_time, to_char(dat.min_time/1000000000, '9990.999') min_time, to_char(dat.max_time/1000000000, '9990.999') max_time
from plsql_profiler_runs run, plsql_profiler_units unit, plsql_profiler_data dat, all_source src
where
dat.line#=src.line and
unit.unit_name=src.name and
unit.unit_owner=src.owner and
run_comment =:run_comment and 
run.runid=unit.runid
and unit.runid=dat.runid 
and unit.unit_number=dat.unit_number
and unit.unit_name<>''
order by dat.total_time desc) 
where rownum <= 10;
3. 點選確定後儲存報表。每次執行報表時,需要填入Comment作為繫結變數傳入。注意大小寫。每次執行plsql profiler,用不同comment以示區別。

在$ORACLE_HOME/rdbms/admin下
profdemo.sql
profsum.sql
profrep.sql
作為參考。可以建立自己的報表。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/638844/viewspace-769683/,如需轉載,請註明出處,否則將追究法律責任。

相關文章