在进行数据库调优时,代码的性能瓶颈至关重要,Oracle数据库提供的DBMS_PROFILER包可以特别方便的发现瓶颈的所在之处。

DBMS_PROFILER在使用之前可能需要安装,具体安装步骤如下:

◆1:执行$ORACLE_HOME/rdbms/admin/profload.sql

◆2:创建一个用于存放跟踪信息的schema

CREATE USER profiler IDENTIFIED BY profiler DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;

GRANT connect TO profiler;

CREATE PUBLIC SYNONYM plsql_profiler_runs FOR profiler.plsql_profiler_runs;

CREATE PUBLIC SYNONYM plsql_profiler_units FOR profiler.plsql_profiler_units;

CREATE PUBLIC SYNONYM plsql_profiler_data FOR profiler.plsql_profiler_data;

CREATE PUBLIC SYNONYM plsql_profiler_runnumber FOR profiler.plsql_profiler_runnumber;

◆3:使用刚刚创建的profiler用户执行如下脚本或代码:

$ORACLE_HOME/rdbms/admin/proftab.sql

GRANT SELECT ON plsql_profiler_runnumber TO PUBLIC;

GRANT SELECT, INSERT, UPDATE, DELETE ON plsql_profiler_data TO PUBLIC;

GRANT SELECT, INSERT, UPDATE, DELETE ON plsql_profiler_units TO PUBLIC;

GRANT SELECT, INSERT, UPDATE, DELETE ON plsql_profiler_runs TO PUBLIC;

安装成功后测试:

执行

BEGIN

DBMS_PROFILER.START_PROFILER('123');

FOR I IN 1 .. 1000 LOOP

INSERT INTO A VALUES (I || '');

END LOOP;

COMMIT;

DBMS_PROFILER.STOP_PROFILER();

END;

执行后使用下面的代码检查:

SELECT C.LINE#, C.TOTAL_OCCUR, C.TOTAL_TIME, C.MIN_TIME, C.MAX_TIME

FROM PLSQL_PROFILER_RUNS A, PLSQL_PROFILER_UNITS B, PLSQL_PROFILER_DATA C

WHERE A.RUN_COMMENT = '123'

AND B.UNIT_OWNER = ''

AND A.RUNID = B.RUNID

AND A.RUNID = C.RUNID

AND B.UNIT_NUMBER = C.UNIT_NUMBER

注意:每次DBMS_PROFILER.START_PROFILER的输入参数需要改变,否则便不能分别运行后的运行结果了。

除此之外B.UNIT_OWNER =‘’中的约束值如果是在package里面需要是包名,如果是procedure则是procedure的名字。实在在不知道什么名字时可以在PLSQL_PROFILER_UNITS中查一下。

此外,运行结果可以通过PLSQL Developer来观察,需要新建一个test,在profiler中可以查看它的运行结果,示例如下:

oracle dbms_profiler,Oracle数据库中使用DBMS_PROFILER进行调优相关推荐

  1. oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办

    在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办? 1.MSSQL: ISNULL() 语法 ISNULL ( check_expression , replacem ...

  2. Oracle 12c CDB数据库中数据字典架构

    Oracle 12c CDB数据库中数据字典架构 使用sys用户和普通用户实验结果不同: SELECT * FROM V$PDBS; create table LHRTEST as select * ...

  3. oracle mysql substr_Oracle数据库中substr()函数简介说明

    摘要: 下文讲述Oracle数据库中substr函数应用简介,如下所示: oracle substr函数功能说明 substr函数功能: substr函数在oracle数据库中的功能为:字符串截取函数 ...

  4. oracle层级计算推演,(特价书)Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解(资深Oracle专家黄玮十年磨一剑,盖国强作序力荐)(china-pub首发)...

    第一篇 执 行 计 划 执行计划是指示Oracle如何获取和过滤数据.产生最终结果集,是影响SQL语句执行性能的关键因素.我们在深入了解执行计划之前,首先需要知道执行计划是在什么时候产生的,以及如何让 ...

  5. mongdb 建立了索引唯一性还能重复插入?_「数据库系列」Postgres性能调优——Index...

    在本文中,我们将探讨如何通过使用Explain和Analyze来分析慢查询,以及使用索引来修改和增强查询时间来解决慢查询. Postgres支持在表上使用各种索引,以加快查询速度. 多列索引 多列B树 ...

  6. MySQL(用户管理,常用sql语句,数据库备份恢复,MySQL调优,恢复误操作数据)...

    一.MySQL用户管理. 一个MySQL数据库里可以跑多个库,总不能给所有人的程序员root用户,则可以给他们单独的用户访问数据库. 创建用户:(grant all on *.* to 'user1' ...

  7. mysql执行计划中性能最差的是_面试中:mysql性能调优-执行计划explain

    mysql的sql调优大家都不陌生,可是调优前都会先看下执行计划,这个是必须的. 插播图片: explain 这个是关键字执行如下: explain select * from user 结果如下: ...

  8. Docker中应用的性能调优指南(一)- 先谈谈容器化性能调优

    摘要: 前言 性能调优是一个老生常谈的话题,通常情况下,一个应用在上线之前会进行容量规划.压力测试并进行验证,而性能调优则是在容量规划与验证结果之间出现差异时会进行的必然手段.从某种角度来讲,性能调优 ...

  9. oracle和SQLserver数据库中select into 的区别

    在Oracle中是这样的 Create tableA as select * from tableB where 1=0 or 1=1 在SQLserver中是这样的 select * into ta ...

最新文章

  1. [SPDK/NVMe存储技术分析]012 - 用户态ibv_post_send()源码分析
  2. 常用机器学习算法原理及推导
  3. cython安装ubuntu_ubuntu上的Cython独立可执行文件
  4. 极其实用的sql脚本【建议收藏】
  5. linux-任务调度
  6. Xshell和Xftp5配置连接阿里云服务器
  7. (四)Java中的多线程之间实现同步+多线程并发同步
  8. spring 注入 list和map及enum映射
  9. java2实用教程第五版耿祥义电子版_Java2实用教程(第5版)答案 耿祥义、张跃平
  10. python抠图教程视频_3行Python代码实现8秒抠图的AI神器,根本无需PS(附视频教程)...
  11. 微软 android 输入法下载官网下载地址,微软五笔输入法官网下载_微软王码五笔输入法8689版官方下载-华军软件园...
  12. windows安装时提醒“缺少所需要的CD/DVD驱动器设备驱动程序”的解决办法
  13. Domain Generalization数据集整理
  14. Windows常用命令(一)
  15. 为何moov头在尾部的mp4可以快速播放、拖动
  16. 初心勿忘,只做真我!
  17. c语言outl函数,Outlook MAPI开发指南
  18. 涉密信息系统集成资质申请单位提交材料清单
  19. 2022年全球及中国场地电动车行业市场规模竞争格局研究预测及市场发展趋势分析预测
  20. 简直不要太硬了!一文带你彻底理解文件系统

热门文章

  1. 转:12个信号判断男人肾不好
  2. 【RIA Services】系统分析
  3. 3d geometric model website http://www.cse.ohio-state.edu/~tamaldey/
  4. shp2sde命令行方式向arcsde批量导入数据脚本的生成步骤
  5. java 多线程同步问题_Java多线程同步问题:一个小Demo完全搞懂
  6. c语言五子棋代码_基于控制台的C语言贪吃蛇
  7. powerdesigner 设置唯一约束
  8. struts2中s:select标签在freemarker中的使用
  9. php编译自己库文件,php编译后追加库模块-gd库
  10. python为mysql设置id自增长_postgresql如何设置id自增长