原文出处:http://space.itpub.net/23135684/viewspace-627430
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生成的视图)
发表评论
-
dblink 阀值
2013-09-06 04:53 475调整方法: alter system set open_l ... -
查看 运行中的存储过程
2013-08-29 23:45 7671、查看ORACLE中正在运 ... -
oracle seconds to hh:mm:ss format
2013-03-13 02:26 953SELECT TO_CHAR(TRUNC(x/36 ... -
listener.ora、sqlnet.ora、tnsnames.ora
2013-03-06 04:57 729oracle网络配置 三个配置文件 listener.or ... -
oracle ratio_to_report
2013-02-20 03:20 892Ratio_to_report函数 Syntax ... -
Oracle 获取本周、本月、本季、本年的第一天和最后一天
2013-01-15 05:08 2665--取得当天0时0分0秒 select TRUNC ... -
package UTL_MAIL - 04042
2012-12-14 03:53 578Connect as SYS as sysdba: ... -
oracle常用的时间函数
2012-12-14 03:09 818SELECT SYSDATE FROM DUAL 取当前系 ... -
expdp/impdp 进行数据库迁移例子
2012-09-21 01:59 834把一个数据库上的一个用户schema迁移到另外一个数据库上 ... -
数据库缓冲区命中率
2012-09-19 21:55 706数据库缓冲区命中率 select name,value ... -
oracle真实案例之oem大量占用cpu与内存问题的解决方法
2012-09-14 23:13 8717一、介绍 由于dba离职,所以公司所有的or ... -
grant all object to another user
2012-09-07 04:42 738If you really want to grant all ... -
oracle 权限管理
2012-09-07 04:41 5961.查看所有用户: select * from db ... -
impdp 在同一个数据库中把一个schema中所有的对象复制到另一个schema中
2012-09-07 02:03 1165在同一个数据库中把一个schema中所有的对象复制到另一个sc ... -
11g MEMORY_TARGET 参数对SGA 和PGA的影响
2012-09-06 04:32 82311g 中新增 MEMORY_MAX_TARGET 参数 ... -
每小时生成csv文件,并ftp到远端服务器
2012-08-17 03:31 2407CREATE OR REPLACE procedu ... -
全面学习DBMS包之DBMS_SQL (转贴)
2012-08-16 22:32 674在PL/SQL编程当中,经常 ... -
Oracle – Select sysdate +/- time from dual
2012-08-15 22:39 883如果想+,-系统时间: Sysdate: S ... -
ZT 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件
2012-08-08 23:15 840--1查看表空间已经使用的百分比 ... -
Oracle使用虚拟表dual一次插入多条记录
2013-03-13 02:29 1034BEGIN generate_tmpsh ...
相关推荐
$ORACLE_HOME/rdbms/admin目录下awr,addm,ash相关脚本功能分析
学用ORACLE AWR 和 ASH 特性
Oracle AWR与ASH性能报告深入解析 Oracle AWR与ASH性能报告深入解析 Oracle AWR与ASH性能报告深入解析 Oracle AWR与ASH性能报告深入解析
Oracle数据库,导出某时间段AWR与ASH性能报告操作日志,用于对oracle数据库进行性能分析。
文档作者:notmain 一、 文档摘 要: 文档编写出发点: 网络上大量关于分析 AWR 报表的文档,此类文档没有提供相关的资料,有些描述有岐义。...6、对应的二个包还包括 ADDM,ASH 的源码,有兴趣的同学可以深入了解
AE脚本-文字层代码高亮突出颜色控制FUI脚本AEscripts ASH Syntax Highlighter 1.0.0AE脚本-文字层代码高亮突出颜色控制FUI脚本AEscripts ASH Syntax Highlighter 1.0.0AE脚本-文字层代码高亮突出颜色控制FUI脚本...
oracle报表生成器,自动生成AWR,ASH等报告
详细说明awr和ash的使用,oracle调优时用。
Oracle 12c ASH 学习手册
RDA工具,包括ASH,ADDM,AWR的所有监测报告,以及可以找到负载情况
Oracle 性能分析利器ASH报告收集与简析 Oracle 性能分析利器ASH报告收集与简析 Oracle 性能分析利器ASH报告收集与简析 Oracle 性能分析利器ASH报告收集与简析
Oracle 10g用ASH生成性能报告 Oracle 10g用ASH生成性能报告
关于Oracle性能优化的相关工具的介绍,如AWR,ASH,ADDM等的详细原理介绍及实践使用,非常有用
eslint-config-ash-nazg 对您的国度无情的控制(尽管不是任意的)! 统治他们! 安装 npm i -D eslint-config-ash-nazg install-peerdeps -d eslint-config-ash-nazg 规则 请参阅 (以及ash-nazg/node规则的 )以...
只是个人分析原件
简单的Oracle ASH查看器 安装 克隆存储库 npm install && npm --prefix ./client install ./client 如果未安装Oracle客户端:从下载Instant Client Basic或Basic Light软件包并解压缩 设置LD_LIBRARY_PATH环境变量...
Oracle snapper ASH监控工具-附件资源
2013年11月17--18日,第三届Oracle技术嘉年华圆满结束!作为国内顶尖级别的Oracle数据库技术盛会,我们今年荣幸的邀请到Jonathan Lewis,Tim Gorman等Oracle数据库领域国际级专家,特别为中国的数据库爱好者带来他们...
支持的数据库:Oracle,PostgreSQL目录快速开始 为您的数据库下载JDBC驱动程序( , ) 解压缩二进制存档并运行ASH-Viewer.jar 打开连接对话框,并用数据填充它们(Oracle数据库的URL: jdbc:oracle:thin:@host...