ITPub博客

首页 > 数据库 > Oracle > AWR的Snapshots讲解

AWR的Snapshots讲解

原创 Oracle 作者:wolaiye320 时间:2016-06-23 09:45:05 0 删除 编辑

1 Snapshots(快照)

 

 

前面操作报表生成时,snap 这个关键字已经出现过黑多黑多次了,想必你对它充满了 疑惑,这个东西是哪尬来的咋来的谁让它来的呢?事实上,Snap 是 Snapshot 的简写,这正 是 AWR 在自动性方面的体现,虽然你没有创建,但是 AWR 自动帮你创建了(当然也可以手 动创建 snapshot),并且是定时(每小时)创建,定期清除(保留最近 7 天)。

 

Snapshots 是一组某个时间点时历史数据的集合,这些数据就可被 ADDM(Automatic Database Diagnostic Monitor)用来做性能对比。默认情况下,AWR 能够自动以每小时一次的 频率生成 Snapshots 性能数据, 并保留 7 天,,如果需要的话, DBA 可以通过

DBMS_WORKLOAD_REPOSITORY 过程手动创建、删除或修改 snapshots。 提示:调用 DBMS_WORKLOAD_REPOSITORY 包需要拥有 DBA 权限。


1 手动创建 Snapshots

 

手动创建 Snapshots,通过 DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT

 

过程,例如:


SQL> exec dbms_workload_repository.create_snapshot();


PL/SQL procedure successfully completed.

 

然后可以通过 DBA_HIST_SNAPSHOT 视图查看刚刚创建的 Snapshots 信息。

 

2   手动删除 Snapshots

 

删 除 Snapshots 是使用 DBMS_WORKLOAD_REPOSITORY 包的另一个过程: DROP_SNAPSHOT_RANGE,该过程在执行时可以通过指定 snap_id 的范围的方式一次删除 多个 Snapshots,例如:

SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;


COUNT(0)


----------


10


SQL> begin


2          dbms_workload_repository.drop_snapshot_range(

 

3                  low_snap_id => 7509,

 

           4                  high_snap_id => 7518,


5                  dbid => 3812548755);

 

6       end;

 

7       /


PL/SQL procedure successfully completed.


SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;


COUNT(0)


----------


0

 

注意当 snapshots 被删除的话,与其关联的 ASH 记录也会级联删除。

 

3 修改 Snapshots 设置

 

通过 MODIFY_SNAPSHOT_SETTINGS 过程,DBA 可以调整包括快照收集频率、快照 保 存 时 间 、 以 及 捕 获 的 SQL 数 量 三 个 方 面 的 设 置 。 分 别 对 应

MODIFY_SNAPSHOT_SETTINGS 的三个参数:

 

?      Retention:设置快照保存的时间,单位是分钟。可设置的值最小为 1 天,最大为 100 年。设置该参数值为 0 的话,就表示永久保留收集的快照信息。

?      Interval:设置快照收集的频率,以分钟为单位。可设置的值最小为 10 分钟,最大

 

为 1 年。如果设置该参数值为 0,就表示禁用 AWR 特性。

 

?      Topnsql:指定收集的比较占用资源的 SQL 数量,可设置的值最小为 30,最大不超

 

过 100000000。

 

查看当前快照收集的相关设置,可以通过 DBA_HIST_WR_CONTROL 视图查看,例如:

 

SQL> select * from dba_hist_wr_control;

 

 

DBID SNAP_INTERVAL

RETENTION

TOPNSQL

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

 

3812548755 +00000 01:00:00.0

+00007 00:00:00.0

DEFAULT

 

又比如通过 MODIFY_SNAPSHOT_SETTTINGS 过程修改 snap_intrval 的设置:

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

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

 

3812548755 +00000 02:00:00.0

+00007 00:00:00.0

DEFAULT



2 Baselines(基线)

 

 

Baseline,直译的话叫做基线,顾名思义的方式理解,就是用于比较的基本线。因为 Baseline 中包含指定时间点时的性能数据,因此就可以用来与其它时间点时的状态数据做对 比,以分析性能问题。

 

创建 Baseline 时,Snapshots 是做为其中的一个组成部分存在,因此一般来说当 AWR 自动维护快照时,如果定义过 baseline,与 baseline 相关的快照不会被删除,即使是过期的 快照,这样就相当于手动保留了一份统计数据的历史信息,DBA 可以在适当的时间将其与 现有的快照进行对比,以生成相关的统计报表。

 

用户可以通过 DBMS_WORKLOAD_REPOSITORY 包中的相关过程,手动的创建或删

 

除 Baseline。

 

1   创建 Baseline

 

创建 Baseline 使用 CREATE_BASELINE 过程,执行该过程时分别指定开始和结果的 snap_id,然后为该 baseline 定义一个名称即可,例如:

SQL> BEGIN

2                DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id =>

7550,

 

3

end_snap_id   => 7660,

4

baseline_name => 'am_baseline');


5       END;

 

6       /


PL/SQL procedure successfully completed.


SQL> select dbid,baseline_name,start_snap_id,end_snap_id from dba_hist_baseline;

 

DBID BASELINE_NAME

START_SNAP_ID END_SNAP_ID

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

 

3812548755 am_baseline

7550

7660

 

2 删除 Baseline

 

删除 Baseline 使用 DROP_BASELINE 过程,删除时可以通过 cascade 参数选择是否将

 

其关联的 Snapshots 级别进行删除,例如:

 

SQL> BEGIN

 

2

DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name  =>

'am_baseline',

 

 

3

cascade

=> true);


4       END;

 5       /


PL/SQL procedure successfully completed.

SQL> select * from dba_hist_baseline;

no rows selected

SQL> select * from dba_hist_snapshot where snap_id between 7550 and 7660;

no rows selected

 

如上例中所示,删除时指定了 cascade 参数值为 true,对应的 snap 也被级联删除了。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1700919/viewspace-2120780/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 查看AWR视图
下一篇: Oracle生成ASH报表
请登录后发表评论 登录
全部评论

注册时间:2008-06-23

  • 博文量
    19
  • 访问量
    827664