Oracle性能调整ASH,AWR,ADDM
ASH (Active Session History)
ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。
ASH buffers 的最小值为1MB,最大值不超过30MB。内存中记录数据。期望值是记录一小时的内容。
生成ASH报告:
SQLPLUS>@?/rdbms/ashrpt.sql
ASH内存记录数据始终是有限的,为了保存历史数据,引入了自动负载信息库(Automatic Workload Repository ,AWR) 由后台进程MMON完成。ASH信息同样被采集写出到AWR负载库中。由于内存不是足够的,所以MMNL进程在ASH写满后会将信息写出到AWR负载库中。ASH全部写出是不可接受的,所以一般只写入收集的10%的数据量,而且使用direct-path insert完成,尽量减少日志的生成,从而最小化数据库性能影响。
写出到AWR负载库的ASH信息记录在AWR的基础表wrh$active_session_hist中,wrh$active_session_hist是一个分区表,Oracle会自动进行数据清理。
AWR(Automatic Workload Repository)自动工作负载信息库
AWR是Oracle 10g中的一个新特性,类似于10g以前的statspack。不过在使用上要比statspack简单,提供的性能指标要比statspack多很多,能更好的帮助DBA来发现数据库的性能瓶颈。
AWR是Oracle安装好后自动启动的,不需要特别的设置。收集的统计信息存储在SYSAUX表空间SYS模式下,以WRM$_*和WRH$_*的格式命名,默认会保留最近7天收集的统计信息。每个小时将收集到的信息写到数据库中,这一系列操作是由一个叫MMON的进程来完成的。
AWR存储的数据分类:
WRM$表存储AWR的元数据(awrinfo.sql脚本)
WRH$表存储采样快照的历史数据(awrrpt.sql脚本)
WRI$表存储同数据库建议功能相关的数据(ADDM相关数据)
一.生成AWR报告:
SQL>@?/rdbms/admin/awrrpt
根据向导来完成AWR报告的生成。需要注意的是,在选择时间范围的时候,中间不能有停机(如果显示的时间中间有空白行,表示有停机情况)。在选择报告类型的时候一般使用默认的HTML,方便查看。
二.查看数据库的AWR的设置:
SQL> select snap_interval, retention from dba_hist_wr_control;
SNAP_INTERVAL
---------------------------------------------------------------------------
RETENTION
---------------------------------------------------------------------------
+00000 01:00:00.0(每小时收集一次)
+00007 00:00:00.0(保留7天)
三.修改默认设置:
begin
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 20,
retention => 2*24*60);
end;
修改成每20分钟收集一次统计量,保留最近的2天统计量信息。
四.手动收集一次数据库的统计信息:
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
我们还可以通过DBMS_WORKLOAD_REPOSITORY包完成对基线,默认设置的修改等操作。
ADDM (Automatic Database Diagnostic Monitor AWR)
是Oracle内部的一个顾问系统,能够自动的完成最数据库的一些优化的建议,给出SQL的优化,索引的创建,统计量的收集等建议。
ADDM报告生成:
SQLPLUS>@?/rdbms/addmrpt.sql
Oracle性能调整最重要的就是对最影响性能的SQL的调整。在一个应用中,能够影响到数据库的只有SQL,也只能是SQL。我们不能一味依靠增强硬件,修改系统、数据库参数来提高数据库的性能。更多的应该关注那些最影响性能的SQL语句。ASH报告、AWR报告、ADDM报告都能够找出最影响性能的SQL的工具。在分析ASH报告、AWR报告的时候,最重要的就是关注SQL Statistics,SQL Statistics中最应该关注的是SQL ordered by Gets和SQL ordered by Reads两个指标。大量的Gets(逻辑读)会占用大量的CPU时间。大量的Reads(物理读)会引起IO的瓶颈出现。一般情况下,大量的Gets会伴随着大量的Reads出现。当然,我们可以通过增大SGA的大小来减少Reads的量。通过这两个指标找到了最影响性能的SQL,这是首要的,也是必要的。下一步就可以通过创建索引,调整SQL来提高SQL单独执行时的性能。减少SQL执行时出现的高Gets,Reads。当然整体的性能影响还和excutions有关,如果这条SQL执行的次数过多,累加起来量还是很大的。那么就可以考虑通过在应用上缓存等手段来减少SQL执行的次数。另外还有一个需要注意的问题就是在开发过程中SQL一定要使用绑定变量,来减少硬解析(大量的硬解析也会消耗大量的CPU时间,占用大量的Latch)。在开发过程中有个原则就是:小事务。操作完成及时的提交。
我们使用这么多种方式、报告只有一个唯一的目的:找出最影响系统性能的SQL语句。找到SQL下一步就是对它进行调整了。
我们在监控数据库时,如果是当前正在发生的问题,我们可以通过v$session+v$sqlarea来找出性能最差的SQL语句。如果在一个小时以内发生的我们可以通过生成ASH报告来找出SQL。如果是1小时以上或几天我们可以通过AWR报告来找出几小时,几天以来最影响系统的SQL语句。ADDM报告基于AWR库,默认可以保存30天的ADDM报告。
我们也可以直接查询试图:
v$session (当前正在发生)
v$session_wait (当前正在发生)
v$session_wait_history (会话最近的10次等待事件)
v$active_session_history (内存中的ASH采集信息,理论为1小时)
wrh$_active_session_history (写入AWR库中的ASH信息,理论为1小时以上)
dba_hist_active_sess_history (根据wrh$_active_session_history生成的视图)
ADDM会收集数据建议调用不同的Advisor进行数据库优化,SQL相关的Advisor主要包括SQL Access Advisor和SQL Tuning Advisor。
SQL Access Advisor和SQL Tuning Advisor之间的区别(http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1794009000346753857):
In a nutshell - the tuning advisor
o suggests sql profiles
o gathering more or stale statistics
o indexes that might be VERY useful
o query rewrites
the access advisor
o suggests indexes that might be useful (a possibly different set than the tuning advisor above)
o materialized views
o materialized view logs
o partitions (in 11g on up only)
SQL Access Advisor可以通过DBMS_ADVISOR调用,SQL Tuning Advisor可以通过DBMS_SQLTUNE调用。
@?rdbms/admin/awrrpt.sql是以前statspack的扩展,收集信息更详细,查看长期的数据库情况。
@?rdbms/admin/ashrpt.sql查看当前的数据库情况,因为ash是每秒从v$session进行进行取样,awr收集的数据要比ash多得多。
一般收集数据库信息的话要结合awr和ash。
@?rdbms/admin/addmrpt .sql相当于是驻留在oracle里的一位专家,是一个自我诊断引擎。产生symptom,problem,infomation,提供解决问题的建议,并自动修复一些具体的故障。
@?rdbms/admin/awrinfo.sql显示的都是awr的相关信息,包括快照信息、sysaux空间使用、awr组件、ash等信息。
=============================================================================
简 单 总 结
=============================================================================
awr与ash的最主要的区别在于:awr是平面的,全面的,ash是立体的,更侧重于session的event跟踪,
由于业务量大的数据库的event wait是瞬息万变,awr很可能会监控不到,为了弥补这个不足,ash才可以对session的event进行跟踪。
ash与addm的区别在于:addm偶重于基于对当据库当前状态的分析,对存在的问题提供指导性的意见,可以说ash,addm是awr的补充,
awr全面地收集数据库的状态,但ash/addm是侧重要对收集的数据进行分析,并提供一些有益的建议。
参考文章:
《More about AWR》:http://blog.itpub.net/23135684/viewspace-1127938/
Oracle性能调整ASH,AWR,ADDM的更多相关文章
- oracle性能优化之awr分析
oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...
- Oracle Tuning (Oracle 性能调整)的一些总结
Oracle Tuning (Oracle 性能调整)的一些总结 Oracle Tuning (Oracle 性能调整)的一些总结关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库 ...
- Oracle性能调优(AWR)
一.AWR报告 AWR 是通过对比两次快照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分,这点与Statspack生成的报告非常类似.不过AWR在生成报告时,可以选择生成 ...
- ORACLE ASH/AWR
(一) ASH 用户在ORACLE数据库中执行操作时,必然要创建相应的连接和会话,其中,所有当前的会话信息都保存在动态性能视图V$SESSION中,通过该视图,DBA可以查看用户实际执行的操作,或者当 ...
- [转]oracle性能调优之--Oracle 10g AWR 配置
一.ASH和AWR的故事 1.1 关于ASH 我们都知道,用户在ORACLE数据库中执行操作时,必然要创建相应的连接和会话,其中,所有当前的会话信息都保存在动态性能视图V$SESSION中,通过该视图 ...
- 关于Oracle的性能调整(一)
Oracle Tuning的一些总结 关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比如SGA.PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化 ...
- 使用AWR报告诊断Oracle性能问题
在做单交易负载测试时,有的交易响应时间超出了指标值,在排除完测试环境等可能造成交易超时的原因后,去分析数据库问题.数据库用的是Oracle,对于Oracle数据库整体的性能问题, awr的报告是一个非 ...
- (Oracle)自定义调用AWR&ADDM
Oracle->自定义调用AWR&ADDM 需求描述: 前面设定每天自动生成AWR用于提供前一天的数据库状态信息,但因数据库和信息过多不利于直观检查.此次新增ADDM诊断. ADDM诊断 ...
- oracle管理优化必备语句以及oracle SQL语句性能调整
本文转自http://www.dataguru.cn/article-3302-1.html oracle数据库管理优化必备语句: 1. SELECT T.START_TIME,T.USED_UBLK ...
随机推荐
- wamp安装xdebug特殊情况win7 64位安装32位wamp
在wamp上安装xdebug网上很多文章都介绍了方法,但是我这里遇到了一个很特殊的情况,在网上很少有人提及: 我机器是win7 64位的,安装的wamp1.7.4是32位的,这是后来导致出现奇怪现象的 ...
- ssm框架结合axis2实例步骤
本文亲测: 1.从官网下载axis2相关api,地址是:http://axis.apache.org/axis2/java/core/download.html,我下载的是axis2-1.7.6-bi ...
- EF实现主从表自动生成主键保存
Class cl = new Class() { ClassName = "一年级1班" }; TestDBEntities context = new TestDBEntitie ...
- [转]Ext.grid常用属性和方法
原文地址:http://blog.csdn.net/fm19901229/article/details/8113969 1.Ext.grid.GridPanel 主要配置项: store:表格的 ...
- RRDtool运用
一 建立RRD数据库(.rrd文件) $ rrdtool RRDtool Copyright - by Tobias Oetiker <tobi@oetiker.ch> Compiled ...
- 看不懂深度Linux系统的文件管理器图标
为了保持对Linux的熟悉度,MacBookPro一般放在公司,家里(每次用这个词是我觉得最纠结的时候,我现在有家吗?)用的是普通笔记本装了深度Linux. 之所以安装深度,主要的原因应该是支持国产吧 ...
- [转]Linux 命令行快捷键
群里有人问"问个问题,Linux 命令行有没有快捷键一下从行末会到行头?经常敲了很多命令发现忘加 sudo 了,然后把命令删了重新敲一遍". 自己还真不知道怎么操作,只知道历史命令 ...
- 私有IP地址共有三个范围段
在现在的网络中,IP地址分为公网IP和私有IP地址.公网IP是在Internet使用的IP地址,而私有IP地址是在局域网中使用的IP地址. 由于我们目前使用的IP V4协议的限制,现在IP地址的数量是 ...
- linux用户和权限详解
1.用户组说明 在使用useradd命令创建用户的时侯可以用-g 和-G 指定用户所属组和附属组.基本组:如果没有指定用户组,创建用户的时候系统会默认同时创建一个和这个用户名同名的组,这个组就是基本组 ...
- RavenDb学习(一)设计模式介绍
RavenDb是一个文档型的数据库,和芒果Db是一个类型的东西,但是公司选择了它,主要是因为它对事务的支持比较好,芒果Db在事务方面有问题. 下面有一个例子. 在关系型数据库中,我们要展示以上的内容, ...