PLSQL_性能优化效能跟踪工具DBMS_PROFILER分析(案例)

简介: 2014-06-01 Created By BaoXinjian 一、摘要 Oracle PLSQL性能诊断是经常会遇到问题,所以Oracle提供了比较多的程式诊断工具,其中包括了dbms_profiler包 DBMS_PROFILER中会用到一些基本构建如下 在调用程式前DBMS_PROFILER.

2014-06-01 Created By BaoXinjian

一、摘要


Oracle PLSQL性能诊断是经常会遇到问题,所以Oracle提供了比较多的程式诊断工具,其中包括了dbms_profiler包

DBMS_PROFILER中会用到一些基本构建如下

  • 在调用程式前DBMS_PROFILER.START_PROFILER,启动对该程式监控
  • 在调用程式后DBMS_PROFILER.STOP_PROFILER,结束对程式监控
  • 在监控过程中,系统会将资料存放至三个表中PLSQL_PROFILER_RUNS -> UNITS -> DATA
  • 通过profiler.sql工具产生HTML形式的性能报表

个人感觉,如果本人自己测试程式性能的话,只需查看监控数据在PLSQL_PROFILER_RUNS / UNITS/ DATA即可

但是如果遇到客户对程式性能有怀疑时,需要通过profiler.sql产生HTML性能报表就非常重要了,总不能让客户查看SQL,而Oracle自带的标准HTML汇总报表旧非常有说服力了

 

二、案例


需求:客户要求诊断一个客制化的package的性能,使用dbms_profiler跟踪,发现问题所在并进行调优

1. 建立测试脚本,测试dbms_profiler

2. 查询SQL Performance的三个重要表PLSQL_PROFILER_RUNS->UNITS->DATA,通过Run_Id

3. 查询SQL Performance通过profiler.sql导出html格式的性能报表,调用时输入唯一参数Run_Id

 

三、案例实现


Step1. 建立测试脚本,测试dbms_profiler

 1     DECLARE
 2 
 3         x_to_currecny GL_DAILY_RATES.TO_CURRENCY%TYPE;
 4 
 5         x_from_currency GL_DAILY_RATES.FROM_CURRENCY%TYPE;
 6 
 7         x_conversion_date GL_DAILY_RATES.CONVERSION_DATE%TYPE;
 8 
 9         x_rate NUMBER;
10 
11     BEGIN
12 
13         DBMS_PROFILER.START_PROFILER('BXJ_PLSQL_DBMS_PROFILER');
14 
15         SELECT to_currency, from_currency, conversion_date
16 
17            INTO x_to_currecny, x_from_currency, x_conversion_date
18 
19          FROM gl_daily_rates
20 
21        WHERE ROWNUM <= 1;
22 
23         x_rate := bxj_get_rate.get_rate_1(x_to_currecny,
24 
25         x_from_currency,
26 
27         x_conversion_date);
28 
29         DBMS_OUTPUT.PUT_LINE('x_rate=' || x_rate);
30 
31         DBMS_PROFILER.STOP_PROFILER;
32 
33     END;

 

Step2.1 查询SQL Performance的三个重要表PLSQL_PROFILER_RUNS->UNITS->DATA

 1     select * from PLSQL_PROFILER_RUNS
 2 
 3         where run_comment= 'BXJ_PLSQL_DBMS_PROFILER'
 4 
 5  
 6 
 7     select * from PLSQL_PROFILER_UNITS
 8 
 9         where runid = 15
10 
11  
12 
13     select * from PLSQL_PROFILER_DATA
14 
15         where runid = 15
16 
17         order by line#

 

Step2.2. 具体SQL

 1     SELECT d.line#, s.text,d.total_time, d.total_occur, d.min_time,d.max_time
 2 
 3      FROM plsql_profiler_data d, sys.all_source s, plsql_profiler_units u
 4 
 5     WHERE d.runid = 15
 6 
 7         AND u.unit_name = 'BXJ_GET_RATE'
 8 
 9         AND u.runid = d.runid
10 
11         AND d.unit_number = u.unit_number
12 
13         AND d.total_occur <> 0
14 
15         AND s.TYPE(+) = u.unit_type
16 
17         AND s.owner(+) = u.unit_owner
18 
19         AND s.name(+) = u.unit_name
20 
21         AND d.line# = NVL (s.line, d.line#)
22 
23     ORDER BY u.unit_number, d.line#;

    

 

Step3. 查询SQL Performance通过profiler.sql导出html格式的性能报表

    (1).本地调用Profiler.SQL

              

    (2).产生profiler file

       

    (3).查看HTML报表

        

 

Thanks and Regards

注:Profiler.sql下载路径: Matelink - Script to produce HTML report with top consumers out of PL/SQL Profiler DBMS_PROFILER data (Doc ID 243755.1)

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
3月前
|
开发者 iOS开发
如何使用 Instruments 工具来分析应用的性能?
如何使用 Instruments 工具来分析应用的性能?
36 2
|
3月前
|
SQL 关系型数据库 MySQL
你竟然还不知道SQL性能分析?(你想象不到的详细)
你竟然还不知道SQL性能分析?(你想象不到的详细)
|
SQL JSON 算法
庖丁解牛-图解查询分析和调优利器Optimizer Trace
查询分析和调优背景在数据库的使用过程,我们经常会碰到SQL突然变慢,是由于下面导致的问题:选择错误的索引选择错误的连接顺序范围查询使用了不同的快速优化策略子查询选择的执行方式变化半连接选择的策略方式变化如何使用分析工具OPTIMIZER TRACE来理解优化过程和原理来深度分析和调优慢SQL就成为高级DBA的利器。我们先来了解下查询优化整体的过程:该过程主要考虑的因素是访问方式、连接顺序和方法已经
874 1
庖丁解牛-图解查询分析和调优利器Optimizer Trace
|
SQL 监控 API
TSQL:让监控分析更简单更高效
阿里时序时空数据库TSDB最新推出TSQL,支持标准SQL的语法和函数。用户使用熟悉的SQL,不仅仅查询更简单易用,用户还可以利用SQL强大的功能,实现更加复杂的计算分析。
4377 0
|
SQL 存储 数据库
Expert 诊断优化系列------------------语句调优三板斧
前面三篇通过CPU、内存、磁盘三巨头,讲述了如何透过现在看本质,怎样定位服务器三巨头反映出的问题。为了方便阅读给出链接: SQL SERVER全面优化-------Expert for SQL Server 诊断系列     通过三篇文章的基本介绍,可以看出系统的语句如果不优化,可能会导致三巨头都出现异常的表现。
1198 0
|
SQL 数据库 索引
SQL调优日记--并行等待的原理和问题排查
原文:SQL调优日记--并行等待的原理和问题排查 概述   今天处理项目,客户反应数据库在某个时间段,反应特别慢。需要我们提供一些优化建议。   现象      由于是特定的时间段慢,排查起来就比较方便。
1059 0