優化儲存過程的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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle優化案例-儲存過程的優化思路(二十三)Oracle優化儲存過程
- MySQL優化---儲存過程和儲存函式-1-轉自部落格園MySql優化儲存過程儲存函式
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- SQL Server儲存過程的優缺點SQLServer儲存過程
- MySQL儲存過程的建立和使用MySql儲存過程
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- 使用JPA和Hibernate呼叫儲存過程的最佳方法 - Vlad Mihalcea儲存過程
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- oracle的儲存過程Oracle儲存過程
- MySQL儲存過程的異常處理方法MySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- SQLSERVER儲存過程SQLServer儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- Oracle儲存過程Oracle儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- Sqlserver中的儲存過程SQLServer儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- SQL SERVER儲存過程AS和GO的含義SQLServer儲存過程Go
- MySQL的物理儲存結構和session過程MySqlSession
- 儲存過程效能低的解決方法之一儲存過程
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- JdbcTemplate調儲存過程JDBC儲存過程
- 造數儲存過程儲存過程
- 儲存過程——遊標儲存過程
- 儲存過程 傳 datatable儲存過程
- JAVA儲存過程(轉)Java儲存過程
- MySQL之儲存過程MySql儲存過程
- MySQL---------儲存過程MySql儲存過程
- linux呼叫儲存過程Linux儲存過程
- Winform呼叫儲存過程ORM儲存過程