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

一、摘要

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报表

PLSQL_性能优化效能跟踪工具DBMS_PROFILER分析(案例),布布扣,bubuko.com

时间: 2024-08-07 08:35:58

PLSQL_性能优化效能跟踪工具DBMS_PROFILER分析(案例)的相关文章

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

2014-06-25 BaoXinjian 一.摘要 SQL TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL TRACE是非常常用的方法.一般,一次跟踪可以分为以下几步:1.界定需要跟踪的目标范围,并使用适当的命令启用所需跟踪.2.经过一段时间后,停止跟踪.此时应该产生了一个跟踪结果文件.3.找到跟踪文件,并对其进行格式化,然后阅读或分析. 另文已介绍了其他的跟踪工具DBMS_PROFILER, Form Trace, Re

Oracle性能优化之操作系统工具_超越OCP精通Oracle视频教程培训37

Oracle性能优化之操作系统工具_超越OCP精通Oracle视频教程培训37 课程介绍 风哥Oracle视频教程<<Oracle数据库性能优化培训教程>>的第7/10套:Oracle性能优化之操作系统性能工具.学习Oracle性能优化,1.操作系统性能优化分析及工具说明,操作系统性能工具之top/topas,vmstat,iostat,free/lsps/swapinfo,mpstat/sar,网络分析,基本信息查看,操作系统性能收集与分析之nmon,oswatcher. 视频教

PLSQL_性能优化系列16_Oracle DataScan数据扫描

对数据的读取操作是非常消耗资源的,如何减少对数据的扫描,是提升sql效率的一个重要方面,例如物化视图技术.本篇介绍几种sql写法,分别是CASE expression/DML with returning clause /multitable insert.[@[email protected]] 一. 用CASE EXPRESSION将多句查询组合在一起SELECT COUNT (*)FROM employeesWHERE salary < 2000;SELECT COUNT (*)FROM

Android开发学习之路--性能优化之常用工具

??android性能优化相关的开发工具有很多很多种,这里对如下六个工具做个简单的使用介绍,主要有Android开发者选项,分析具体耗时的Trace view,布局复杂度工具Hierarchy View,应用启动时间,Memory.CPU.Network分析,静态代码检查工具Lint以及程序稳定性monkey.下面就开始学习下这些工具吧. 一.Android开发者选项 ??Andorid开发工具众多,首先就是手机自带的开发者选项了,至于手机怎么启动开发者选项,那么请自行百度或者google了,接

iOS 性能优化:Instruments 工具的救命三招

你的 iOS 应用,运行速度靠谱吗?中枪的同学莫要愁,性能优化咱有妙招.用 Xcode 自家的调试工具 Instruments,揪出那些堵线程.占内存.耗资源的问题代码,彻底破掉迷局,让应用扬眉吐气! 对于每位 iOS 开发者来说,代码性能是个避不开的话题.随着项目的扩大和功能的增多,没经过认真调试和优化的代码,要么任性地卡顿运行,要么低调地崩溃了之……结果呢,大家用着不高兴,开发者也不开心. 其实要破这个局面并不难,只要在 Xcode 自带的监控调试工具 Instruments 上花点功夫,让

PLSQL_性能优化索引Index介绍(概念)

2014-06-01 BaoXinjian In Capgemini 一.摘要 在PLSQL查询优化中,使用和接触最多的应该是索引Index这个概念,个人也觉得对Index选择和优化是程式优化过程中比较重要的概念,特别是刚开始接触PLSQL性能优化 索引的一些概念 一个索引可以由一个或多个列组成, 对列设置索引其实就是对列的内容按一定的方式进行排序,检索数据的时候,检索排过序的数据,检索到最后一个有效数据之后就跳出检索 这样就不必进行全表扫描了,同时可以应用很多算法提高检索效率 数据库多用二分法

PLSQL_性能优化系列01_Oracle Index索引

2014-06-01 BaoXinjian 一.摘要 在PLSQL查询优化中,使用和接触最多的应该是索引Index这个概念,个人也觉得对Index选择和优化是程式优化过程中比较重要的概念,特别是刚开始接触PLSQL性能优化 索引的一些概念 一个索引可以由一个或多个列组成, 对列设置索引其实就是对列的内容按一定的方式进行排序,检索数据的时候,检索排过序的数据,检索到最后一个有效数据之后就跳出检索 这样就不必进行全表扫描了,同时可以应用很多算法提高检索效率 数据库多用二分法检索数据 索引的连接方式

30分钟带你熟练性能优化的那点儿事儿(案例说明)

前言 性能优化是数据库运维人员和中.高级软件开发人员的必备技能,很多时候老司机和新司机的区别就在写出的东西是否优化. 博主接触过近千家客户的系统,这些系统都存在着各种各样的性能问题.那么如何透彻的了解我们的数据库性能问题?今天就用一个案例来说明性能优化的那点儿事儿. PS:很多技术人员对优化有一套自己的理解,在阅读本文前请放下你自己的理解. 正所谓:跟着博主不迷路,博主带你上高速! 点开案例跟着博主的思路看看优化这些事儿 : 本文案例Demo 了解系统环境 优化首先要知道数据库在一个什么样的硬件

PLSQL_性能优化工具系列_SQL Plan Management

2014-09-24 BaoXinjian 一.摘要 SQL 语句的SQL 执行计划发生更改时,可能存在性能风险. SQL 计划发生更改的原因有很多,如优化程序版本.优化程序统计信息.优化程序参数.方案定义.系统设计和SQL 概要文件创建等. SQL 计划管理是一种随Oracle Database 11g 引入的新功能,通过维护所谓的“SQL 计划基线(SQL plan baseline(11g))”来使系统能够自动控制SQL 计划演变.启用此功能后,只要证明新生成的SQL 计划与SQL 计划基