重庆思庄Oracle、、PostgreSQL、Redhat认证学习论坛
标题: 达梦8数据库如何获取AWR报告 [打印本页]
作者: 郑全 时间: 5 天前
标题: 达梦8数据库如何获取AWR报告
本帖最后由 郑全 于 2025-5-9 15:17 编辑
相信搞过ORACLE数据库的,一定对AWR不陌生,作为最像ORACLE的数据库,是否有AWR呢?
答案是肯定的。
下面以一个实例例子来演示
1.创建DBMS_WORKLOAD_REPOSITORY系统包
- 查看DBMS_WORKLOAD_REPOSITORY系统包启用状态
SQL> SELECT sf_check_awr_sys;
行号 SF_CHECK_AWR_SYS
---------- ----------------
1 0
已用时间: 1.575(毫秒). 执行号:601.
SF_CHECK_AWR_SYS 返回值
0:未启用;1:已启用
发现默认是没有开启
- 创建DBMS_WORKLOAD_REPOSITORY系统包
SQL> SP_INIT_AWR_SYS(1);
DMSQL 过程已成功完成
已用时间: 00:00:02.351. 执行号:605.
SQL> SELECT SF_CHECK_AWR_SYS;
行号 SF_CHECK_AWR_SYS
---------- ----------------
1 1
已用时间: 0.379(毫秒). 执行号:606.
用户在使用 DBMS_WORKLOAD_REPOSITORY 包之前,需要提前调用系统过程 SP_INIT_AWR_SYS(1)创建包。DM 数据库在创建该包时,默认创建一个名为 SYSAUX 的表空间,对应的数据文件为 SYSAWR.DBF,该表空间用于存储该包生成快照的数据。如果该包被删除,那么 SYSAUX 表空间也对应地被删除。
SQL> select tablespace_name from dba_tablespaces;
行号 TABLESPACE_NAME
---------- ---------------
1 SYSTEM
2 ROLL
3 TEMP
4 MAIN
5 BOOKSHOP
6 DMHR
7 COMPANY
8 COMPANY1
9 SYSAUX
10 MAIN
10 rows got
已用时间: 9.522(毫秒). 执行号:607.
2.开启AWR功能
- 调用 DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL 过程设置快照的间隔时间
STATUS_FLA值为变为1。即为开启AWR功能。
SQL> CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(10);
DMSQL 过程已成功完成
已用时间: 174.919(毫秒). 执行号:608.
SQL> select * from SYS.WRM$_WR_CONTROL;
行号 DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- ----------- ----------------------------------------- ---------------------------------------- -----------
STATUS_FLAG
-----------
1 NULL INTERVAL '0 0:10:0.0' DAY(5) TO SECOND(1) INTERVAL '8 0:0:0.0' DAY(5) TO SECOND(1) 30
1
已用时间: 1.018(毫秒). 执行号:609.
AWR_INTERVAL
时间间隔。单位分钟,取值范围为 10~525600,缺省值为 60。参数为 0 时,关闭快照(关闭时参数值为 57816000 分钟(110 年),是一个无效的值)。
RETENTION
快照保留时间由快照信息管理表 WRM$_WR_CONTROL 中 RETENTION 列决定,RETENTION 列默认为 8 天,可以使用 MODIFY_SNAPSHOT_SETTINGS 接口进行修改。每次创建新的快照创建新的分区子表前对当前所有快照进行扫描,找到已过期的快照。
3.调整AWR快照保留时间(可选)
默认snapshot 的保留时间为 8 天、间隔时间为 60分钟。
修改 snapshot 的保留时间为 1 天(1440分钟)、间隔时间为 30 分钟。参数单位均为分钟。
SQL> CALL DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(1440,30);
DMSQL 过程已成功完成
已用时间: 13.287(毫秒). 执行号:610.
SQL> select * from SYS.WRM$_WR_CONTROL;
行号 DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- ----------- ----------------------------------------- ---------------------------------------- -----------
STATUS_FLAG
-----------
1 NULL INTERVAL '0 0:30:0.0' DAY(5) TO SECOND(1) INTERVAL '1 0:0:0.0' DAY(5) TO SECOND(1) 30
1
4.创建AWR快照[color=rgba(0, 0, 0, 0.75)]手动创建快照
SQL> DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
DMSQL 过程已成功完成
已用时间: 836.175(毫秒). 执行号:613.
SQL> SELECT * FROM SYS.WRM$_SNAPSHOT;
行号 SNAP_ID DBID INSTANCE_NUMBER STARTUP_TIME BEGIN_INTERVAL_TIME
---------- ----------- ----------- --------------- -------------------------- --------------------------
END_INTERVAL_TIME FLUSH_ELAPSED SNAP_LEVEL STATUS ERROR_COUNT BL_MOVED SNAP_FLAG
-------------------------- ------------- ----------- ----------- ----------- ----------- -----------
SNAP_TIMEZONE BEGIN_INTERVAL_TIME_TZ END_INTERVAL_TIME_TZ
-------------------------------------- --------------------------------- ---------------------------------
1 1 NULL 1 2025-05-09 07:14:31.000000 2025-05-09 14:43:56.857000
2025-05-09 14:43:57.688000 NULL 1 NULL NULL NULL NULL
INTERVAL '0 8:0:0' DAY(1) TO SECOND(0) 2025-05-09 14:43:56.857000 +08:00 2025-05-09 14:43:57.688000 +08:00
已用时间: 0.843(毫秒). 执行号:611.
SQL> DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
DMSQL 过程已成功完成
已用时间: 722.822(毫秒). 执行号:615.
SQL> SELECT * FROM SYS.WRM$_SNAPSHOT;
行号 SNAP_ID DBID INSTANCE_NUMBER STARTUP_TIME BEGIN_INTERVAL_TIME
---------- ----------- ----------- --------------- -------------------------- --------------------------
END_INTERVAL_TIME FLUSH_ELAPSED SNAP_LEVEL STATUS ERROR_COUNT BL_MOVED SNAP_FLAG
-------------------------- ------------- ----------- ----------- ----------- ----------- -----------
SNAP_TIMEZONE BEGIN_INTERVAL_TIME_TZ END_INTERVAL_TIME_TZ
-------------------------------------- --------------------------------- ---------------------------------
1 1 NULL 1 2025-05-09 07:14:31.000000 2025-05-09 14:43:56.857000
2025-05-09 14:43:57.688000 NULL 1 NULL NULL NULL NULL
INTERVAL '0 8:0:0' DAY(1) TO SECOND(0) 2025-05-09 14:43:56.857000 +08:00 2025-05-09 14:43:57.688000 +08:00
行号 SNAP_ID DBID INSTANCE_NUMBER STARTUP_TIME BEGIN_INTERVAL_TIME
---------- ----------- ----------- --------------- -------------------------- --------------------------
END_INTERVAL_TIME FLUSH_ELAPSED SNAP_LEVEL STATUS ERROR_COUNT BL_MOVED SNAP_FLAG
-------------------------- ------------- ----------- ----------- ----------- ----------- -----------
SNAP_TIMEZONE BEGIN_INTERVAL_TIME_TZ END_INTERVAL_TIME_TZ
-------------------------------------- --------------------------------- ---------------------------------
2 2 NULL 1 2025-05-09 07:14:31.000000 2025-05-09 14:44:28.514000
2025-05-09 14:44:29.237000 NULL 1 NULL NULL NULL NULL
INTERVAL '0 8:0:0' DAY(1) TO SECOND(0) 2025-05-09 14:44:28.514000 +08:00 2025-05-09 14:44:29.237000 +08:00
已用时间: 0.499(毫秒). 执行号:616.
5.收集AWR报告
- SYS.AWR_REPORT_HTML(推荐,方便)
把 snapshot 的 id 在 1~2 范围内的 AWR 分析报告生成到d:\DM_AWR_1_2.HTML 文件。
SQL> SYS.AWR_REPORT_HTML(1,2,'d:\','dm_awr_1_2.html');
DMSQL 过程已成功完成
已用时间: 384.842(毫秒). 执行号:617.
6.清理AWR快照过期快照定期删除
快照保留时间由快照信息管理表 WRM$_WR_CONTROL 中 RETENTION 列决定,RETENTION 列默认为 8 天,可以使用 MODIFY_SNAPSHOT_SETTINGS 接口进行修改。每次创建新的快照创建新的分区子表前对当前所有快照进行扫描,找到已过期的快照。
2.指定快照范围删除
删除快照范围之前创建的 snapshot
SQL> CALL DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(1,2);DMSQL executed successfully3.对全部快照进行删除SQL> CALL DBMS_WORKLOAD_REPOSITORY.AWR_CLEAR_HISTORY();DMSQL executed successfullySQL> SELECT * FROM SYS.WRM$_SNAPSHOT;no rows
4.查看AWR报告