加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 数据库 > Oracle > 正文

Oracle AWR管理与维护

发布时间:2020-07-03 13:48:59 所属栏目:Oracle 来源:互联网
导读:AWR是Automatic Workload Repository的简称,中文叫着自动工作量资料档案库。对于AWR的管理,主要是针对快照和基线的管理而言。比如设定快照的间隔,删除快照,设定快照的保留时间。那对于基线而言则是基线的创建,删除,自动创建等。本文主要描述这2部分的内

AWR是Automatic Workload Repository的简称,中文叫着自动工作量资料档案库。对于AWR的管理,主要是针对快照和基线的管理而言。比如设定快照的间隔,删除快照,设定快照的保留时间。那对于基线而言则是基线的创建,删除,自动创建等。本文主要描述这2部分的内容。

一、快照管理

默认情况下,Oracle数据库每小时生成一次快照,并在工作负载库中保留8天的统计信息。必要时,你可以使用dbms_workload_repository程序手动创建,删除或者修改快照等。可以使用OEM以及dbms_workload_repository包管理快照。

1. 手动创建快照

使用以下过程手工创建快照,创建完成后可在数据字典DBA_HIST_SNAPSHOT查看所有快照相关信息。

BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
END;
/

SELECT snap_id,dbid,begin_interval_time,end_interval_time FROM dba_hist_snapshot ORDER BY end_interval_time DESC;

   SNAP_ID       DBID BEGIN_INTERVAL_TIME          END_INTERVAL_TIME
---------- ---------- ---------------------------- --------------------------
       164   41924548 14-APR-17 09.38.19.467 AM    14-APR-17 10.51.21.886 AM
       163   41924548 14-APR-17 09.00.10.470 AM    14-APR-17 09.38.19.467 AM
       162   41924548 14-APR-17 08.00.07.242 AM    14-APR-17 09.00.10.470 AM
       161   41924548 14-APR-17 07.00.04.120 AM    14-APR-17 08.00.07.242 AM

2. 删除快照

以下过程将删除snap_id从162到164的快照。在未指定41924548时,使用当前缺省的数据库

BEGIN DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE (low_snap_id => 162,high_snap_id => 164,dbid => 41924548);
END;
/

3. 修改快照的保留间隔

--查看当前的保留策略,如下,为缺省值,采集间隔为1小时,保留8天
SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL        RETENTION          TOPNSQL
---------- -------------------- ------------------ ----------
  41924548 +00000 01:00:00.0    +00008 00:00:00.0  DEFAULT

--下面将其修改为保留5天,采集间隔为30分钟,topnsql为50条
BEGIN
  DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 10*24*60,
                 interval => 30, topnsql => 50, dbid => 41924548);
END;
/

--查看修改后的结果
SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL        RETENTION          TOPNSQL
---------- -------------------- ------------------ ----------
  41924548 +00000 00:30:00.0    +00010 00:00:00.0  50

二、基线管理

AWR基线可以手工创建和删除,也可以自动创建和删除。对于自动创建基线则是首先要创建基线样本才能实现自动创建基线。主要描述如下。

1. 创建基线

基线的创建依赖于快照,因此在创建之前应该得到所需时间范围的snap_id,可以通过查询数据字典DBA_HIST_SNAPSHOT获得,同时在基线创建完成后可以从数据字典DBA_HIST_BASELINE查询基线相关信息。

BEGIN
    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (start_snap_id => 160,end_snap_id => 161,baseline_name => 'peak_baseline',dbid => 41924548,expiration => 10);
END;
/

SQL> SELECT baseline_id,2         baseline_name,3         baseline_type,4         expiration,5         creation_time
  6  FROM   dba_hist_baseline;

BASELINE_ID BASELINE_NAME           BASELINE_TYPE EXPIRATION CREATION_
----------- ----------------------- ------------- ---------- ---------
          1 peak_baseline           STATIC                10 14-APR-17
          0 SYSTEM_MOVING_WINDOW    MOVING_WINDOW            07-APR-17

--基于特定时间创建基线,如下示例
BEGIN
   DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (
      start_time      => TO_DATE ('2017-04-14 6:00:00','yyyy-mm-dd hh24:mi:ss'),end_time        => TO_DATE ('2017-04-14 8:00:00',baseline_name   => 'peak_baseline2',expiration      => 10);
END;
/

在上面的示例中,创建了一个范围为160-161的,名字为peak_baseline的基线,保留时间为10天。在超过10天后,该基线会被删除,相应的快照也被删除。如果为指定失效期,则该基线以及相应的快照被永久保留。

2. 删除基线

BEGIN DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'peak_baseline',cascade => FALSE,dbid => 41924548);
END;
/

