Oracle ASH与AWR深度解析

需积分: 9 4 下载量 191 浏览量 更新于2024-07-24 收藏 223KB DOC 举报
"ASH和AWR的故事" ASH(Active Session History)和AWR(Automatic Workload Repository)是Oracle数据库性能监控和分析的重要工具,主要用于帮助DBA(数据库管理员)理解和优化数据库性能。 ASH是Oracle 10g引入的一项新特性,它以秒为单位收集那些处于非空闲状态的会话信息,比如等待事件、SQL语句等,并存储在内存中的V$ACTIVE_SESSION_HISTORY视图里。由于数据存储在SGA(System Global Area)的Shared Pool中的ASH buffers,它的容量有限,因此ASH能记录的历史长度受到SGA分配给ASH缓冲区大小的影响。DBA可以通过查询V$SGASTAT视图来了解ASH内存的使用情况。例如,以下SQL语句可以显示ASH缓冲区的大小: ```sql SELECT pool, name, bytes/1024/1024 Mb FROM v$sgastat WHERE name LIKE 'ASH%'; ``` ASH的主要作用在于提供实时的性能数据,即使在会话结束之后,DBA仍然可以通过分析ASH数据了解过去发生的问题,这对于诊断瞬时性能问题非常有帮助。 而AWR则是Oracle的一种自动性能监控机制,它定期(默认每小时一次)收集数据库的快照,包括系统统计信息、SQL语句执行统计、ASH数据等,并将这些信息存储在一个可持久化的仓库中,即Automatic Workload Repository。AWR报告提供了数据库性能的详细历史视图,可以帮助DBA识别性能趋势和瓶颈。通过对比两次快照之间的数据,DBA可以找出性能下降的原因,比如SQL语句的执行时间变化、等待事件的分布等。 AWR报告通常包含了以下内容: 1. 性能指标:如CPU使用率、I/O操作、缓冲区命中率等。 2. SQL语句分析:最消耗资源的SQL语句,包括执行次数、CPU时间、等待事件等。 3. 等待事件分析:哪些等待事件对性能影响最大。 4. SGA和PGA内存使用情况:内存分配和使用效率。 5. 实例和表空间统计:如表空间的使用情况、重做日志切换频率等。 综合使用ASH和AWR,DBA可以对数据库进行深入的性能分析,找出并解决性能问题,提升数据库的整体性能。然而,需要注意的是,虽然ASH和AWR提供了丰富的信息,但过度依赖或不恰当的使用也可能带来额外的资源消耗,因此,合理配置和适时使用这两种工具是关键。