Automatic Database Diagnostic Monitor(自动数据库诊断监视器,ADDM)

当系统发生问题时,在对系统做任何修改之前,对问题进行准确和及时的诊断是很重要的。通常情况下,数据库管理员(DBA)只是简单的看一下症状,并立即开始修改系统来修复这些症状。但是,实际的问题,在初始阶段一个准确的诊断增加了解决问题的成功率。

随着Oracle数据库,准确诊断问题需要的统计数据存储在自动负载信息库(AWR)。自动数据库诊断监视器(ADDM):

  • 定期分析AWR数据
  • 诊断性能问题的根本原因
  • 提供修改任何问题的建议
  • 识别系统没问题的区域

有关AWR的信息,请参考:http://blog.csdn.net/chiclewu/article/details/16945623

在大多数情况,DBA在看性能问题报告之前,先看ADDM输出。ADDM提供以下几个好处:

  • 默认每个小时自动收集性能诊断报告
  • 基于优化期限的问题诊断
  • 基于时间的问题影响和建议优势的量化
  • 识别根本原因,不是症状
  • 处理根本原因的建议
  • 识别系统非问题区域
  • 诊断过程中最小的系统开销

意识到优化是一个反向过程是很重要的,并修复一个可能是由瓶颈引起的转移到系统其他部分的问。即使有ADDM分析的好处,可能需要采取多个优化周期来达到可接受的系统性能。ADDM优势应用于生成系统。在开发和测试系统,ADDM可以提供一个早期性能问题的警告。

1.ADDM分析

ADDM分析可以在一对AWR快照和一组来自相同数据库的实例下执行。分析时间段定义的一对AWR快照,分析目标数据库定义的一组实例。

如果使用的真正应用集群(RAC),包括以下三种分析模式:

  • 数据库
  • 实例
  • 部分

如果没有使用RAC,ADDM仅有实例模式功能,因为数据只有一个实例。

ADDM分析执行AWR快照花费,并保存结果在数据库中。ADDM分析的期间有过去的两个快照(默认最后一个小时)来定义.ADDM始终分析实例模式指定的实例。对于非Oracel RAC或单实例环境中,实例模式执行的分析是在同一数据库范围的分析。如果是使用Oracle RAC,ADMM分析数据库模式中整个数据库。ADDM 分析完成之后,可以通过Oracle企业管理器查看,或者使用SQL*Plus会话查看那视图报表。

ADDM分析进行自上而下,首先确定症状,然后分析他们来找到根本性能问题的原因。分析的目的是为了减少称为DB time的吞吐量指标。 DB time 是数据库在处理用户请求所花费的积累时间。它包括等待时间和所有非空用户会话的CPU时间。DB time显示在V$SESS_TIME_MODEL和V$SYS_TIME_MODEL视图中。

通过减少DB time,数据库能够使用相同的资源,以支持更多用户的请求,从而提高吞吐量。ADDM问题报告按照DB time负责的数量进行排序。DB time不负责的相当大的一部分系统区域作为报告的非问题区域。

 ADDM认为包含以下几种问题类型:

  • CPU瓶颈
  • 较小的内存结构
  • I/O容量问题
  • 高负载SQL语句
  • 高负载PL/SQL执行和编译
  • RAC特定问题
  • 数据库配置问题
  • 并发问题
  • 热对象和各个问题区域排序最高的SQL

2.设置ADDM

自动数据库诊断监视器默认是启用的,通过初始化参数CONTROL_MANAGEMENT_PACK_ACCESS 和STATISTICS_LEVEL控制。

CONTROL_MANAGEMENT_PACK_ACCESS参数应该设置为DIAGNOSTIC或DIAGNOSTIC+TUNING来启用自动数据库诊断监视器。默认设置为DIAGNOSTIC+TUNING。设置为NONE禁用ADDM。STATISTICS_LEVEL参数应该设置为TYPICAL或ALL来启用自动数据库诊断监视器。默认设置为TYPICAL。设置为BASIC禁用许多Oracle功能,包括ADDM。