在上面的示例中将删除名为peak_baseline的基线,同时指定了cascade为false,也就是说在删除基线的同时,不删除相应的快照。

3. 基线重命名

BEGIN
    DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (
                   old_baseline_name => 'peak_baseline',new_baseline_name => 'peak_mondays',dbid => 41924548);
END;
/

--验证结果
SQL> SELECT baseline_id,5         creation_time
  6  FROM   dba_hist_baseline;

BASELINE_ID BASELINE_NAME           BASELINE_TYPE EXPIRATION CREATION_
----------- ----------------------- ------------- ---------- ---------
          1 peak_mondays            STATIC                10 14-APR-17
          0 SYSTEM_MOVING_WINDOW    MOVING_WINDOW            07-APR-17

在上面的示例中,将基线的名称由peak_baseline修改成peak_mondays。

4. 修改缺省移动窗口基线保留值

--查看缺省的window_size
SELECT baseline_name,baseline_type,moving_window_size FROM dba_hist_baseline WHERE baseline_name = 'SYSTEM_MOVING_WINDOW';

BASELINE_NAME            BASELINE_TYPE MOVING_WINDOW_SIZE
------------------------ ------------- ------------------
SYSTEM_MOVING_WINDOW     MOVING_WINDOW                  8

BEGIN DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE ( window_size => 7,dbid => 41924548);
END;
/

--window_size为天,只能够小于等于当前快照保留时间,否则报错,如下:

ERROR at line 1:
ORA-13541: system moving window baseline size (864000)
greater than retention (691200)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY",line 686
ORA-06512: at line 2

5. 管理基线样本

  • 创建单个基线模板
BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE ( start_time => TO_DATE ('2017-04-14 17:00:00',end_time => TO_DATE ('2017-04-14 19:00:00',baseline_name => 'baseline_140414',template_name => 'template_140414',expiration => 10,dbid => 41924548);
END;
/

--如果创建基线样本时间小于当前时间,则收到如下错误
ERROR at line 1:
ORA-13537: invalid input for create baseline template (end_time,end_time is less than SYSDATE) ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY",line 768 ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY",line 818 ORA-06512: at line 2

在上面的示例中,我们创建了一个单一的基线样本,并且指定了相应的时间范围,基线的名称及保留期限等。那么在这个时间范围内的相应的快照会被保留,同时这个基线可以用于后续在发现性能问题的时候进行比对。

  • 创建重复基线样本

重复的基线样本指的是在将来某个特定的时间范围内,Oracle会参照这个设定的样本自动为我们创建基线。比如,可以创建一个重复的基线样本,使得在2017年每周一9:00-11:00自动生成基线。

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

BEGIN
   DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
      day_of_week            => 'monday',hour_in_day            => 9,duration               => 2,expiration             => 30,start_time             => '2017-04-14 09:00:00',end_time               => '2017-12-31 11:00:00',baseline_name_prefix   => 'baseline_2017_mondays_',template_name          => 'template_2017_mondays',dbid                   => 41924548);
END;
/

-- Author     : Leshami
-- Blog       : http://blog.csdn.net/leshami
-- QQ(Weixin) : 645746311

--查看已经创建的基线样本
SQL> select t.template_name,2       t.template_type,3       t.start_time,4       t.end_time,5       t.day_of_week,6       t.hour_in_day,7       t.duration
  8  from dba_hist_baseline_template t;

TEMPLATE_NAME         TEMPLATE_ START_TIME          END_TIME            DAY_OF_WE HOUR_IN_DAY DURATION
--------------------- --------- ------------------- ------------------- --------- ----------- --------
template_140414       SINGLE    2017-04-14 17:00:00 2017-04-14 19:00:00
template_2017_mondays REPEATING 2017-04-14 09:00:00 2017-12-31 11:00:00 MONDAY             17        3

在上面的示例中我们创建了一个重复从2017年4月14日起的每周一(day_of_week)会自动生成一个基线,其开始时间为9点(hour_in_day),其持续时间为2小时(duration),有效期为30天(expiration),整个基线的起止时间范围为:2017-04-14 09:00:00至2017-12-31 11:00:00,同时也指定了基线样本的名称以及基线前缀名称。

  • 基线样本的删除
BEGIN DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE ( template_name => 'template_140414',dbid => 41924548);
END;
/

在上面的示例中我们删除之前创建的基线样本,通过指定样本名称即可。

三、AWR空间占用

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读