数据库快照是一个只读的静态的数据库。DM快照功能是基于数据库实现的,每个快照是基于数据库的只读镜像。通过检索快照,可以获取源数据库在快照创建时间点的相关数据信息。

为了方便管理自动工作集负载信息库AWR(Automatic Workload Repository)的信息,系统为其所有重要统计信息和负载信息执行一次快照,并将这些快照存储在AWR中。AWR功能默认是关闭的,如果需要开启,则调用DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL过程设置快照的间隔时间。DBMS_WORKLOAD_REPOSITORY包还负责snapshot(快照)的管理。

注意:DM数据库在创建该包时,默认创建一个名为SYSAUX的表空间,对应的数据文件为SYSAWR.DBF,该表空间用于存储该包生成快照的数据。如果该包被删除,那么SYSAUX表空间也对应地被删除。

DM MPP环境下不支持DBMS_WORKLOAD_REPOSITORY包。

使用方法:

1、启用系统包和AWR包:

CALL SP_INIT_AWR_SYS(1);
CALL SP_CREATE_SYSTEM_PACKAGES(1);

2、查询AWR快照:

select * from SYS.WRM$_SNAPSHOT;

3、清理之前的所有快照记录

CALL DBMS_WORKLOAD_REPOSITORY.AWR_CLEAR_HISTORY();

4、设置快照间隔,如果不设置快照间隔,手动执行快照后SYS.WRM$_SNAPSHOT视图中没有记录:

CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(60); #每60分钟生成一次快照

5、可在两个时间点分别手动创建快照,或者等待系统自动生成:

手动创建快照:CALL DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

6、查询AWR快照:

SELECT * FROM SYS.WRM$_SNAPSHOT;

7、创建AWR报告

SYS.AWR_REPORT_HTML(快照ID1,快照ID2,'AWR报告存放路径','AWR报告名称.HTLM');:
例如:SYS.AWR_REPORT_HTML(1,2,'/home/dmdba','AWR1.HTML');

8、AWR报告生成后关闭AWR包

CALL SP_INIT_AWR_SYS(0);

例1 删除id在22~32之间的snapshot。

CALL DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(22,32);

例2 修改snapshot的间隔时间为30分钟、保留时间为1天。

CALL DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(1440,30);

查询设置后快照参数。

SELECT * FROM SYS.WRM$_WR_CONTROL;

例3 创建一次snapshot。

CALL DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

例4 清理全部snapshot。

CALL DBMS_WORKLOAD_REPOSITORY.AWR_CLEAR_HISTORY();

例5 设置snapshot的间隔为10分钟。

CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(10);