大家好,这里是公众号 DBA学习之路 ,分享一些学习国产数据库路上的知识和经验。
社群交流 为了给大家提供一些技术交流的平台,目前已成立的技术交流群:
Oracle 数据库交流群
国产数据库交流群
Linux 技术交流群
ChatGPT 4o 免费体验群
需要进群(均已超过 200 人,需要邀请 )可以添加号主微信:Lucifer-0622,备注对应的群名即可。
目录
前言 经常有人在群里问这个问题:DM 有类似于 Oracle 的 AWR(Automatic Workload Repository)分析报告吗?
答案是:有。
AWR 介绍 数据库快照是一个只读的静态的数据库。DM 快照功能是基于数据库实现的,每个快照是基于数据库的只读镜像。通过检索快照,可以获取源数据库在快照创建时间点的相关数据信息。
为了方便管理自动工作集负载信息库 AWR(Automatic Workload Repository) 的信息,系统为其所有重要统计信息和负载信息执行一次快照,并将这些快照存储在 AWR 中。
用户在使用 DBMS_WORKLOAD_REPOSITORY 包之前,需要提前调用系统过程 SP_INIT_AWR_SYS(1) 创建包。DM 数据库在创建该包时,默认创建一个名为 SYSAUX 的表空间,对应的数据文件为 SYSAWR.DBF ,该表空间用于存储该包生成快照的数据。如果该包被删除,那么 SYSAUX 表空间也对应地被删除。
AWR 功能默认是关闭的,如果需要开启,则调用 DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL 过程设置快照的间隔时间。DBMS_WORKLOAD_REPOSITORY 包还负责 snapshot(快照)的管理。
若创建数据库时页大小选择为 4K,不支持 DBMS_WORKLOAD_REPOSITORY 包的相关方法;DM MPP 环境下不支持 DBMS_WORKLOAD_REPOSITORY 包。
AWR 是否开启 达梦数据库是否开启 AWR 功能,可以通过以下方式查看:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -- 检查数据库 DBMS_WORKLOAD_REPOSITORY 系统包的启用状态,0:未启用;1:已启用 SQL> select sf_check_awr_ sys;SF_CHECK_AWR_SYS ---------------- 0-- 查看 awr 快照信息,未开启则没有这个视图 SQL> select * from sys.wrm$_snapshot; select * from sys.wrm$_snapshot; 第1 行附近出现错误[-2106]:无效的表或视图名[WRM$_ SNAPSHOT].-- 查看表空间信息,是否存在 SYSAUX 表空间 SQL> select tablespace_name from dba_tablespaces;TABLESPACE_NAME --------------- SYSTEM ROLL TEMP MAIN MAIN
通过以上结果可以确定,当前数据库未开启 AWR 功能。
开启 AWR 功能 开启 AWR 需要先创建数据库 DBMS_WORKLOAD_REPOSITORY 系统包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 SQL > sp_init_awr_sys(1 ); DMSQL 过程已成功完成SQL > desc sys.wrm$_snapshot; NAME TYPE$ NULLABLE SNAP_ID INTEGER N DBID INTEGER Y INSTANCE_NUMBER INTEGER Y STARTUP_TIME DATETIME(6 ) Y BEGIN_INTERVAL_TIME DATETIME(6 ) Y END_INTERVAL_TIME DATETIME(6 ) Y FLUSH_ELAPSED INTERVAL DAY (5 ) TO SECOND (1 ) Y SNAP_LEVEL INTEGER Y STATUS INTEGER Y ERROR_COUNT INTEGER Y BL_MOVED INTEGER Y SNAP_FLAG INTEGER Y SNAP_TIMEZONE INTERVAL DAY (1 ) TO SECOND (0 ) Y BEGIN_INTERVAL_TIME_TZ DATETIME(6 ) WITH TIME ZONE Y END_INTERVAL_TIME_TZ DATETIME(6 ) WITH TIME ZONE YSQL > select tablespace_name,file_name from dba_data_files where tablespace_name= 'SYSAUX' ; TABLESPACE_NAME FILE_NAME SYSAUX / dmdata/ DAMENG/ SYSAWR.DBF
SYSAUX 表空间用来存放该包生成的快照数据。
达梦数据库开启 AWR 功能,需要调用 dbms_workload_repository.awr_set_interval 过程设置快照间隔时间:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 SQL > dbms_workload_repository.awr_set_interval(30 ); DMSQL 过程已成功完成SQL > select * from sys.wrm$_wr_control; DBID SNAP_INTERVAL RETENTION TOPNSQL STATUS_FLAGNULL INTERVAL '0 0:30:0.0' DAY (5 ) TO SECOND (1 ) INTERVAL '8 0:0:0.0' DAY (5 ) TO SECOND (1 ) 30 1 SQL > dbms_workload_repository.modify_snapshot_settings(10800 ,30 ); DMSQL 过程已成功完成SQL > dbms_workload_repository.create_snapshot(); DMSQL 过程已成功完成SQL > select SNAP_ID,DBID,INSTANCE_NUMBER,STARTUP_TIME,BEGIN_INTERVAL_TIME,END_INTERVAL_TIME,status from sys.wrm$_snapshot; SNAP_ID DBID INSTANCE_NUMBER STARTUP_TIME BEGIN_INTERVAL_TIME END_INTERVAL_TIME STATUS 1 NULL 1 2024 -10 -29 11 :31 :40.000000 2024 -11 -06 16 :15 :46.937024 2024 -11 -06 16 :15 :47.524466 NULL 2 NULL 1 2024 -10 -29 11 :31 :40.000000 2024 -11 -06 16 :26 :03.802089 2024 -11 -06 16 :26 :04.503231 NULL
可以看到,快照已经生成了,AWR 功能已经成功开启。
生成 AWR 报告 达梦数据库生成快照报告有 2 种格式,分别为 HTML 格式和 TEXT 格式,每种格式有两种生成报告的方法:
HTML
awr_report_html
sys.awr_report_html
TEXT
awr_report_txt
sys.awr_report_txt
下面主要演示生成 HTML 报告:
1 2 3 4 5 6 7 8 9 10 11 12 13 -- 这种方式直接输出报告内容,需要人为复制保存为 html 文件查看 SQL> select * from table (dbms_workload_repository.awr_report_html(1,2));OUTPUT -------------------------------------------------------------------- <html><head><title>AWR Report for DB: DAMENG, Inst: DMSERVER, Snaps: 1-2</title>... ... ... -- 这种方式直接生成 html 报告 SQL> sys.awr_report_html(1,2,'/home/dmdba' ,'dmawr_1_2.html' ); DMSQL 过程已成功完成
查看生成的 html 报告:
1 2 [dmdba@dm8 :~ ]$ ll /home/dmdba/dmawr_1_2.html -rw-r--r-- 1 dmdba dinstall 412585 11 月 6 16 : 28 /home/dmdba/dmawr_1_2.html
查看 AWR 报告 使用网页打开生成的达梦数据库 AWR 报告(以下截取部分报告内容):
更多报告内容可自行生成查看。
AWR 拓展 这里总结了一些 AWR 相关的命令:
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 和 Oracle AWR 颇为相似,实际使用效果还有待观察,还需要大量的场景进行检验,如果你有这方面的使用经验,欢迎投稿!
如果有遗漏或者不足的地方,欢迎评论区补充或者投稿,感谢阅读!
往期精彩文章
达梦数据库安装最详细教程 一招教你学会达梦数据库的免密登录 一文讲透达梦数据库的大小写敏感 效率翻倍!达梦数据库 disql 使用技巧全攻略 达梦数据库参数配置与一键优化指南 达梦 AWR 报告快速上手指南 金仓数据库 KingbaseES V9 单机安装指南 KingbaseES KSQL 免密登录的几种方式 KingbaseES 控制文件冗余与恢复秘籍 南大通用 GBASE 8s V8.8 数据库最全安装指南 GBase 8s GDCA 认证课后练习题大全(题库) GBase 8s 数据库巡检报告及一键巡检脚本 YashanDB 一键生成 AWR 报告 YashanDB 数据库安装部署
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」