达梦awr
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);
当然还有其他对象
SQL> 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报告
文章
阅读量
获赞