I/O性能部分的ADDM分析依赖于DBIO_EXPECTED参数,该参数描述了I/O子系统的预期性能。DBIO_EXPECTED的值是以毫秒为单位读取单个数据块所有花费的平均值。Oracle默认使用10毫秒,这对于大多数现代的硬件设置是合适的。如果你的硬件显著不同,例如,非常老的硬件或非常快的RAM磁盘,考虑是用不同的值。

设置DBIO_EXPECTED参数:

  1. 测量你的硬件读取单个数据库文件的平均值。注意,这种测量是随机I/O,其中包括标准设备的寻道之间。对于硬盘设备的典型值是在5000至20000之间。
  2. 使用SYS用户连接到数据库,设置DBIO_EXPECTED参数值。
    execute dbms_advisor.set_default_task_parameter('ADDM', 'DBIO_EXPECTED', 8000);

3.使用ADDM诊断数据库性能问题

要诊断数据库性能问题,首先要查看每次AWR快照自动创建的ADD分析结果。如果必要执行不同的分析(例如,更长的分析期间,不同的DBIO_EXPECTED 设置,或改变分析模式),则可以手动运行ADDM。ADDM可以分析任何两个AWR快照(在同一个数据库),只要这两个快照仍然存储在AWR中(尚未清除)。ADDM可以只分析那些刚开始快照之前启动的实例,并保持运行直到快照结束。

ADDM不会分析生成AWR快照时遇到显著错误的实例。

诊断监控器主要的接口是Oracle企业管理器,只要有可能,应该使用Oracle企业管理器运行ADDM。如果Oracle企业管理器不可用,则可以使用 DBMS_ADDM包运行ADDM。为了运行DBMS_ADDM包,用户必须被赋予ADVISOR 权限。

  • 主要包含以下内容:
  • 数据库模式运行ADDM
  • 实例模式运行ADDM
  • 部分模式运行ADDM
  • 显示ADDM报告

3.1数据库模式运行ADDM

对于OracelRAC配置,可以数据库模式运行ADDM来分析数据库下的所有实例。

BEGIN
DBMS_ADDM.ANALYZE_DB (
   task_name           IN OUT VARCHAR2,
   begin_snapshot      IN     NUMBER,
   end_snapshot        IN     NUMBER,
   db_id               IN     NUMBER := NULL);
END;

 

3.2实例模式运行ADDM

要分析特定的数据库实例,可以在实例模式下运行ADDM。

BEGIN
DBMS_ADDM.ANALYZE_INST (
   task_name           IN OUT VARCHAR2,
   begin_snapshot      IN     NUMBER,
   end_snapshot        IN     NUMBER,
   instance_number     IN     NUMBER := NULL,
   db_id               IN     NUMBER := NULL);
END;

 

3.3部分模式运行ADDM

要分析所有数据库实例的子集,可以在部分模式下运行ADDM。

BEGIN
DBMS_ADDM.ANALYZE_PARTIAL (
   task_name           IN OUT VARCHAR2,
   instance_numbers    IN     VARCHAR2,
   begin_snapshot      IN     NUMBER,
   end_snapshot        IN     NUMBER,
   db_id               IN     NUMBER := NULL);
END;

 

3.4显示ADDM报告

使用DBMS_ADDM.GET_REPORT函数显示执行ADDM任务的文本报告。

DBMS_ADDM.GET_REPORT (
   task_name           IN VARCHAR2
  RETURN CLOB);

 

下面是显示指定任务名称的ADDM文本报告:
SET LONG 1000000 PAGESIZE 0;
SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL;


4.使用视图查看ADDM信息

通常情况下,你应该使用Oracle企业管理器或ADDM报告查看ADDM信息。然而,你可以使用以下视图查看ADDM信息:

  • DBA_ADVISOR_FINDINGS
  • DBA_ADDM_FINDINGS
  • DBA_ADVISOR_FINDING_NAMES
  • DBA_ADVISOR_RECOMMENDATIONS
  • DBA_ADVISOR_TASKS

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值