`

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生成的视图)

分享到:
评论

相关推荐

    高级owi与oracle性能调整.pdf

    根据提供的信息,我们可以推断出这本名为“高级owi与oracle性能调整”的书籍主要讨论了高级owi技术以及Oracle数据库性能优化的相关内容。由于提供的部分页面信息仅包含联系方式,并没有具体的章节内容,因此以下将...

    Oracle 导出某时间段AWR与ASH性能报告操作日志

    ### Oracle 导出某时间段AWR与ASH性能报告操作日志 #### 一、Oracle AWR与ASH简介 ##### 1.1 AWR (Automatic Workload Repository) 在Oracle数据库环境中,AWR是一种自动化的工具,它收集并存储有关数据库工作...

    awr addm ash 相关脚本功能分析

    $ORACLE_HOME/rdbms/admin目录下awr,addm,ash相关脚本功能分析

    oracle 10g AWR

    §1 Oracle 10g AWR-ADDM_ASH AWR 报告可以通过执行脚本生成,脚本需要在 SYSDBA 下运行。脚本的开头设置了页面大小、行大小、截断查询结果的最后空格等参数。然后,脚本显示执行命令,设置日期格式,取消屏幕显示...

    Oracle性能优化绝版好书:高级OWI与ORACLE性能调整

    《Oracle性能优化绝版好书:高级OWI与ORACLE性能调整》这本书深入探讨了Oracle数据库性能优化的关键技术和策略,特别关注了Oracle Wait Interface (OWI)和性能调整的实践应用。OWI是Oracle数据库中用于监控和诊断...

    Oracle AWR与ASH性能报告深入解析

    ### Oracle AWR与ASH性能报告深入解析 #### 一、Oracle数据库版本信息 根据所提供的数据库版本信息,我们得知当前使用的Oracle版本为11g企业版,版本号为11.2.0.1.0,这是一个64位的生产环境版本。其中包含的组件...

    高级owi与oracle性能调整

    根据给定的信息,“高级owi与oracle性能调整”这本书聚焦于Oracle数据库性能优化及owi(Online Workload Identification,即在线工作负载识别)相关的技术探讨。由于提供的具体内容中并未包含实际的技术内容,以下的...

    Oracle自带的性能诊断工具(AWR报告)

    ### Oracle 自带的性能诊断工具(AWR报告) #### 概述 AWR(Automatic Workload Repository)报告作为Oracle 10g及以上版本提供的一种强大的性能收集与分析工具,在数据库性能管理和故障排查方面发挥着至关重要的...

    oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64/sqlplus/devel

    监控Oracle数据库对于确保系统的稳定性和优化性能至关重要,这可能涉及到使用Oracle Enterprise Manager、AWR(Automatic Workload Repository)报告、ASH(Active Session History)等工具。 总之,Oracle Instant...

    eslint-config-ash-nazg

    eslint-config-ash-nazg 对您的国度无情的控制(尽管不是任意的)! 统治他们! 安装 npm i -D eslint-config-ash-nazg install-peerdeps -d eslint-config-ash-nazg 规则 请参阅 (以及ash-nazg/node规则的 )以...

    awr_ash 详解

    ### AWR与ASH详解:Oracle性能优化利器 #### 一、ASH:Active Session History ASH,即Active Session History,是Oracle 10g版本引入的一个关键特性,旨在解决传统会话信息瞬时消失的问题。在Oracle数据库中,当...

    (赵东郁)高级owi与oracle性能调整

    《高级owi与Oracle性能调整》是一本专注于提升Oracle数据库系统性能的专业资料,主要针对Oracle数据库管理员、系统架构师以及对数据库性能优化有需求的技术人员。OWI,全称为Oracle Wait Interface,是Oracle数据库...

    oracle报表生成器,生成AWR,ASH等报告

    Oracle报表生成器是一款专为Oracle数据库管理员设计的实用工具,它能够自动收集并分析数据库性能数据,生成AWR(Automatic Workload Repository)和ASH(Active Session History)等关键报告。这些报告对于理解...

    Oracle Database 性能调整与优化 系列书.rar

    3. **Automatic Workload Repository (AWR)** 和 **ASH (Active Session History)**:利用这些工具进行性能监控和问题诊断,找出性能瓶颈。 4. **SQL Performance Analyzer**:帮助识别升级或变更后可能影响性能的...

    oracle性能测试 -

    4. ADDM(Automatic Database Diagnostic Monitor):基于AWR数据进行性能问题诊断。 在Oracle性能测试过程中,要结合业务需求、硬件资源和数据库架构,制定合适的测试计划,通过持续监控、调整和优化,确保Oracle...

    Oracle 19c AWR和ASH特性实战指南

    内容概要:本文档详细介绍了 Oracle 19c 中 AWR(Automatic Workload Repository)和 ASH(Active Session History)的功能、管理和使用方法。主要内容包括 AWR 的基本概念、快照和基线的管理、AWR 报告的生成与提取...

    oracle性能诊断

    通过对系统统计量、系统等待事件和时间模型的分析,结合AWR、ADDM和ASH等工具的支持,我们可以有效地识别并解决Oracle数据库中的性能问题。希望本文能为您的Oracle性能诊断工作提供一定的参考价值。

Global site tag (gtag.js) - Google Analytics