Oracle ADDM自动数据库诊断监视器

自动数据库诊断监控 ADDM是一种工具,在分析数据的自动负载信息库(AWR执行问题的准确和及时的诊断。它可以找到根本原因并提供纠正问题的建议。

对于那些不熟悉性能调优的人,   AWR  (自动工作负载存储库)是每个Oracle数据库中都存在的内置存储库(在SYSAUX表空间中)。Oracle数据库会定期对其所有重要统计信息和工作负载信息进行快照,并将其存储在 AWR以了解有关AWR的更多信息。

ADDM分析包括以下内容。

  • CPU负载
  • 内存使用情况
  • I / O使用
  • 资源密集型SQL
  • 资源密集型PL / SQLJava
  • RAC问题
  • 应用问题
  • 数据库配置问题
  • 并发问题
  • 对象争用

ADDM还监视系统的非问题区域,例如不会严重影响系统性能的等待事件类,在初始阶段就将它们识别并从调整注意事项中删除,从而节省了本来可以花时间和精力的项目不会影响整体系统性能。

ADDM不仅建议问题诊断,还为问题提供可能的解决方案。ADDMDBA推荐一种或多种解决方案,其中包括各种推荐的解决方案,包括:

  • 硬件变更
  • 数据库配置
  • 模式变更
  • 申请变更
  • 使用其他顾问

ADDM分析

一个ADDM分析  在执行 一对 AWR快照 集合 从实例的等效信息。这对AWR快照概述了分析的时间段,实例集定义了分析的目标。

如果您使用的是Oracle Real Application Clusters Oracle RAC

按照对数据库性能的潜在影响的顺序列出了发现(问题),以及解决该问题和导致其发现的症状的建议。

来自示例我的测试实例如下所示。

 

使用addmrpt.sql脚本运行ADDM

  • 要调用ADDM分析,只需在SQL提示符下运行addmrpt.sql脚本。该脚本的调用方式如下:

SQL> @?/rdbms/admin/addmrpt.sql

 

Current Instance

~~~~~~~~~~~~~~~~

 

DB Id DB Name Inst Num Instance

----------- ------------ -------- ------------

936252554 POCD 1 POCD

 

 

 

 

 

Instances in this Workload Repository schema

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DB Id Inst Num DB Name Instance Host

------------ ---------- --------- ---------- ------

* 936252554 1 POCD POCD mac60-1

 

Using 936252554 for database Id

Using 1 for instance number

 

 

Specify the number of days of snapshots to choose from

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Entering the number of days (n) will result in the most recent

(n) days of snapshots being listed. Pressing without

specifying a number lists all completed snapshots.

 

 

 

Listing the last 3 days of Completed Snapshots

Instance DB Name Snap Id Snap Started Snap Level

------------ ------------ ---------- ------------------ ----------

POCD POCD 1052 26 Feb 2018 08:00 1

1053 26 Feb 2018 08:30 1

1054 26 Feb 2018 09:00 1

1055 26 Feb 2018 09:30 1

1056 26 Feb 2018 10:00 1

1057 26 Feb 2018 10:30 1

1058 26 Feb 2018 11:00 1

1059 26 Feb 2018 11:30 1

Specify the Begin and End Snapshot Ids

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Enter value for begin_snap: 1058

Begin Snapshot Id specified: 1058

 

Enter value for end_snap: 1059

End Snapshot Id specified: 1059

 

 

 

Specify the Report Name

~~~~~~~~~~~~~~~~~~~~~~~

The default report file name is addmrpt_1_1058_1059.txt. To use this name,

press to continue, otherwise enter an alternative.

 

Enter value for report_name: addm_recent.txt

 

非系统用户生成addm报告所需的特权:

sqlplus / as sysdba

GRANT ADVISOR TO REPORT_USER;

GRANT SELECT_CATALOG_ROLE TO REPORT_USER;

GRANT EXECUTE ON dbms_workload_repository TO REPORT_USER;

使用ADDM诊断性能问题

为了诊断性能问题,每次查看AWR快照时都会自动创建ADDM分析结果。如果需要较长的分析时间,或者要使用其他DBIO_EXPECTED设置,或者需要更改分析模式,则可以手动运行ADDM 

ADDM分析两个AWR快照条件,因为两个快照仍存储在AWR中,并分析在开始快照之前启动并一直运行到结束快照的实例

只要有可能,就应该使用Oracle Enterprise Manager运行ADDM。如果Oracle Enterprise Manager不可用,则可以使用DBMS_ADDM软件包(11g)运行ADDM 。要运行DBMS_ADDM API,必须授予用户ADVISOR特权

数据库模式下的ADDM

RAC配置中,可以在数据库模式下运行ADDM以分析数据库的所有实例。对于单实例配置,您仍然可以在数据库模式下运行ADDM ADDM的行为就像在实例模式下运行一样。

  • task_name [指定将要创建的分析任务的名称]
  • begin_snapshot [指定分析期间内开始快照的快照编号]
  • end_snapshot [分析期间结束快照的快照编号]
  • db_id [将要分析的数据库的数据库标识符]

 

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

在特定时间段120130,以数据库分析模式创建ADDM任务,并执行该任务以诊断整个数据库的性能:

VAR tname VARCHAR2(30);

BEGIN

  :tname := 'ADDM for 7AM to 9AM';

  DBMS_ADDM.ANALYZE_DB(:tname, 120, 130);

END;

/

实例模式下的ADDM

在实例模式下运行ADDM以分析数据库的特定实例。使用DBMS_ADDM.ANALYZE_INST过程:

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;

/

在实例分析模式下创建ADDM任务,并执行它以诊断实例数据库的性能,例如快照120130定义的时间段内实例1的性能:

VAR tname VARCHAR2(30);

BEGIN

  :tname := 'my ADDM for 7AM to 9AM';

  DBMS_ADDM.ANALYZE_INST(:tname, 120, 130, 1);

END;

/

部分模式下的ADDM

在部分模式下运行ADDM以使用 DBMS_ADDM.ANALYZE_PARTIAL 过程:

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;

/

快照120130定义的时间段内,以部分分析模式创建ADDM任务,并执行该任务以诊断实例编号124的性能:

VAR tname VARCHAR2(30);
BEGIN
  :tname := 'my ADDM for 7PM to 9PM';
  DBMS_ADDM.ANALYZE_PARTIAL(:tname, '1,2,4', 137, 145);
END;
/

 ADDM报告

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

DBMS_ADDM.GET_REPORT (

   task_name           IN VARCHAR2

  RETURN CLOB);

tname变量指定的ADDM任务的文本报告:

SET LONG 1000000 PAGESIZE 0;

SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值