DBDoctor 数据库性能洞察,如命名所描述的,可以帮助DBAer去快速的了解当前数据库的状况。
一份巡检报告,可以快速的了解数据库的健康情况,可以对应进行深入优化

1. 环境配置
| 服务器 | OS | 内核 | 内存CPU | 数据盘 | IP |
|---|---|---|---|---|---|
| server | centos 7.8 | 3.10.0-1127.el7.x86_64 | 8H32G | 100G | 10.0.0.236 |
| agent | centos 7.8 | 3.10.0-1160.83.1.el7.x86_64 | 8H16G | 100G | 10.0.0.140 |
2. DBDoctor下载安装(V3.2.3 版本)
下载网址:https://www.dbdoctor.cn/h-col-133.html
安装包有点大1.5G,比上个版本小了几百M,看大家网速,我这下了3分钟不到
2.1 解压安装
步骤很简单,入门门槛比较低
tar -zxvf DBdoctorV3.2.3_20240820_x86.tar.gz -C /data/
cd /data/dbdoctor-3.2.3.0
./dbd -I
2.2 提示:若未安装kernel-devel,安装的过程中会遇到报错,不安装部分功能(如审计日志,锁分析等)无法使用



[root@dba236 ~]# yum install perl
[root@dba236 ~]# rpm -ivh kernel-devel-3.10.0-1127.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:kernel-devel-3.10.0-1127.el7 ################################# [100%]
2.3 重启dbdoctor
./dbd --restart all

重启后,出现访问网址及登录账密,admin的虽然简单点,但第一次登录就会要求进行更改,问题不大。
PS: 若是需要升级版本,参考文档:
https://demo.dbdoctor.cn/modules/dbDoctor/mdPreview/index.html?readme=help#/mdManageDocument/6.2-Upgrade
原地升级后,登录网站的账号密码不变
3. 纳管ORACLE非CDC实例
3.1 用户权限分配
GRANT SELECT_CATALOG_ROLE TO USERNAME;
GRANT EXECUTE ON DBMS_WORKLOAD_REPOSITORY TO USERNAME;
GRANT CREATE SESSION TO USERNAME;
若要支持sql审核,需要增加权限
- 赋予此用户在自己模式下的增删改查权限
ALTER USER USERNAME quota SPACE_MB on users;
GRANT CREATE TABLE TO USERNAME;
-- 赋予用户在其他模式的表操作权限,这里由于涉及的表较多,直接给了any的权限,也导致update sql审核不了原因,看后续)
--GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA.TABLE_NAME TO USERNAME;
GRANT select any table TO USERNAME;
3.2 agent安装部署(当前采取手动安装):
参考文档:
https://demo.dbdoctor.cn/modules/dbDoctor/mdPreview/index.html?readme=help#/mdManageDocument/7.3.1-Agent-data-collection
3.3 下载及解压安装包
PS: 因同名,若有旧版本,须先卸载旧版本
cd /data
wget http://10.0.0.236:13000/download/agent.tar.gz&&tar -zxvf agent.tar.gz&&cd agent&&./agent --install -h undefined -k 10.0.0.236:9092 -s 10.0.0.236:13000
tar xvf agent.tar.gz
cd agent
./agent --install -h 10.0.0.140 -k 10.0.0.236:9092 -s 10.0.0.236:13000
3.4 安装完成后server纳管不上,检查如下情况
(1)agent与server的时钟需要同步,时差不能超过5s
也可以通过在agent执行命令进行确认,返回true 正常,返回false是有问题的
curl -m 2 "http://{server端IP}:13000/timeCheck?timeStampSec=$(date +%s)" 您在安装agent失败的机器上执行这个命令,把Server端IP换成您实际的IP
(2)agent的端口需要开放给server
也可以通过在agent执行命令进行确认
chroot /mnt/agent curl -m 2 "http://{server端IP}:13000/timeCheck?timeStampSec=$(date +%s)" 您再试下这个命令
不然会出现报错:

(3)## 操作系统版本支持:kernel too old


4. SQL审核
PS:权限要给够,不然就会遇到后面问题排查遇到问题
在人工审核:必须选择对应的用户,页面很清晰,审核sql基本在5秒内,当然,若是存在权限问题,那就会出现超时的情况

可以一次审核多条(以分号“;”分割),在任务详情里面,按条进行分别列出


