[Oracle] - 性能优化工具(3) - ADDM
ADDM 通过检查和分析AWR获取的数据来推断Oracle数据库中可能的问题。并给出优化建议。
获取ADDM的方法例如以下:
@?/rdbms/admin/addmrpt.sql
以下能够看一个样例:
--第一步:创建測试用的表
drop table t cascade constraints purge;
create table t AS SELECT * FROM dba_objects ; --第二步:快照
exec dbms_workload_repository.create_snapshot(); --第三步:模拟进行
DECLARE
v_var number;
BEGIN
FOR n IN 1..10000
LOOP
select count(*) into v_var from t;
END LOOP;
END;
/ ---第四步:再次快照
exec dbms_workload_repository.create_snapshot(); --第五步:创建一个优化诊断任务并运行
--(1)先获取到两次快照的ID:
select snap_id from (SELECT * FROM dba_hist_snapshot ORDER BY snap_id desc) where rownum <=2; --(2)创建优化任务,并运行:
DECLARE
task_name VARCHAR2(30) := 'ADDM_02';
task_desc VARCHAR2(30) := 'ADDM Feature Test';
task_id NUMBER;
BEGIN
dbms_advisor.create_task('ADDM', task_id, task_name, task_desc, null);
dbms_advisor.set_task_parameter(task_name, 'START_SNAPSHOT', 2033);
dbms_advisor.set_task_parameter(task_name, 'END_SNAPSHOT', 2034);
dbms_advisor.set_task_parameter(task_name, 'INSTANCE', 1);
dbms_advisor.set_task_parameter(task_name, 'DB_ID', 977587123);
dbms_advisor.execute_task(task_name);
END;
/ --第六步:查看优化建议结果
--通知函数dbms_advisor.get_task_report能够得到优化建议结果。
set pagesize 0
set linesize 121
spool d:\addm_rpt.html
SET LONG 1000000 PAGESIZE 0 LONGCHUNKSIZE 1000
COLUMN get_clob FORMAT a80
SELECT dbms_advisor.get_task_report('ADDM_02', 'TEXT', 'ALL') FROM DUAL;
spool off
生成的ADDM例如以下:
任务 '任务_4125' 的 ADDM 报告
---------------------- 分析时段
----
AWR 快照范围从 1908 到 1952。
时段从 16-2月 -14 08.19.56 上午 開始
时段在 16-2月 -14 10.00.37 下午 结束 分析目标
----
数据库 'TEST11G' (DB ID 为 977587123)。
数据库版本号 11.2.0.1.0。
ADDM 对实例 test11g 运行了分析, 该实例的编号为 1 并运行于 LIANGJB-PC。 分析时段期间的活动
---------
总数据库时间为 26244 秒。
活动会话的平均数量为 .53。 查找结果概要
------
说明 活动的会话 建议案
活动的百分比
--------- ------ ---
1 行锁等待数 .52 | 97.762
2 顶级 SQL 语句 .52 | 96.742 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 查找结果和建议案
-------- 查找结果 1: 行锁等待数
受影响的是 .52 个活动会话, 占总活动的 97.76\%。
-------------------------------
发现 SQL 语句正处于行锁定等待。 建议案 1: 应用程序分析
预计的收益为 .39 个活动会话, 占总活动的 72.36\%。 --------------------------------
操作
在 INDEX "LJB.GENDER_IDX" (对象 ID 为 110057) 中检測到了严重的行争用。 使用
指定的堵塞 SQL
语句在应用程序逻辑中跟踪行争用的起因。 相关对象
ID 为 110057 的数据库对象。
原理
SQL_ID 为 "cafv93454t4jv" 的 SQL 语句在行锁上被堵塞。 相关对象
SQL_ID 为 cafv93454t4jv 的 SQL 语句。
insert into t values ('M',78, 'young','TTT')
原理
具有 ID 130 和序列号 423 (在实例号 1 中) 的会话是构成此建议案中的优化建议
的 98% 的堵塞会话。 建议案 2: 应用程序分析
预计的收益为 .14 个活动会话, 占总活动的 25.4\%。
-------------------------------
操作
在 TABLE "LJB.T" (对象 ID 为 110056) 中检測到了严重的行争用。 使用指定的阻
塞 SQL
语句在应用程序逻辑中跟踪行争用的起因。 相关对象
ID 为 110056 的数据库对象。
原理
SQL_ID 为 "aycghy7dbzja1" 的 SQL 语句在行锁上被堵塞。
相关对象
SQL_ID 为 aycghy7dbzja1 的 SQL 语句。
delete from T WHERE GENDER='M'
原理
具有 ID 130 和序列号 423 (在实例号 1 中) 的会话是构成此建议案中的优化建议
的 100% 的堵塞会话。 导致查找结果的故障现象:
------------
等待类 "应用程序" 消耗了大量数据库时间。
受影响的是 .52 个活动会话, 占总活动的 97.76\%。 查找结果 2: 顶级 SQL 语句
受影响的是 .52 个活动会话, 占总活动的 96.74\%。
-------------------------------
发现 SQL 语句消耗了大量数据库时间。这些语句提供了改善性能的绝佳机会。 建议案 1: SQL 优化
预计的收益为 .38 个活动会话, 占总活动的 71.45\%。 --------------------------------
操作
研究 INSERT 语句 (SQL_ID 为 "cafv93454t4jv"), 确定能否够改善性能。能够利
用此 SQL_ID 的 ASH
报告来补充此处给出的信息。 相关对象
SQL_ID 为 cafv93454t4jv 的 SQL 语句。
insert into t values ('M',78, 'young','TTT')
原理
SQL 在 CPU, I/O 和集群等待上花费的时间仅仅占其数据库时间的 0%。因此, SQL 优
化指导不适用于这样的情况。请查看 SQL
的性能数据以找出可能的改进方法。
原理
此 SQL 的数据库时间由下面部分构成: SQL 运行占 100%, 语法分析占 0%, PL/SQL
运行占 0%, Java 运行占 0%。
原理
SQL_ID 为 "cafv93454t4jv" 的 SQL 语句运行了 1 次, 每次运行平均用时 17640
秒。
原理
等待事件 "enq: TX - row lock contention" (在等待类 "Application" 中) 消耗
了数据库时间的
100% (该数据库时间为处理具有 SQL_ID "cafv93454t4jv" 的 SQL 语句时所用的时
间)。 建议案 2: SQL 优化
预计的收益为 .13 个活动会话, 占总活动的 25.29\%。 --------------------------------
操作
研究 DELETE 语句 (SQL_ID 为 "aycghy7dbzja1"), 确定能否够改善性能。能够利
用此 SQL_ID 的 ASH
报告来补充此处给出的信息。
相关对象
SQL_ID 为 aycghy7dbzja1 的 SQL 语句。
delete from T WHERE GENDER='M'
原理
SQL 在 CPU, I/O 和集群等待上花费的时间仅仅占其数据库时间的 0%。因此, SQL 优
化指导不适用于这样的情况。请查看 SQL
的性能数据以找出可能的改进方法。
原理
此 SQL 的数据库时间由下面部分构成: SQL 运行占 100%, 语法分析占 0%, PL/SQL
运行占 0%, Java 运行占 0%。
原理
SQL_ID 为 "aycghy7dbzja1" 的 SQL 语句运行了 1 次, 每次运行平均用时 7917 秒
。
原理
等待事件 "enq: TX - row lock contention" (在等待类 "Application" 中) 消耗
了数据库时间的
100% (该数据库时间为处理具有 SQL_ID "aycghy7dbzja1" 的 SQL 语句时所用的时
间)。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 附加信息
---- 各种信息
----
等待类 "提交" 并未消耗大量数据库时间。 等待类 "并发" 并未消耗大量数据库时间。
等待类 "配置" 并未消耗大量数据库时间。
等待类 "网络" 并未消耗大量数据库时间。
等待类 "用户 I/O" 并未消耗大量数据库时间。 会话连接和断开连接的调用并未消耗大量数据库时间。
对 SQL 语句的硬语法分析并未消耗大量数据库时间。 在分析时段的 99% 期间, 数据库的维护窗体是处于活动状态的。
[Oracle] - 性能优化工具(3) - ADDM的更多相关文章
- [Oracle] - 性能优化工具(2) - ASH
ASH和AWR的关系 ASH以V$SESSION为基础,每秒採样一次,记录活动会话等待的事件.不活动的会话不会採样,採样工作由新引入的后台进程MMNL来完毕. ASH内存记录数据始终是有限的,为了保存 ...
- [Oracle] - 性能优化工具(1) - AWR
AWR快照 默认情况下,Oracle每隔一小时会自己主动产生一个快照,保存近期8天的快照. 我们能够通过例如以下语句获得产生快照的时间间隔和保存的天数: SYS@orcl(lx15)> sele ...
- [Oracle] - 性能优化工具(5) - AWRSQL
在AWR中定位到问题SQL语句后想要了解该SQL statement的详细运行计划,于是就用AWR报告中得到的SQL ID去V$SQL等几个动态性能视图中查询,但发现V$SQL或V$SQL_PLAN视 ...
- [Oracle] - 性能优化工具(4) - AWRDD
AWRDD是用于比較两个AWR快照,从而获得不同一时候期的性能. 运行例如以下语句获得AWRDD: @?/rdbms/admin/awrddrpt.sql 2025 23 2月 2014 07:12 ...
- Oracle 性能优化的基本方法
Oracle 性能优化的基本方法概述 1)设立合理的性能优化目标. 2)测量并记录当前性能. 3)确定当前Oracle性能瓶颈(Oracle等待什么.哪些SQL语句是该等待事件的成分). 4)把等待事 ...
- 【转载】我眼中的Oracle性能优化
我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...
- PHP性能优化工具–xhprof安装
PHP性能优化工具–xhprof安装,这里我先贴出大致的步骤: 1.获取xhprof 2.编译前预处理 3.编译安装 4.配置php.ini 5.查看运行结果 那么下面我们开始安装xhprof工具吧: ...
- 降低磁盘IO使Oracle性能优化(转)
文章转自:http://blog.chinaunix.net/uid-26813519-id-3207996.html 硬件方面虽然只占Oracle性能优化的一个方面(另一方面是软件),但是仍不可忽视 ...
- PLSQL_性能优化工具系列16_Best Practices: Proactively Avoiding Database
占位符 PLSQL_性能优化工具系列_Best Practices: Proactively Avoiding Database/Query Performance Issue
随机推荐
- U盘详解
摘要:U盘,称呼最早来源于朗科公司生产的一种新型存储设备,名曰“优盘”,使用USB接口进行连接.USB接口就连到电脑的主机后,U盘的资料可与电脑交换.而之后生产的类似技术的设备由于朗科已进行专利注册, ...
- 开源日志库log4cplus+VS2008使用
一.简介 log4cplus是C++编写的开源的日志系统,功能非常全面.本文介绍如何在Windows+VS2008中使用该日志库. 二.下载 可从网站[url]http://log ...
- Delphi Windows API判断文件共享锁定状态(OpenFile和CreateFile两种方法)
一.概述 锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据.要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定 ...
- linux之SQL语句简明教程---INSERT INTO
到目前为止,我们学到了将如何把资料由表格中取出.但是这些资料是如果进入这些表格的呢? 这就是这一页 (INSERT INTO) 和下一页 (UPDATE) 要讨论的. 基本上,我们有两种作法可以将资料 ...
- 【LeetCode练习题】Permutation Sequence
Permutation Sequence The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and ...
- RPATH与RUNPATH
RPATH与RUNPATH 时间 2011-11-01 21:46:44 Qt Labs China 原文 http://labs.qt.nokia.com.cn/2011/11/01/rpath- ...
- Linux学习笔记5-搭建内网Yum源
一.安装Nginx 1.安装依赖: [root@nodeSource local]# yum install gc-devel gcc-c++ pcre-devel zlib-devel 2.解压N ...
- [caffe]深度学习之图像分类模型AlexNet解读
在imagenet上的图像分类challenge上Alex提出的alexnet网络结构模型赢得了2012届的冠军.要研究CNN类型DL网络模型在图像分类上的应用,就逃不开研究alexnet.这是CNN ...
- 优先队列(priorityqueue)
队列是先进先出的线性表,顾名思义,优先队列则是元素有优先级的队列,出列的顺序由元素的优先级决定.从优先队列中删除元素是根据优先权的高低次序,而不是元素进入队列的次序.优先队列的典型应用是机器调度等. ...
- JAVA Socket地址绑定
Socket常用有惨构造方法有如下: Socket(InetAddress address, int port) Socket(InetAddress address, int port, InetA ...