優化儲存過程的2種方法(DBMS_PROFILER和10046事件)
優化儲存過程的2種方法(DBMS_PROFILER和10046事件)
第一種方法:DBMS_PROFILER
11.2.0.3 rac on redhat
1、sys install the DBMS_PROFILER package
sys@RACDOU> @?/rdbms/admin/profload.sql
....
SYS.DBMS_PROFILER successfully loaded.
2、test doudou
doudou@RACDOU> @?/rdbms/admin/proftab.sql
....
3、doudou create test table
doudou@RACDOU> create table t1 (col1 varchar2(30), col2 varchar2(30));
Table created.
4、create test different procedures
create or replace procedure literals
is
vNumber number;
begin
for i in 1..100000 loop
vNumber := dbms_random.random;
execute immediate
'insert into t1 values ('||vNumber||','||vNumber||')';
end loop;
end;
/
create or replace procedure binds
is
vNumber number;
begin
for i in 1..100000 loop
vNumber := dbms_random.random;
insert into t1 values (vNumber,vNumber);
end loop;
end;
/
5、dbms_profiler information collection
execute dbms_profiler.stop_profiler;
exec literals;
execute dbms_profiler.stop_profiler;
execute dbms_profiler.stop_profiler;
exec binds;
execute dbms_profiler.stop_profiler;
6、summary of all dbms_profiler and query runid
set lines 10000
column run_owner format a30
column run_comment format a10
select runid,
run_owner,
run_date,
run_total_time/1000000000 run_total_time,
run_comment
from plsql_profiler_runs;
7、 details of dbms_profiler results
column text format a55
column total_time format 99.9
column min_time format 99.9
column max_time format 99.9
select s.text ,
p.total_occur ,
p.total_time/1000000000 total_time,
p.min_time/1000000000 min_time,
p.max_time/1000000000 max_time
from plsql_profiler_data p, user_source s, plsql_profiler_runs r
where p.line# = s.line
and p.runid = r.runid
and r.run_comment = 'literals'
and s.name ='LITERALS';
select s.text ,
p.total_occur ,
p.total_time/1000000000 total_time,
p.min_time/1000000000 min_time,
p.max_time/1000000000 max_time
from plsql_profiler_data p, user_source s, plsql_profiler_runs r
where p.line# = s.line
and p.runid = r.runid
and r.run_comment = 'binds'
and s.name ='BINDS';
Transshipment:
http://oracleflash.com/44/Write-fast-and-efficient-PLSQL---DBMS_PROFILER.html
TEXT TOTAL_OCCUR TOTAL_TIME MIN_TIME MAX_TIME
------------------------------------------------------- ----------- ---------- -------- --------
procedure literals 1 .0 .0 .0
procedure literals 2 .0 .0 .0
procedure literals 3 .0 .0 .0
procedure literals 0 .0 .0 .0
for i in 1..100000 loop 100001 .4 .0 .0
vNumber := dbms_random.random; 100000 1.1 .0 .0
execute immediate 100000 67.0 .0 .1
end; 1 .0 .0 .0
procedure literals 2 .0 .0 .0
procedure literals 2 .0 .0 .0
TEXT TOTAL_OCCUR TOTAL_TIME MIN_TIME MAX_TIME
------------------------------------------------------- ----------- ---------- -------- --------
procedure binds 1 .0 .0 .0
procedure binds 2 .0 .0 .0
procedure binds 3 .0 .0 .0
procedure binds 0 .0 .0 .0
for i in 1..100000 loop 100001 .4 .0 .0
vNumber := dbms_random.random; 100000 1.0 .0 .0
insert into t1 values (vNumber,vNumber); 100000 7.3 .0 .0
end; 1 .0 .0 .0
procedure binds 2 .0 .0 .0
procedure binds 2 .0 .0 .0
第二種方法:10046事件
開啟10046跟蹤
alter session set events '10046 trace name context forever,level 12 ';
執行儲存過程
關閉10046跟蹤
alter session set events '10046 trace name context off';
tkprof doudou_ora_31349.trc /home/oracle/proc_10046.txt sys=no sort=prsela,exeela,fchela
分析proc_10046.txt檔案,從上向下根據相應時間,進行逐一分析
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26442936/viewspace-772425/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用dbms_profiler調優儲存過程儲存過程
- 兩種SQL分頁方法儲存過程和遊標儲存過程SQL儲存過程
- mysql 儲存過程和事件排程MySql儲存過程事件
- 使用dbms_profiler測試儲存過程效能儲存過程
- 編寫和優化SQL Server的儲存過程優化SQLServer儲存過程
- DBMS_PROFILER 檢視儲存過程執行時間儲存過程
- 儲存過程編寫經驗和優化措施儲存過程優化
- 儲存過程優化(DBMS_HPROF)儲存過程優化
- Oracle儲存過程優化小實踐Oracle儲存過程優化
- 在儲存過程中建立表的兩種方法儲存過程
- Oracle優化案例-儲存過程的優化思路(二十三)Oracle優化儲存過程
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- MySQL優化---儲存過程和儲存函式-1-轉自部落格園MySql優化儲存過程儲存函式
- pl/sql儲存過程優化一例SQL儲存過程優化
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- SQL儲存過程事務和優化方法(包括查詢方式語句結合)SQL儲存過程優化
- vb呼叫儲存過程的方法儲存過程
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- DB2儲存過程DB2儲存過程
- [DB2]儲存過程經常使用方法DB2儲存過程
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- php呼叫mysql儲存過程和函式的方法(轉)PHPMySql儲存過程函式
- 基礎——使用檢視和儲存過程的優缺點儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- MySQL儲存過程的建立和使用MySql儲存過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- 學習DBMS_PROFILER包診斷儲存過程及函式的情能及引申思考儲存過程函式
- db2刪除已經儲存的表儲存過程DB2儲存過程
- 儲存過程儲存過程
- 自動生成對錶進行插入和更新的儲存過程的儲存過程 (轉)儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- 優化方案:ETL的過程原理和資料倉儲建設(R2)優化
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- oracle 儲存過程重新編譯方法Oracle儲存過程編譯
- oracle的儲存過程Oracle儲存過程
- 修改的儲存過程儲存過程
- mysql的儲存過程MySql儲存過程