首页 数据库

写在前面

大家在使用数据库的过程中,如果想对数据库在各个时点的参数进行监控,就需要用到数据库快照。数据库安装完成后,数据库快照功能默认是关闭的。数据库快照是一个只读的静态的数据库。DM快照功能是基于数据库实现的,每个快照是基于数据库的只读镜像。通过检索快照,可以获取源数据库在快照创建时间点的相关数据信息。本文就将给大家介绍如何生成数据库快照以及AWR报告
启用DM快照需要调用DBMS_WORKLOAD_REPOSITORY包
【注:DM MPP环境下不支持DBMS_WORKLOAD_REPOSITORY包】

用户在使用 DBMS_WORKLOAD_REPOSITORY 包之前,需要提前调用系统过程并设置间隔时间:

SP_INIT_AWR_SYS(1);

下面语句设置间隔为 10 分钟,也可以是其他值:

CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(10);

设置成功后,可以使用 CREATE_SNAPSHOT 手动创建快照,也可以等待设置的间隔时间后系统自动创建快照,快照 id 从 1 开始递增:
手动创建快照:

DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

查看创建的快照信息,包括快照 id:

SELECT * FROM SYS.WRM$_SNAPSHOT;

查看 snapshot 的 id 在 1~2 范围内的 AWR 分析报告的带 html 格式的内容。然后复制到文本文件中,保存成 html 格式即可查看。

SELECT * FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(1,2));

把 snapshot 的 id 在 1~2 范围内的 AWR 分析报告生成到 c 盘 awr1.html 文件。

SYS.AWR_REPORT_HTML(1,2,'C:\','AWR1.HTML');

通过 DMBS_WORKLOAD_REPOSITORY 包还可以对快照本身做增删改操作。
例 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);

微信图片_20210706102844.png
SQL Ordered by Elapsed Time 的内容就是慢查询语句哦O_O。


文章评论