关于达梦数据库的awr使用有如下总结:
1、初始化awr。awr报告在达梦数据库中不是搭好后自动就开启的,需要先初始化一下:
SQL> sp_init_awr_sys(1); sp_init_awr_sys(1); [-7014]:创建数据文件失败 -7014: anonymous block line 16 . 已用时间: 16.397(毫秒). 执行号:0. |
这里的报错是因为之前初始化过awr报告,而后留下了参与文件。可以看告警日志得到如下告警:
移除这个文件后我们重新执行初始化命令,发现已经可以成功执行命令了。
SQL> sp_init_awr_sys(1); DMSQL 过程已成功完成 已用时间: 00:00:01.080. 执行号:601. SQL> |
在达梦数据库中sysaux表空间仅用于存放awr快照,我们可以用如下方式删除或重建sysaux表空间:
删除sysaux表空间:
SQL> SP_INIT_AWR_SYS(0); DMSQL 过程已成功完成 已用时间: 00:00:01.531. 执行号:508. SQL> select 2 t.name 表空间, 3 d.total_size*SF_GET_PAGE_SIZE()/1024/1024 4 ||'M' 总空间, 5 (d.total_size*SF_GET_PAGE_SIZE()/1024/1024)-(d.free_size*SF_GET_PAGE_SIZE()/1024/1024) 6 ||'M' 已使用空间, 7 d.free_size*100/d.total_size||'%' "空闲百分比" 8 from 9 v$tablespace t, 10 v$datafile d 11 where 12 t.id=d.group_id; 行号 表空间 总空间 已使用空间 空闲百分比 ---------- --------- --------- --------------- --------------- 1 SYSTEM 180M 19M 89% 2 MAIN 128M 1M 99% 3 TEMP 74M 1M 99% 4 ROLL 222M 138M 38% 已用时间: 1.703(毫秒). 执行号:509. –此时SYSAUX消失了 |
重建sysaux表空间:
SQL> SP_INIT_AWR_SYS(1); DMSQL 过程已成功完成 已用时间: 946.971(毫秒). 执行号:510. SQL> select 2 t.name 表空间, 3 d.total_size*SF_GET_PAGE_SIZE()/1024/1024 4 ||'M' 总空间, 5 (d.total_size*SF_GET_PAGE_SIZE()/1024/1024)-(d.free_size*SF_GET_PAGE_SIZE()/1024/1024) 6 ||'M' 已使用空间, 7 d.free_size*100/d.total_size||'%' "空闲百分比" 8 from 9 v$tablespace t, 10 v$datafile d 11 where 12 t.id=d.group_id; 行号 表空间 总空间 已使用空间 空闲百分比 ---------- --------- --------- --------------- --------------- 1 SYSTEM 180M 19M 89% 2 SYSAUX 162M 7M 95% --SYSAUX重建完毕 3 MAIN 128M 1M 99% 4 TEMP 74M 1M 99% 5 ROLL 222M 138M 38% |
2、相关方法
AWR_CLEAR_HISTORY(); 清理之前的所有 snapshot 记录。 AWR_SET_INTERVAL(); 设置生成 snapshot 的时间间隔。 AWR_REPORT_HTML ;生成 html 格式的报告 AWR_REPORT_TEXT;生成 text 格式的报告 CREATE_SNAPSHOT;创建一次快照 snapshot DROP_SNAPSHOT_RANGE;删除 snapshot。 MODIFY_SNAPSHOT_SETTINGS;设置 snapshot 的属性值。 |
这里比较有趣的是AWR_SET_INTERVAL和MODIFY_SNAPSHOT_SETTINGS都可以修改快照生成间隔。只是MODIFY_SNAPSHOT_SETTINGS还可以修改快照保留时长:
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(10080,60); --快照保留时长为7天,快照间隔为1小时 AWR_SET_INTERVAL(60); --仅修改快照生成间隔为1小时 |
然后发现CREATE_SNAPSHOT手动创建快照,必须在自动生成快照成功后再调用才有效:
自动生成快照后会发现:
DROP_SNAPSHOT_RANGE可以范围删除快照:
AWR_CLEAR_HISTORY可以清空所有快照:
3、说两个最实用的基表
1)如前文提到的SYS.WRM$_SNAPSHOT表,用于查看awr的快照信息
2)SYS.WRM$_WR_CONTROL表,用于查看快照保留策略
达梦数据库技术社区:https://eco.dameng.com