5. 问题排查
5.1 存储分析页面空白问题处理
5.1.1 排查agent的数据采集是否开启
打开【实例列表】,点击相应实例的纳管信息,查看一下数据采集方式,查看已开启

5.1.2 排查dbd各个组件的状态
cd /data/dbdoctor-3.2.3.0
./dbd --status

5.1.3 查看dbd的日志
cd /data/dbdoctor-3.2.3.0
./dbd --logs
[root@dba236 dbdoctor-3.2.3.0]# ./dbd --logs
2024-08-20 13:20:33.508899822 [INFO] [dbd]: Command Tool Version 3.2.3.0,Handler Command: logs
2024-08-20 13:20:33.522783082 [INFO] [dbd]: collecting logs, wait a moment......
2024-08-20 13:20:39.927744940 [INFO] [dbd]: dbd service is installed,collecting agent log
2024-08-20 13:20:40.010670623 [INFO] [dbd]: login in success,collecting agent log
2024-08-20 13:20:40.095793415 [INFO] [dbd]: agent num is 2
2024-08-20 13:20:54.930405487 [INFO] [dbd]: collect logs complete,package name is /data/dbdoctor-3.2.2/dbd_log_20240820132043.tar.gz
执行完成后,会生产一个压缩包文件及存放位置,里面包含了丰富的日志
5.1.4 开启agent端口
PS: 经排查日志,发现agent的端口为开放
在dbd的server服务器执行
# dbd服务器执行
[root@dba236 dbdoctor-3.2.3.0]# curl http://10.0.0.140:22888/health
curl: (7) Failed connect to 10.0.0.140:22888; No route to host
[root@dba236 dbdoctor-3.2.3.0]# curl http://10.0.0.140:22888/health
curl: (7) Failed connect to 10.0.0.140:22888; No route to host
[root@dba236 dbdoctor-3.2.2]# telnet 10.0.0.140 22888
# agent 服务器,开放端口22888
[root@easdbtest140 ~]# firewall-cmd --list-ports|grep 22888
[root@easdbtest140 ~]#
[root@easdbtest140 ~]# firewall-cmd --add-port=22888/tcp --permanent
success
[root@easdbtest140 ~]# firewall-cmd --reload
success
再次查看页面,已经能够正常获取数据

5.2 update解析异常

任务详情

授权update权限
grant update on t1 to username;
再次查,可以正常审核


PS:终于知道,最初为啥用户授权的时候需要给update insert delete 权限
5.3 实例巡检报错

与权限有关,需要授权
GRANT EXECUTE ON DBMS_WORKLOAD_REPOSITORY TO username;
6. 系统建议
6.1.慢SQL建议增加执行时长
PS:当然也可以通过右上角的“审核配置”进行筛选

6.2根因分析建议

根因分析,建议加上执行SQL的用户(多用户下比较好去定位谁的问题),若是可以的话,也可以加上来源(HOST-IP或者hostname)
特别是要爆库的时候,可以快速定位哪个应用的问题,实在不行的情况下可以先关了应用,防止数据库宕机
6.3 sql审核提示解析错误,提示表不存在
update t2 set t2.name='Haha' where id =1

尝试解决:解除纳管,重新纳管进去,依然解析不通过
最后解决办法:用户所给的权限不够,增加
GRANT select any table TO username;
6.4 巡检项设置
可开启用户密码快过期用户等等提示
切换到admin用户,进入【巡检管理】选择相应的数据库进行配置:
鉴于安全要求,要求用户每半年进行一次密码修改,可开启“数据库用户密码10天内过期检查”
希望巡检报告,可以增加时间段的选择,比如发现CPU爆满是在早上的10-11点间,那么巡检报告就出这段时间的,得出的结果会更加精确一些。当然,也可以下载相应的AWR报告。终究没有那么的直观
6.5 表空间使用率评估
PS: 巡检报告中,针对表空间使用率评估,若存在自动扩展的,评估不够准确


可参照文章:https://www.modb.pro/db/484004
6.6 慢SQL显示的SQL语句不全

SQL语句不全,可能是此原因导致解析以一次异常.
到此,所有功能都可以正常投入使用,获益很多
比如某天,用户说系统卡卡卡,打开DBDoctor一看,发现是某个时间在跑一个大事务导致;
每天的巡检,也可以直接查看巡检报告;
卡性能的点的SQL可以通过根因分析,找到“罪魁祸首”
最后,非常感谢DBDoctor各位老师在测试过程中的全力支持。




