AWR 全称为自动工作集负载信息库(Automatic Workload Repository) ,采集数据库的性能相关数据,用来分析数据库性能问题,方便调优工作。 达梦中 awr 功能默认是关闭的,另外 mpp 集群不支持 awr
开启 AWR 功能
检查 awr 开启状态
达梦提供了 SF_CHECK_AWR_SYS 函数来检测系统包启用状态, 0:未启用; 1:已启用
select sf_check_awr_sys;
达梦默认未开启AWR,返回0代表还未生成awr相关对象
创建 AWR 包
达梦中可以使用 SP_INIT_AWR_SYS 过程来创建或者删除 AWR 相关对象
入参为 1 时候表示创建 DBMS_WORKLOAD_REPOSITORY 包及相关对象
入参为 0 时表示删除 DBMS_WORKLOAD_REPOSITORY 包及相关对象
SQL> SP_INIT_AWR_SYS(1);
DMSQL 过程已成功完成
已用时间: 00:00:01.575. 执行号:801
创建 AWR 相关对象时候,系统会自动生成 sysaux 表空间,用来存储 awr 相关数据.
SQL> select ID,NAME,USED_SIZE,TOTAL_SIZE from SYS."V$TABLESPACE";
可以看到调用过程后生成了 SYSAUX 表空间。
查看一下在 sysaux 表空间上存放了哪些对象, 都是 AWR 的数据源表
SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, HEADER_BLOCK, BYTES, BLOCKS
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME = 'SYSAUX'
ORDER BY DECODE(SEGMENT_TYPE, 'TABLE', 1, 'TABLE PARTITION', 2, 99);
当然还有其他对象
SELECT OBJECT_NAME,OBJECT_TYPE FROM SYS.DBA_OBJECTS WHERE CREATED >
TO_DATE('2022-08-17 17:30:48','YYYY-MM-DD HH24:MI:SS');
在这里碰到了一个问题疑似bug ,设置了ORA_DATE_FMT=1
此参数解释为 #Whether support oracle date fmt: 0:No, 1:Yes
设置此参数后awr包提示编译错误,无法编译,修改ORA_DATE_FMT=0后,重新生成awr对象才成功
设置间隔时间
创建 awr 包及相关对象后,需要设置快照采集时间间隔,单位分钟。有效范围为 [10, 525600],
默认值为 60。参数为 0 时,关闭快照
我这里设置间隔为 10 分钟, 设置成功后,可以使用 CREATE_SNAPSHOT 手动创建快照,
也可以等待设置的间隔时间后系统自动创建快照,快照 id 从 1 开始递增
SQL> CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(10);
SELECT * FROM sys.WRM$_SNAPSHOT;
设置快照保留时间
可以使用 MODIFY_SNAPSHOT_SETTINGS 过程设置快照保留时间和采集时间
CALL DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(1440,30);
--设置快照保留时间为 1 天,采集时间为 30 分钟。
手工创建快照
如果不想等快照间隔自动生成, 可以直接调用 CREATE_SNAPSHOT 生成一个快照
CALL DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
查看生成的快照 sys.WRM$_SNAPSHOT
抽取 awr 报告
-
通过awr包的awr_report_html函数
SELECT * FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(2,3));
将查询结果复制到文本文件中,保存成 html 格式直接打开即可查看
- 也可以使用SYS.AWR_REPORT_HTML过程直接生成awr报告到指定目录下
SQL> SYS.AWR_REPORT_HTML(2,3,'/opt/dmdbms','awr02.HTML');
DMSQL 过程已成功完成
已用时间: 117.449(毫秒). 执行号:509.
awr快照的相关操作命令,跟Oracle几乎一致
报告的结构跟Oracle比较相似
第一部分: awr文件表头信息
这部分内容主要是针对数据库实例和硬件环境的一些基本信息。
第二部分:报告汇总信息
主要是内存组件方面的使用情况
第三部分:load profile
每秒redo日志产生大小,物理读,逻辑读,包括sql每秒的解析情况
第4部分内容: 命中率和等待事件top
提供了各项性能指标的命中率,TOP等待事件
第五部分:报告主体
这部分内容主要是一些更为详细的细化信息了,比如等待事件,IO信息,锁信息,undo相关信息,以及字典cache相关信息,TOP SQL等