How to generate AWR report manually

一. AWR 说明

            Oracle 10g之前对数据库做性能检测使用statspack工具. Oracle Database 10g 提供了一个新的工具:(AWR:Automatic Workload Repository)。Oracle 建议用户用这个取代 Statspack。AWR 实质上是一个 Oracle 的内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。与Statspack 不同,快照由一个称为 MMON 的新的后台进程及其从进程自动地每小时采集一次。为了节省空间,采集的数据在 7 天后自动清除。快照频率和保留时间都可以由用户修改。它产生两种类型的输出:文本格式(类似于 Statspack 报表的文本格式但来自于 AWR 信息库)和默认的 HTML 格式(拥有到部分和子部分的所有超链接)。

            AWR 使用几个表来存储采集的统计数据,所有的表都存储在新的名称为 SYSAUX 的特定表空间中的 SYS 模式下,并且以 WRM$_* 和 WRH$_* 的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。H 代表“历史数据 (historical)”而 M 代表“元数据(metadata)”。在这些表上构建了几种带前缀 DBA_HIST_ 的视图,这些视图可以用来编写您自己的性能诊断工具。视图的名称直接与表相关;例如,视图DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构建的。

 
注意一点:
            statistics_level 有三个取值,分别是ALL,TYPICAL,BASIC,系统默认是typical,在10g中表监控是激活的,强烈建议在10g中此参数的值是typical。如果STATISTICS_LEVEL设置为basic,不仅不能监控表,而且将禁掉如下一些10g的新功能:
            ASH(Active Session History)
            ASSM(Automatic Shared Memory Management)
            AWR(Automatic Workload Repository)
            ADDM(Automatic Database Diagnostic Monitor)


二.  手动产生AWR报告
如果安装了OEM,则可以通过OEM来产生AWR报告,本例通过手动的产出AWR报告。
SQL> @?/rdbms/admin/awrrpt.sql

Current Instance
~~~~~~~~~~~~~~~~

   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
 2100083002 TEST                1 test


Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type: html

Type Specified:  html


Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   DB Id     Inst Num DB Name      Instance     Host
------------ -------- ------------ ------------ ------------
* 2100083002        1 TEST         test         even.oracle.
                                                com

Using 2100083002 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 <return> without
specifying a number lists all completed snapshots.


 

Enter value for num_days: 1

Listing the last day's Completed Snapshots

                                                        Snap
Instance     DB Name        Snap Id    Snap Started    Level
------------ ------------ --------- ------------------ -----
test         TEST                12 20 Dec 2012 10:38      1
                                 13 20 Dec 2012 11:17      1
                                 14 20 Dec 2012 11:42      1
                                 15 20 Dec 2012 11:42      1
                                 16 20 Dec 2012 11:42      1
                                 17 20 Dec 2012 13:00      1
                                 18 20 Dec 2012 13:37      1
                                 19 20 Dec 2012 13:50      1
                                 20 20 Dec 2012 14:00      1
                                 21 20 Dec 2012 14:10      1
                                 22 20 Dec 2012 14:20      1
                                 23 20 Dec 2012 14:30      1
                                 24 20 Dec 2012 14:40      1
                                 25 20 Dec 2012 14:50      1
                                 26 20 Dec 2012 15:00      1
                                 27 20 Dec 2012 15:10      1
                                 28 20 Dec 2012 15:20      1
                                 29 20 Dec 2012 15:30      1
                                 30 20 Dec 2012 15:40      1
                                 31 20 Dec 2012 15:50      1
                                 32 20 Dec 2012 16:36      1

 

Specify the Begin and End Snapshot Ids

Enter value for begin_snap: 30
Begin Snapshot Id specified: 30

Enter value for end_snap: 32
End   Snapshot Id specified: 32

 

Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_30_32.html.  To use this name,
press <return> to continue, otherwise enter an alternative.

Enter value for report_name: /home/oracle/20121231_AWR_rpt.html
......
.....
......
......
 

Report written to /home/oracle/20121231_AWR_rpt.html

到此AWR report就产生了,我的报表在/home/oracle/20121231_AWR_rpt.html

 

三.  AWR 操作

3.1. 查看当前的AWR保存策略

SQL> col SNAP_INTERVAL format a18
SQL> col retention format a18
SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL      RETENTION          TOPNSQL
---------- ------------------ ------------------ ----------
2100083002 +00000 01:00:00.0  +00031 00:00:00.0  DEFAULT


以上结果表示,每小时产生一个SNAPSHOT,保留31天,注意系统默认是保留7天,这里的31天是我修改的。

 

3.2. 调整AWR配置
AWR配置都是通过dbms_workload_repository包进行配置。
提示:调用DBMS_WORKLOAD_REPOSITORY包需要拥有DBA权限。
3.2.1 调整AWR产生snapshot的频率和保留策略,如将收集间隔时间改为30 分钟一次。并且保留5天时间(单位都是分钟):
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>5*24*60);

PL/SQL procedure successfully completed.

SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL      RETENTION          TOPNSQL
---------- ------------------ ------------------ ----------
2100083002 +00000 00:30:00.0  +00005 00:00:00.0  DEFAULT

以上结果表示,每30分钟产生一个SNAPSHOT,保留5天。
 

3.2.2 关闭AWR,把interval设为0则关闭自动捕捉快照
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>0);

 
3.2.3 手工创建一个快照
SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

 
3.2.4 查看快照
SQL> select * from sys.wrh$_active_session_history

 

3.2.5 手工删除指定范围的快照
SQL> select distinct snap_id,dbid from wrh$_active_session_history order by 1;

   SNAP_ID       DBID
---------- ----------
         1 2100083002
         2 2100083002
         3 2100083002
         4 2100083002
         5 2100083002
         6 2100083002
         7 2100083002
         8 2100083002
         9 2100083002
        10 2100083002
        11 2100083002
        12 2100083002
        13 2100083002
        14 2100083002
        17 2100083002
        18 2100083002
        25 2100083002
        26 2100083002
        27 2100083002
        32 2100083002
        33 2100083002

21 rows selected.

SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 12, high_snap_id => 18, dbid => 2100083002);

PL/SQL procedure successfully completed.

SQL> select distinct snap_id,dbid from wrh$_active_session_history order by 1;

   SNAP_ID       DBID
---------- ----------
         1 2100083002
         2 2100083002
         3 2100083002
         4 2100083002
         5 2100083002
         6 2100083002
         7 2100083002
         8 2100083002
         9 2100083002
        10 2100083002
        11 2100083002
        25 2100083002
        26 2100083002
        27 2100083002
        32 2100083002
        33 2100083002

16 rows selected.
从上面再次查询wrh$_active_session_history可以看出snap_id 从12到18的被删除了。

3.2.6 创建baseline,保存这些数据用于将来分析和比较
SQL> exec dbms_workload_repository.create_baseline(32,33,'my_baseline_1');

PL/SQL procedure successfully completed.

 
3.2.7 删除baseline
SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'my_baseline_1', cascade => true);

PL/SQL procedure successfully completed.

注意的一个问题,AWR 报告的两个snap 之间不能有重启DB的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值