利用dbms_profile定位儲存過程或者package裡低效率語句
http://blog.chinaunix.net/uid-74941-id-85352.html
1.檢查是否安裝了dbms_profiler包
如果沒有安裝的話,執行下面的語句安裝,
@?/rdbms/admin/profload.sql
2.把dbms_profiler的執行許可權賦於測試使用者scott
grant execute on dbms_profiler to scott;
3.使用測試使用者scott登入,執行proftab.sql(建立跟蹤相關係統表)
@?/rdbms/admin/proftab.sql
4.建立一個測試的過程,
DMMS_PROFILER的用發:
(1).DBMS_PROFILER.start_profiler啟動監控
(2).執行所需要分析的儲存過程,可以是多個
(3).DBMS_PROFILER.stop_profiler結束監控
--建立測試儲存過程
create or replace procedure sp_profiler_test1
as
begin
for x in 1..10000
loop
insert into t_t1 values(x);
end loop;
commit;
end sp_profiler_test1;
/
--執行DMMS_PROFILER
set serverout on;
DECLARE
v_run_number integer;
BEGIN
--啟動profiler
sys.DBMS_PROFILER.start_profiler(run_number => v_run_number);
--顯示當前跟蹤的執行序號(後面查詢要用)
DBMS_OUTPUT.put_line('run_number:' || v_run_number);
--執行要跟蹤的PLSQL
sp_profiler_test1; --前一步建立的測試樣例儲存過程
--停止profiler
sys.DBMS_PROFILER.stop_profiler;
END;
/
5.檢視結果
--使用測試使用者進行查詢
select d.line#, --原始碼行號
s.text, --原始碼
round(d.total_time/1000000000000,5) total_time , --總執行時間(單位秒)
d.total_occur, --總共執行次數
round(d.min_time/1000000000000,5) min_time, --單次最小執行時間
round(d.max_time/1000000000000,5) max_time --單次最大執行時間
from plsql_profiler_data d, sys.all_source s, plsql_profiler_units u
where d.runid = 2 --執行號
and u.unit_name = 'SP_PROFILER_TEST1' --單元名,即被測試的儲存過程名
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#;
1秒=1000毫秒bai(ms)
1秒=1,000,000 微秒(μdus)
1秒=1,000,000,000 納秒(ns)
1秒 =1,000,000,000,000 皮秒(ps) (單位10000億分之一秒)
1秒=1,000,000,000,000,000飛秒(fs)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2701923/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL儲存過程語句及呼叫MySql儲存過程
- EF中使用SQL語句或儲存過程SQL儲存過程
- PostgreSQL獲取建表語句儲存過程SQL儲存過程
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- 金倉資料庫KingbaseES儲存過程 RETURN語句資料庫儲存過程
- Mysql儲存過程 變數,條件,迴圈語句用法MySql儲存過程變數
- 達夢儲存過程效能問題定位儲存過程
- 儲存過程不好在哪裡?儲存過程
- 深入解讀MySQL InnoDB儲存引擎Update語句執行過程MySql儲存引擎
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- SQLSERVER儲存過程SQLServer儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- Oracle儲存過程Oracle儲存過程
- MySQL儲存過程裡動態SQL的使用UXMySql儲存過程UX
- JdbcTemplate調儲存過程JDBC儲存過程
- 造數儲存過程儲存過程
- 儲存過程——遊標儲存過程
- 儲存過程 傳 datatable儲存過程
- JAVA儲存過程(轉)Java儲存過程
- MySQL之儲存過程MySql儲存過程
- oracle的儲存過程Oracle儲存過程
- MySQL---------儲存過程MySql儲存過程
- linux呼叫儲存過程Linux儲存過程
- Winform呼叫儲存過程ORM儲存過程
- mysql儲存過程整理MySql儲存過程
- Oracle儲存過程-1Oracle儲存過程
- 如何匯出儲存過程、函式、包和觸發器的定義語句?如何匯出表和索引的建立語句?儲存過程函式觸發器索引
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- mongo 儲存過程詳解Go儲存過程
- Sqlserver中的儲存過程SQLServer儲存過程
- SQL 分頁儲存過程SQL儲存過程
- 原創:oracle 儲存過程Oracle儲存過程