暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

AWR信息的修改与AWR报告的生成

原创 eygle 2019-12-09
2433

1.AWR信息的修改

缺省的,数据库每小时采样一次AWR数据,保留7天,这些定义是可以被修改的。DBA可以通过DBMS_WORKLOAD_REPOSITORY包来控制AWR的行为。

通过如下执行可以手工创建AWR采样点,在进行测试时,在测试前后进行手工采样可以帮助我们获得完善的测试性能数据:

SQL> exec dbms_workload_repository.create_snapshot();

PL/SQL procedure successfully completed.
复制

创建的采样点,可以通过DBA_HIST_SNAPSHOT视图来查询。

除了手工创建采样点之外,数据库也允许我们手工删除采样点,这可以通过DBMS_WORKLOAD_REPOSITORY 包中的DROP_SNAPSHOT_RANGE过程来实现,该过程需要一个采样范围输入,然后删除指定范围内的AWR采样信息:

SQL> select snap_id from DBA_HIST_SNAPSHOT where rownum < 6;

   SNAP_ID
----------
      3860
      3886
      3887
      3888
      3889

SQL> exec dbms_workload_repository.drop_snapshot_range(low_snap_id=>3860,high_snap_id=>3889);

PL/SQL procedure successfully completed.

SQL> select snap_id from DBA_HIST_SNAPSHOT where rownum < 6;

   SNAP_ID
----------
      3890
      3891
      3892
      3893
      3894
复制

通过MODIFY_SNAPSHOT_SETTINGS 过程,还可以调整包括快照采样频率、快照保存时间、以及捕获的SQL 数量等信息。MODIFY_SNAPSHOT_SETTINGS 主要包含三个输入参数:

PROCEDURE MODIFY_SNAPSHOT_SETTINGS
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 RETENTION                      NUMBER                  IN     DEFAULT
 INTERVAL                       NUMBER                  IN     DEFAULT
 TOPNSQL                        NUMBER                  IN     DEFAULT
 DBID                           NUMBER                  IN     DEFAULT
复制

其含义分别如下:

  • Retention:设置快照保存的时间,单位是分钟,最小值为1 天,最大值为100年。如果该参数值设置为0 ,则表示永久保留快照信息。
  • Interval:设置快照的收集频率,以分钟为单位,最小值为10 分钟,最大值为1 年。如果设置该参数值为0,就表示禁用AWR 特性。
  • Topnsql:有两种方式指定该参数,如果给定值为NUMBER,则其含义为收集比较占用资源的SQL 数量,最小值为30,最大不超过100000000,这个设置会覆盖系统的statistics/flush 级别设置;如果这个参数设置为VARCHAR2,则允许的定义有: DEFAULT, MAXIMUM, N,这里的N同样指采样的Top SQL数量,DEFAULT参数受statistics level 影响,在TYPICAL设置下,采样Top 30,在ALL设置下采样Top 100 ,如果定义MAXIMUM 将引起系统采样和捕获所有的SQL。

如,修改采样间隔:

SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>120);

PL/SQL procedure successfully completed.

SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL                  RETENTION            TOPNSQL
---------- ------------------------------ -------------------- ----------
2310943069 +00000 02:00:00.0              +00007 00:00:00.0    DEFAULT
复制

同时修改采样间隔为30分钟,保留周期15天(时间以分钟计算):

SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>15*24*60);

PL/SQL procedure successfully completed.
复制

2.AWR报告的生成

根据AWR记录的数据,我们可以通过报告来展现这些信息。报告可以通过运行脚本生成类似statspack report的AWR报告,也可以通过Package直接输出。

脚本位于$ORACLE_HOME/rdbms/admin/awrrpt.sql,报表可以通过两种形式输出:TEXT和HTML。用脚本生成AWR报告的过程与生成Statspack报告非常类似,需要以sys用户执行这个脚本,执行过程需要选择报表类型、天数(用来决定显示那几天内的snapshot)、begin_snap、end_snap以及报表名称等5个参数。

如果不想手工输入参数,可以修改$ORACLE_HOME/rdbms/admin/awrrpti.sql文件,把需要用到的5个变量设置好,在执行过程中就不必再输入了,修改过的awrrpti.sql脚本可以用于自动生成报表。

以下是一个报告生成的简单示范过程,首先Oracle会要求我们指定报告类型:

SQL> @?/rdbms/admin/awrrpt
Current Instance
~~~~~~~~~~~~~~~~
   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
 3243092624 SMSBOSS             1 smsboss

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: text

Type Specified:  text
复制

定义文件格式之后,数据库会要求输入报告包含采样的时间段:

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

   DB Id     Inst Num DB Name      Instance     Host
------------ -------- ------------ ------------ ------------
* 3243092624        1 SMSBOSS      smsboss      db480-6

Using 3243092624 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: 2
复制

如果定义为2天之内,则2天之内的采样都会被列出供用户选择:

Listing the last 2 days of Completed Snapshots

                                                        Snap
Instance     DB Name        Snap Id    Snap Started    Level
------------ ------------ --------- ------------------ -----
smsboss      SMSBOSS          10735 15 Mar 2007 00:01      1
                              10736 15 Mar 2007 01:00      1
                              10737 15 Mar 2007 02:00      1
                              10738 15 Mar 2007 03:00      1
。。。。。。。。。。
                              10750 15 Mar 2007 15:00      1
                              10751 15 Mar 2007 16:00      1
                              10752 15 Mar 2007 17:00      1
                              10753 15 Mar 2007 18:00      1

Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 10735
Begin Snapshot Id specified: 10735

Enter value for end_snap: 10750
End   Snapshot Id specified: 10750
复制

完成类似问题的回答后,报告生成。

awrrpt.sql脚本实际上是调用DBMS_WORKLOAD_REPOSITORY包来生成报表,这个包中主要有两个函数用于生成报表:

  • DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT用于生成TEXT格式报表;
  • DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML用于生成HTML格式报表。

例如,以下命令将和之前的定义等价:

select * from 
table(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(3243092624,1,10735,10756));
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 1.AWR信息的修改
  • 2.AWR报告的生成