本文档风哥主要介绍DM数据库日常巡检与健康检查的方法,包括DM数据库日常巡检概念、健康检查概念、巡检的重要性、巡检计划、健康检查计划、日常巡检实施、健康检查实施、实际案例分析等内容,风哥教程参考DM官方文档DM8系统管理员手册,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 DM数据库日常巡检概念
DM数据库日常巡检是指定期对数据库进行检查,了解数据库的运行状态,及时发现和处理问题,确保数据库的正常运行。日常巡检是数据库管理的重要组成部分,通过巡检可以预防故障的发生,提高数据库的可靠性和可用性。
# DM数据库日常巡检的目标
– 了解数据库的运行状态
– 及时发现和处理问题
– 预防故障的发生
– 提高数据库的可靠性和可用性
– 确保业务的正常运行
# DM数据库日常巡检的内容
– 数据库状态:数据库是否正常运行
– 系统资源:CPU、内存、磁盘IO等
– 数据库资源:会话、锁、SQL执行等
– 备份状态:备份是否正常执行
– 日志状态:日志是否正常生成
– 性能状态:数据库性能是否正常
# DM数据库日常巡检的频率
– 日常巡检:每天执行一次
– 周巡检:每周执行一次
– 月巡检:每月执行一次
– 季度巡检:每季度执行一次
– 年度巡检:每年执行一次
– 了解数据库的运行状态
– 及时发现和处理问题
– 预防故障的发生
– 提高数据库的可靠性和可用性
– 确保业务的正常运行
# DM数据库日常巡检的内容
– 数据库状态:数据库是否正常运行
– 系统资源:CPU、内存、磁盘IO等
– 数据库资源:会话、锁、SQL执行等
– 备份状态:备份是否正常执行
– 日志状态:日志是否正常生成
– 性能状态:数据库性能是否正常
# DM数据库日常巡检的频率
– 日常巡检:每天执行一次
– 周巡检:每周执行一次
– 月巡检:每月执行一次
– 季度巡检:每季度执行一次
– 年度巡检:每年执行一次
1.2 DM数据库健康检查概念
DM数据库健康检查是指对数据库进行全面的检查,评估数据库的健康状况,发现潜在的问题,提出改进建议。健康检查是数据库管理的重要组成部分,通过健康检查可以全面了解数据库的状况,确保数据库的健康运行。
# DM数据库健康检查的目标
– 评估数据库的健康状况
– 发现潜在的问题
– 提出改进建议
– 确保数据库的健康运行
– 提高数据库的可靠性和可用性
# DM数据库健康检查的内容
– 数据库配置:参数配置是否合理
– 数据库结构:表、索引、分区等结构是否合理
– 数据库性能:性能是否正常
– 数据库安全:安全配置是否合理
– 数据库备份:备份策略是否合理
– 数据库监控:监控机制是否完善
# DM数据库健康检查的频率
– 月度健康检查:每月执行一次
– 季度健康检查:每季度执行一次
– 年度健康检查:每年执行一次
– 重大变更后健康检查:重大变更后执行一次
– 评估数据库的健康状况
– 发现潜在的问题
– 提出改进建议
– 确保数据库的健康运行
– 提高数据库的可靠性和可用性
# DM数据库健康检查的内容
– 数据库配置:参数配置是否合理
– 数据库结构:表、索引、分区等结构是否合理
– 数据库性能:性能是否正常
– 数据库安全:安全配置是否合理
– 数据库备份:备份策略是否合理
– 数据库监控:监控机制是否完善
# DM数据库健康检查的频率
– 月度健康检查:每月执行一次
– 季度健康检查:每季度执行一次
– 年度健康检查:每年执行一次
– 重大变更后健康检查:重大变更后执行一次
1.3 DM数据库巡检的重要性
DM数据库巡检的重要性:
- 预防故障:通过定期巡检,及时发现和处理问题,预防故障的发生
- 提高可靠性:确保数据库的正常运行,提高数据库的可靠性和可用性
- 优化性能:通过巡检发现性能问题,及时进行优化,提高数据库性能
- 确保安全:通过巡检发现安全问题,及时进行处理,确保数据库的安全
- 合规要求:某些行业法规要求定期进行数据库巡检
- 降低成本:通过预防故障,减少故障处理的成本
- 提高管理水平:通过巡检,提高数据库管理的水平
风哥提示:
风哥提示:日常巡检是数据库管理的重要组成部分,通过定期巡检,可以及时发现和处理问题,预防故障的发生,提高数据库的可靠性和可用性。建立完善的巡检体系,确保数据库的健康运行。
Part02-生产环境规划与建议
2.1 DM数据库巡检计划
DM数据库巡检计划:
# 日常巡检计划
– 检查时间:每天早上9:00
– 检查内容:
– 数据库状态
– 系统资源使用情况
– 数据库会话情况
– 备份执行情况
– 日志生成情况
– 检查工具:
– 系统命令:top、iostat、free等
– 数据库视图:v$instance、v$session等
– 自定义脚本:daily_check.sh
# 周巡检计划
– 检查时间:每周一早上9:00
– 检查内容:
– 日常巡检内容
– 数据库性能情况
– 索引使用情况
– 表空间使用情况
– 安全配置情况
– 检查工具: 学习交流加群风哥微信: itpux-com
– 系统命令
– 数据库视图
– 自定义脚本:weekly_check.sh
# 月巡检计划
– 检查时间:每月1日早上9:00
– 检查内容:
– 周巡检内容
– 数据库参数配置
– 数据库结构
– 备份策略
– 监控机制
– 检查工具:
– 系统命令
– 数据库视图
– 自定义脚本:monthly_check.sh
# 季度巡检计划
– 检查时间:每季度第一个月1日早上9:00
– 检查内容:
– 月巡检内容
– 系统资源规划
– 数据库容量规划
– 性能优化
– 安全审计
– 检查工具:
– 系统命令
– 数据库视图
– 自定义脚本:quarterly_check.sh
– 检查时间:每天早上9:00
– 检查内容:
– 数据库状态
– 系统资源使用情况
– 数据库会话情况
– 备份执行情况
– 日志生成情况
– 检查工具:
– 系统命令:top、iostat、free等
– 数据库视图:v$instance、v$session等
– 自定义脚本:daily_check.sh
# 周巡检计划
– 检查时间:每周一早上9:00
– 检查内容:
– 日常巡检内容
– 数据库性能情况
– 索引使用情况
– 表空间使用情况
– 安全配置情况
– 检查工具: 学习交流加群风哥微信: itpux-com
– 系统命令
– 数据库视图
– 自定义脚本:weekly_check.sh
# 月巡检计划
– 检查时间:每月1日早上9:00
– 检查内容:
– 周巡检内容
– 数据库参数配置
– 数据库结构
– 备份策略
– 监控机制
– 检查工具:
– 系统命令
– 数据库视图
– 自定义脚本:monthly_check.sh
# 季度巡检计划
– 检查时间:每季度第一个月1日早上9:00
– 检查内容:
– 月巡检内容
– 系统资源规划
– 数据库容量规划
– 性能优化
– 安全审计
– 检查工具:
– 系统命令
– 数据库视图
– 自定义脚本:quarterly_check.sh
2.2 DM数据库健康检查计划
DM数据库健康检查计划:
# 月度健康检查
– 检查时间:每月最后一个工作日
– 检查内容:
– 数据库配置检查
– 数据库性能检查
– 数据库安全检查
– 备份策略检查
– 监控机制检查
– 检查工具: 学习交流加群风哥QQ113257174
– 系统命令
– 数据库视图
– 自定义脚本:health_check.sh
# 季度健康检查
– 检查时间:每季度最后一个工作日
– 检查内容:
– 月度健康检查内容
– 系统资源使用情况分析
– 数据库性能趋势分析
– 安全漏洞扫描
– 备份恢复测试
– 检查工具:
– 系统命令
– 数据库视图
– 第三方工具
– 自定义脚本:quarterly_health_check.sh
# 年度健康检查
– 检查时间:每年12月31日
– 检查内容:
– 季度健康检查内容
– 系统架构评估
– 数据库架构评估
– 性能优化评估
– 安全风险评估
– 检查工具:
– 系统命令
– 数据库视图
– 第三方工具
– 专业咨询
– 检查时间:每月最后一个工作日
– 检查内容:
– 数据库配置检查
– 数据库性能检查
– 数据库安全检查
– 备份策略检查
– 监控机制检查
– 检查工具: 学习交流加群风哥QQ113257174
– 系统命令
– 数据库视图
– 自定义脚本:health_check.sh
# 季度健康检查
– 检查时间:每季度最后一个工作日
– 检查内容:
– 月度健康检查内容
– 系统资源使用情况分析
– 数据库性能趋势分析
– 安全漏洞扫描
– 备份恢复测试
– 检查工具:
– 系统命令
– 数据库视图
– 第三方工具
– 自定义脚本:quarterly_health_check.sh
# 年度健康检查
– 检查时间:每年12月31日
– 检查内容:
– 季度健康检查内容
– 系统架构评估
– 数据库架构评估
– 性能优化评估
– 安全风险评估
– 检查工具:
– 系统命令
– 数据库视图
– 第三方工具
– 专业咨询
2.3 DM数据库巡检与健康检查最佳实践
DM数据库巡检与健康检查最佳实践:
- 建立巡检体系:建立完善的巡检体系,包括巡检计划、巡检内容、巡检工具等
- 定期执行巡检:按照巡检计划定期执行巡检,确保数据库的正常运行
- 及时处理问题:发现问题及时处理,避免问题扩大化
- 记录巡检结果:记录巡检结果,建立巡检档案,便于分析和追踪
- 持续改进:根据巡检结果,持续改进巡检策略和方法
- 自动化巡检:使用自动化工具和脚本,提高巡检效率和准确性
- 培训:对DBA人员进行巡检培训,提高巡检技能
- 文档管理:建立完善的巡检文档,包括巡检计划、巡检内容、巡检结果等
更多视频教程www.fgedu.net.cn
生产环境建议:建立完善的巡检与健康检查体系,按照巡检计划定期执行巡检,及时发现和处理问题,确保数据库的正常运行。
Part03-生产环境项目实施方案
3.1 DM数据库日常巡检实施
3.1.1 日常巡检脚本
# 日常巡检脚本
#!/bin/bash
# daily_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
date=$(date +%Y%m%d_%H%M%S)
log_file=”/var/log/daily_check_$date.log”
echo “Starting daily database inspection…” >> $log_file
echo “Date: $(date)” >> $log_file
# 1. 检查数据库状态
echo “Database status:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select status$ from vinstance;
EOF
# 2. 检查系统资源
echo “System resource usage:” >> $log_file
top -n 1 >> $log_file
echo “Memory usage:” >> $log_file
free -h >> $log_file
echo “Disk usage:” >> $log_file
df -h >> $log_file
echo “Disk IO:” >> $log_file
iostat -x >> $log_file
# 3. 检查数据库会话
echo “Database sessions:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select count(*) from vsession;
select username, status, count(*) from vsession group by username, status;
EOF
# 4. 检查备份状态
echo “Backup status:” >> $log_file 更多学习教程公众号风哥教程itpux_com
latest_full_backup=$(find /dm/backup/full -name “*.bak” -type f | sort -n | tail -1)
latest_increment_backup=$(find /dm/backup/increment -name “*.bak” -type f | sort -n | tail -1)
latest_arch_backup=$(find /dm/backup/arch -name “*.bak” -type f | sort -n | tail -1)
echo “Latest full backup: $latest_full_backup” >> $log_file
echo “Latest increment backup: $latest_increment_backup” >> $log_file
echo “Latest arch backup: $latest_arch_backup” >> $log_file
# 5. 检查表空间使用情况
echo “Tablespace usage:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select tablespace_name, round(bytes/1024/1024/1024, 2) as total_gb, round(free_bytes/1024/1024/1024, 2) as free_gb, round((bytes – free_bytes)/bytes*100, 2) as used_percent from vtablespace;
EOF
# 6. 检查日志状态
echo “Log status:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vlog;
EOF
# 7. 检查慢SQL
echo “Long running SQL:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vlong_exec_sql;
EOF
echo “Daily inspection completed.” >> $log_file
# 发送巡检报告
# mail -s “Daily Database Inspection Report” admin@fgedu.net.cn < $log_file
#!/bin/bash
# daily_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
date=$(date +%Y%m%d_%H%M%S)
log_file=”/var/log/daily_check_$date.log”
echo “Starting daily database inspection…” >> $log_file
echo “Date: $(date)” >> $log_file
# 1. 检查数据库状态
echo “Database status:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select status$ from vinstance;
EOF
# 2. 检查系统资源
echo “System resource usage:” >> $log_file
top -n 1 >> $log_file
echo “Memory usage:” >> $log_file
free -h >> $log_file
echo “Disk usage:” >> $log_file
df -h >> $log_file
echo “Disk IO:” >> $log_file
iostat -x >> $log_file
# 3. 检查数据库会话
echo “Database sessions:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select count(*) from vsession;
select username, status, count(*) from vsession group by username, status;
EOF
# 4. 检查备份状态
echo “Backup status:” >> $log_file 更多学习教程公众号风哥教程itpux_com
latest_full_backup=$(find /dm/backup/full -name “*.bak” -type f | sort -n | tail -1)
latest_increment_backup=$(find /dm/backup/increment -name “*.bak” -type f | sort -n | tail -1)
latest_arch_backup=$(find /dm/backup/arch -name “*.bak” -type f | sort -n | tail -1)
echo “Latest full backup: $latest_full_backup” >> $log_file
echo “Latest increment backup: $latest_increment_backup” >> $log_file
echo “Latest arch backup: $latest_arch_backup” >> $log_file
# 5. 检查表空间使用情况
echo “Tablespace usage:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select tablespace_name, round(bytes/1024/1024/1024, 2) as total_gb, round(free_bytes/1024/1024/1024, 2) as free_gb, round((bytes – free_bytes)/bytes*100, 2) as used_percent from vtablespace;
EOF
# 6. 检查日志状态
echo “Log status:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vlog;
EOF
# 7. 检查慢SQL
echo “Long running SQL:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vlong_exec_sql;
EOF
echo “Daily inspection completed.” >> $log_file
# 发送巡检报告
# mail -s “Daily Database Inspection Report” admin@fgedu.net.cn < $log_file
3.1.2 周巡检脚本
# 周巡检脚本
#!/bin/bash
# weekly_check.sh from DB视频:www.itpux.com
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
date=$(date +%Y%m%d_%H%M%S)
log_file=”/var/log/weekly_check_$date.log”
echo “Starting weekly database inspection…” >> $log_file
echo “Date: $(date)” >> $log_file
# 执行日常巡检脚本
bash /path/to/daily_check.sh
# 1. 检查数据库性能
echo “Database performance:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vsysstat;
EOF
# 2. 检查索引使用情况
echo “Index usage:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select index_name, table_name, status from dba_indexes where owner=’FGEDU’;
EOF
# 3. 检查安全配置
echo “Security configuration:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vparameter where name like ‘%PWD%’;
EOF
# 4. 检查数据库参数
echo “Database parameters:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select name, value from vparameter where name in (‘MEMORY_POOL’, ‘BUFFER’, ‘SORT_BUF_SIZE’, ‘HASH_BUF_SIZE’, ‘MAX_SESSIONS’);
EOF
echo “Weekly inspection completed.” >> $log_file
# 发送巡检报告
# mail -s “Weekly Database Inspection Report” admin@fgedu.net.cn < $log_file
#!/bin/bash
# weekly_check.sh from DB视频:www.itpux.com
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
date=$(date +%Y%m%d_%H%M%S)
log_file=”/var/log/weekly_check_$date.log”
echo “Starting weekly database inspection…” >> $log_file
echo “Date: $(date)” >> $log_file
# 执行日常巡检脚本
bash /path/to/daily_check.sh
# 1. 检查数据库性能
echo “Database performance:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vsysstat;
EOF
# 2. 检查索引使用情况
echo “Index usage:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select index_name, table_name, status from dba_indexes where owner=’FGEDU’;
EOF
# 3. 检查安全配置
echo “Security configuration:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vparameter where name like ‘%PWD%’;
EOF
# 4. 检查数据库参数
echo “Database parameters:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select name, value from vparameter where name in (‘MEMORY_POOL’, ‘BUFFER’, ‘SORT_BUF_SIZE’, ‘HASH_BUF_SIZE’, ‘MAX_SESSIONS’);
EOF
echo “Weekly inspection completed.” >> $log_file
# 发送巡检报告
# mail -s “Weekly Database Inspection Report” admin@fgedu.net.cn < $log_file
3.1.3 月巡检脚本
# 月巡检脚本
#!/bin/bash
# monthly_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
date=$(date +%Y%m%d_%H%M%S)
log_file=”/var/log/monthly_check_$date.log”
echo “Starting monthly database inspection…” >> $log_file
echo “Date: $(date)” >> $log_file
# 执行周巡检脚本
bash /path/to/weekly_check.sh
# 1. 检查数据库结构
echo “Database structure:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select table_name, num_rows from dba_tables where owner=’FGEDU’;
EOF
# 2. 检查备份策略
echo “Backup strategy:” >> $log_file
ls -la /dm/backup/full/ >> $log_file
ls -la /dm/backup/increment/ >> $log_file
ls -la /dm/backup/arch/ >> $log_file
# 3. 检查监控机制
echo “Monitoring mechanism:” >> $log_file
ps aux | grep zabbix >> $log_file
ps aux | grep prometheus >> $log_file
# 4. 检查数据库版本
echo “Database version:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vversion;
EOF
echo “Monthly inspection completed.” >> $log_file
# 发送巡检报告
# mail -s “Monthly Database Inspection Report” admin@fgedu.net.cn < $log_file
#!/bin/bash
# monthly_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
date=$(date +%Y%m%d_%H%M%S)
log_file=”/var/log/monthly_check_$date.log”
echo “Starting monthly database inspection…” >> $log_file
echo “Date: $(date)” >> $log_file
# 执行周巡检脚本
bash /path/to/weekly_check.sh
# 1. 检查数据库结构
echo “Database structure:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select table_name, num_rows from dba_tables where owner=’FGEDU’;
EOF
# 2. 检查备份策略
echo “Backup strategy:” >> $log_file
ls -la /dm/backup/full/ >> $log_file
ls -la /dm/backup/increment/ >> $log_file
ls -la /dm/backup/arch/ >> $log_file
# 3. 检查监控机制
echo “Monitoring mechanism:” >> $log_file
ps aux | grep zabbix >> $log_file
ps aux | grep prometheus >> $log_file
# 4. 检查数据库版本
echo “Database version:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vversion;
EOF
echo “Monthly inspection completed.” >> $log_file
# 发送巡检报告
# mail -s “Monthly Database Inspection Report” admin@fgedu.net.cn < $log_file
3.2 DM数据库健康检查实施
3.2.1 健康检查脚本
# 健康检查脚本
#!/bin/bash
# health_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
date=$(date +%Y%m%d_%H%M%S)
log_file=”/var/log/health_check_$date.log”
echo “Starting database health check…” >> $log_file
echo “Date: $(date)” >> $log_file
# 1. 检查数据库配置
echo “Database configuration:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select name, value from vparameter;
EOF
# 2. 检查数据库性能
echo “Database performance:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vsysstat;
select * from vbufpool;
select * from vlock;
EOF
# 3. 检查数据库安全
echo “Database security:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from dba_users;
select * from dba_roles;
select * from dba_sys_privs;
EOF
# 4. 检查备份恢复
echo “Backup and recovery:” >> $log_file
latest_full_backup=$(find /dm/backup/full -name “*.bak” -type f | sort -n | tail -1)
if [ -f “$latest_full_backup” ]; then
echo “Latest full backup exists: $latest_full_backup” >> $log_file
else
echo “Warning: No full backup found!” >> $log_file
fi
# 5. 检查监控机制
echo “Monitoring mechanism:” >> $log_file
ps aux | grep zabbix >> $log_file
ps aux | grep prometheus >> $log_file
# 6. 生成健康报告
echo “Health check report:” >> $log_file
echo “====================================” >> $log_file
echo “Database health status: ” >> $log_file
echo “====================================” >> $log_file
echo “1. Configuration: OK” >> $log_file
echo “2. Performance: OK” >> $log_file
echo “3. Security: OK” >> $log_file
echo “4. Backup: OK” >> $log_file
echo “5. Monitoring: OK” >> $log_file
echo “====================================” >> $log_file
echo “Health check completed.” >> $log_file
# 发送健康报告
# mail -s “Database Health Check Report” admin@fgedu.net.cn < $log_file
#!/bin/bash
# health_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
date=$(date +%Y%m%d_%H%M%S)
log_file=”/var/log/health_check_$date.log”
echo “Starting database health check…” >> $log_file
echo “Date: $(date)” >> $log_file
# 1. 检查数据库配置
echo “Database configuration:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select name, value from vparameter;
EOF
# 2. 检查数据库性能
echo “Database performance:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from vsysstat;
select * from vbufpool;
select * from vlock;
EOF
# 3. 检查数据库安全
echo “Database security:” >> $log_file
/dm/app/bin/disql SYSDBA/SYSDBA@fgedu.localhost:5236 << EOF >> $log_file
select * from dba_users;
select * from dba_roles;
select * from dba_sys_privs;
EOF
# 4. 检查备份恢复
echo “Backup and recovery:” >> $log_file
latest_full_backup=$(find /dm/backup/full -name “*.bak” -type f | sort -n | tail -1)
if [ -f “$latest_full_backup” ]; then
echo “Latest full backup exists: $latest_full_backup” >> $log_file
else
echo “Warning: No full backup found!” >> $log_file
fi
# 5. 检查监控机制
echo “Monitoring mechanism:” >> $log_file
ps aux | grep zabbix >> $log_file
ps aux | grep prometheus >> $log_file
# 6. 生成健康报告
echo “Health check report:” >> $log_file
echo “====================================” >> $log_file
echo “Database health status: ” >> $log_file
echo “====================================” >> $log_file
echo “1. Configuration: OK” >> $log_file
echo “2. Performance: OK” >> $log_file
echo “3. Security: OK” >> $log_file
echo “4. Backup: OK” >> $log_file
echo “5. Monitoring: OK” >> $log_file
echo “====================================” >> $log_file
echo “Health check completed.” >> $log_file
# 发送健康报告
# mail -s “Database Health Check Report” admin@fgedu.net.cn < $log_file
3.2.2 健康检查报告
# 健康检查报告模板
# 数据库健康检查报告
#
# 基本信息
– 检查时间:2026-04-09
– 数据库版本:DM8 1-8-120-231117-16827-ENT
– 数据库名称:fgedudb
– 主机名:fgedu.net.cn
#
# 检查内容
##
# 1. 数据库配置
– 参数配置:合理
– 内存配置:8GB
– 日志配置:合理
– 并发配置:500
##
# 2. 数据库性能
– CPU使用率:20%
– 内存使用率:50%
– 磁盘IO:正常
– 缓冲区命中率:99%
– 锁等待:无
– 慢SQL:无
##
# 3. 数据库安全
– 用户管理:合理
– 权限管理:合理
– 密码策略:启用
– 审计功能:启用
##
# 4. 备份恢复
– 全量备份:正常
– 增量备份:正常
– 日志备份:正常
– 恢复测试:通过
##
# 5. 监控机制
– 监控工具:Zabbix
– 告警机制:启用
– 监控指标:完整
#
# 问题发现
– 无
#
# 改进建议
– 定期更新数据库补丁
– 定期进行性能优化
– 定期进行安全审计
#
# 结论
数据库健康状况良好,运行正常。
# 数据库健康检查报告
#
# 基本信息
– 检查时间:2026-04-09
– 数据库版本:DM8 1-8-120-231117-16827-ENT
– 数据库名称:fgedudb
– 主机名:fgedu.net.cn
#
# 检查内容
##
# 1. 数据库配置
– 参数配置:合理
– 内存配置:8GB
– 日志配置:合理
– 并发配置:500
##
# 2. 数据库性能
– CPU使用率:20%
– 内存使用率:50%
– 磁盘IO:正常
– 缓冲区命中率:99%
– 锁等待:无
– 慢SQL:无
##
# 3. 数据库安全
– 用户管理:合理
– 权限管理:合理
– 密码策略:启用
– 审计功能:启用
##
# 4. 备份恢复
– 全量备份:正常
– 增量备份:正常
– 日志备份:正常
– 恢复测试:通过
##
# 5. 监控机制
– 监控工具:Zabbix
– 告警机制:启用
– 监控指标:完整
#
# 问题发现
– 无
#
# 改进建议
– 定期更新数据库补丁
– 定期进行性能优化
– 定期进行安全审计
#
# 结论
数据库健康状况良好,运行正常。
3.3 DM数据库巡检与健康检查工具
# 巡检与健康检查工具
# 1. 系统命令
– top:监控CPU使用率
– free:监控内存使用情况
– df:监控磁盘使用情况
– iostat:监控磁盘IO情况
– vmstat:监控系统资源使用情况
– netstat:监控网络连接情况
# 2. 数据库视图
– v$instance:数据库实例信息
– v$session:会话信息
– v$sysstat:系统状态信息
– v$bufpool:缓冲区信息
– v$lock:锁信息
– v$long_exec_sql:慢SQL信息
– v$tablespace:表空间信息
– v$log:日志信息
– v$parameter:参数信息
# 3. 自定义脚本
– daily_check.sh:日常巡检脚本
– weekly_check.sh:周巡检脚本
– monthly_check.sh:月巡检脚本
– health_check.sh:健康检查脚本
# 4. 第三方工具
– Zabbix:监控工具
– Prometheus:监控工具
– Grafana:数据可视化工具
– Nagios:监控工具
– DM管理工具:图形化管理工具
# 5. 自动化工具
– Ansible:自动化运维工具
– Shell脚本:自定义自动化脚本
– Python脚本:自定义自动化脚本
# 1. 系统命令
– top:监控CPU使用率
– free:监控内存使用情况
– df:监控磁盘使用情况
– iostat:监控磁盘IO情况
– vmstat:监控系统资源使用情况
– netstat:监控网络连接情况
# 2. 数据库视图
– v$instance:数据库实例信息
– v$session:会话信息
– v$sysstat:系统状态信息
– v$bufpool:缓冲区信息
– v$lock:锁信息
– v$long_exec_sql:慢SQL信息
– v$tablespace:表空间信息
– v$log:日志信息
– v$parameter:参数信息
# 3. 自定义脚本
– daily_check.sh:日常巡检脚本
– weekly_check.sh:周巡检脚本
– monthly_check.sh:月巡检脚本
– health_check.sh:健康检查脚本
# 4. 第三方工具
– Zabbix:监控工具
– Prometheus:监控工具
– Grafana:数据可视化工具
– Nagios:监控工具
– DM管理工具:图形化管理工具
# 5. 自动化工具
– Ansible:自动化运维工具
– Shell脚本:自定义自动化脚本
– Python脚本:自定义自动化脚本
风哥提示:巡检与健康检查工具是数据库管理的重要组成部分,通过使用合适的工具,可以提高巡检效率和准确性,及时发现和处理问题。选择适合自己环境的工具,建立完善的巡检体系。
Part04-生产案例与实战讲解
4.1 日常巡检案例
4.1.1 案例描述
通过日常巡检发现数据库表空间使用率过高,需要及时处理。
4.1.2 分析步骤
# 1. 执行日常巡检脚本
$ bash /path/to/daily_check.sh
# 2. 查看巡检报告
$ cat /var/log/daily_check_20260409_090000.log
# 输出
Tablespace usage:
TABLESPACE_NAME TOTAL_GB FREE_GB USED_PERCENT
————— ——– ——- ————
SYSTEM 1.00 0.50 50.00
SYSAUX 1.00 0.60 40.00
USERS 1.00 0.10 90.00
FGEDUTBS 100.00 10.00 90.00
# 3. 分析问题
# FGEDUTBS表空间使用率达到90%,需要扩容
# 4. 处理问题
$ cd /dm/app/bin
$ ./disql SYSDBA/SYSDBA@fgedu.localhost:5236
SQL> alter tablespace FGEDUTBS add datafile ‘/dm/fgdata/fgedudb/fgedutbs02.dbf’ size 50G;
# 5. 验证处理结果
SQL> select tablespace_name, round(bytes/1024/1024/1024, 2) as total_gb, round(free_bytes/1024/1024/1024, 2) as free_gb, round((bytes – free_bytes)/bytes*100, 2) as used_percent from v$tablespace where tablespace_name=’FGEDUTBS’;
TABLESPACE_NAME TOTAL_GB FREE_GB USED_PERCENT
————— ——– ——- ————
FGEDUTBS 150.00 60.00 60.00
# 6. 记录处理结果
# 更新巡检报告,记录表空间扩容情况
$ bash /path/to/daily_check.sh
# 2. 查看巡检报告
$ cat /var/log/daily_check_20260409_090000.log
# 输出
Tablespace usage:
TABLESPACE_NAME TOTAL_GB FREE_GB USED_PERCENT
————— ——– ——- ————
SYSTEM 1.00 0.50 50.00
SYSAUX 1.00 0.60 40.00
USERS 1.00 0.10 90.00
FGEDUTBS 100.00 10.00 90.00
# 3. 分析问题
# FGEDUTBS表空间使用率达到90%,需要扩容
# 4. 处理问题
$ cd /dm/app/bin
$ ./disql SYSDBA/SYSDBA@fgedu.localhost:5236
SQL> alter tablespace FGEDUTBS add datafile ‘/dm/fgdata/fgedudb/fgedutbs02.dbf’ size 50G;
# 5. 验证处理结果
SQL> select tablespace_name, round(bytes/1024/1024/1024, 2) as total_gb, round(free_bytes/1024/1024/1024, 2) as free_gb, round((bytes – free_bytes)/bytes*100, 2) as used_percent from v$tablespace where tablespace_name=’FGEDUTBS’;
TABLESPACE_NAME TOTAL_GB FREE_GB USED_PERCENT
————— ——– ——- ————
FGEDUTBS 150.00 60.00 60.00
# 6. 记录处理结果
# 更新巡检报告,记录表空间扩容情况
4.2 健康检查案例
4.2.1 案例描述
通过健康检查发现数据库存在安全隐患,需要及时处理。
4.2.2 分析步骤
# 1. 执行健康检查脚本
$ bash /path/to/health_check.sh
# 2. 查看健康检查报告
$ cat /var/log/health_check_20260409_090000.log
# 输出
Database security:
USERNAME ACCOUNT_STATUS
—————————— —————
SYSDBA OPEN
SYSAUDITOR OPEN
SYSSEC OPEN
FGEDU OPEN
TEST OPEN
# 3. 分析问题
# 发现TEST用户状态为OPEN,但该用户已不再使用,存在安全隐患
# 4. 处理问题
$ cd /dm/app/bin
$ ./disql SYSDBA/SYSDBA@fgedu.localhost:5236
SQL> alter user TEST account lock;
SQL> alter user TEST password expire;
# 5. 验证处理结果
SQL> select username, account_status from dba_users where username=’TEST’;
USERNAME ACCOUNT_STATUS
—————————— —————
TEST LOCKED & EXPIRED
# 6. 记录处理结果
# 更新健康检查报告,记录用户锁定情况
$ bash /path/to/health_check.sh
# 2. 查看健康检查报告
$ cat /var/log/health_check_20260409_090000.log
# 输出
Database security:
USERNAME ACCOUNT_STATUS
—————————— —————
SYSDBA OPEN
SYSAUDITOR OPEN
SYSSEC OPEN
FGEDU OPEN
TEST OPEN
# 3. 分析问题
# 发现TEST用户状态为OPEN,但该用户已不再使用,存在安全隐患
# 4. 处理问题
$ cd /dm/app/bin
$ ./disql SYSDBA/SYSDBA@fgedu.localhost:5236
SQL> alter user TEST account lock;
SQL> alter user TEST password expire;
# 5. 验证处理结果
SQL> select username, account_status from dba_users where username=’TEST’;
USERNAME ACCOUNT_STATUS
—————————— —————
TEST LOCKED & EXPIRED
# 6. 记录处理结果
# 更新健康检查报告,记录用户锁定情况
4.3 巡检脚本实战案例
4.3.1 案例描述
通过巡检脚本发现数据库备份失败,需要及时处理。
4.3.2 分析步骤
# 1. 执行日常巡检脚本
$ bash /path/to/daily_check.sh
# 2. 查看巡检报告
$ cat /var/log/daily_check_20260409_090000.log
# 输出
Backup status:
Latest full backup: /dm/backup/full/full_backup_20260408.bak
Latest increment backup: /dm/backup/increment/increment_backup_20260408.bak
Latest arch backup:
# 3. 分析问题
# 发现没有最新的归档日志备份,备份可能失败
# 4. 检查备份日志
$ cat /dm/backup/log/backup.log
# 输出
[2026-04-09 00:00:00] [ERROR] RMAN-00565: backup archivelog failed, error code: -2001
[2026-04-09 00:00:00] [ERROR] RMAN-00566: error message: 归档日志路径不存在
# 5. 处理问题
# 检查归档日志路径
$ ls -la /dm/fgdata/fgedudb/arch
# 输出
ls: cannot access /dm/fgdata/fgedudb/arch: No such file or directory
# 创建归档日志目录
$ mkdir -p /dm/fgdata/fgedudb/arch
# 重新执行归档日志备份
$ cd /dm/app/bin
$ ./dmrman
RMAN> backup archivelog all database ‘/dm/fgdata/fgedudb/dm.ini’ backupset ‘/dm/backup/arch/arch_backup_20260409’;
# 6. 验证处理结果
$ ls -la /dm/backup/arch/
# 输出
-rw-r–r– 1 dmdba dinstall 10485760 Apr 9 09:30 arch_backup_20260409.bak
# 7. 记录处理结果
# 更新巡检报告,记录备份失败处理情况
$ bash /path/to/daily_check.sh
# 2. 查看巡检报告
$ cat /var/log/daily_check_20260409_090000.log
# 输出
Backup status:
Latest full backup: /dm/backup/full/full_backup_20260408.bak
Latest increment backup: /dm/backup/increment/increment_backup_20260408.bak
Latest arch backup:
# 3. 分析问题
# 发现没有最新的归档日志备份,备份可能失败
# 4. 检查备份日志
$ cat /dm/backup/log/backup.log
# 输出
[2026-04-09 00:00:00] [ERROR] RMAN-00565: backup archivelog failed, error code: -2001
[2026-04-09 00:00:00] [ERROR] RMAN-00566: error message: 归档日志路径不存在
# 5. 处理问题
# 检查归档日志路径
$ ls -la /dm/fgdata/fgedudb/arch
# 输出
ls: cannot access /dm/fgdata/fgedudb/arch: No such file or directory
# 创建归档日志目录
$ mkdir -p /dm/fgdata/fgedudb/arch
# 重新执行归档日志备份
$ cd /dm/app/bin
$ ./dmrman
RMAN> backup archivelog all database ‘/dm/fgdata/fgedudb/dm.ini’ backupset ‘/dm/backup/arch/arch_backup_20260409’;
# 6. 验证处理结果
$ ls -la /dm/backup/arch/
# 输出
-rw-r–r– 1 dmdba dinstall 10485760 Apr 9 09:30 arch_backup_20260409.bak
# 7. 记录处理结果
# 更新巡检报告,记录备份失败处理情况
生产环境建议:建立完善的巡检与健康检查体系,定期执行巡检,及时发现和处理问题,确保数据库的正常运行。
Part05-风哥经验总结与分享
5.1 DM数据库日常巡检与健康检查最佳实践
DM数据库日常巡检与健康检查最佳实践:
- 建立巡检体系:建立完善的巡检体系,包括巡检计划、巡检内容、巡检工具等
- 定期执行巡检:按照巡检计划定期执行巡检,确保数据库的正常运行
- 及时处理问题:发现问题及时处理,避免问题扩大化
- 记录巡检结果:记录巡检结果,建立巡检档案,便于分析和追踪
- 持续改进:根据巡检结果,持续改进巡检策略和方法
- 自动化巡检:使用自动化工具和脚本,提高巡检效率和准确性
- 培训:对DBA人员进行巡检培训,提高巡检技能
- 文档管理:建立完善的巡检文档,包括巡检计划、巡检内容、巡检结果等
- 备份验证:定期验证备份的有效性,确保备份可以正常恢复
- 安全审计:定期进行安全审计,确保数据库的安全
5.2 DM数据库日常巡检与健康检查清单
# DM数据库日常巡检与健康检查清单
#
# 日常巡检清单
– [ ] 数据库状态检查
– [ ] 系统资源使用情况检查
– [ ] 数据库会话检查
– [ ] 备份执行情况检查
– [ ] 日志生成情况检查
– [ ] 表空间使用情况检查
– [ ] 慢SQL检查
#
# 周巡检清单
– [ ] 日常巡检内容
– [ ] 数据库性能检查
– [ ] 索引使用情况检查
– [ ] 安全配置检查
– [ ] 数据库参数检查
#
# 月巡检清单
– [ ] 周巡检内容
– [ ] 数据库结构检查
– [ ] 备份策略检查
– [ ] 监控机制检查
– [ ] 数据库版本检查
#
# 健康检查清单
– [ ] 数据库配置检查
– [ ] 数据库性能检查
– [ ] 数据库安全检查
– [ ] 备份恢复检查
– [ ] 监控机制检查
– [ ] 系统资源检查
– [ ] 数据库架构检查
#
# 巡检流程
1. 制定巡检计划
2. 执行巡检操作
3. 分析巡检结果
4. 处理发现的问题
5. 记录巡检档案
6. 持续改进巡检策略
#
# 日常巡检清单
– [ ] 数据库状态检查
– [ ] 系统资源使用情况检查
– [ ] 数据库会话检查
– [ ] 备份执行情况检查
– [ ] 日志生成情况检查
– [ ] 表空间使用情况检查
– [ ] 慢SQL检查
#
# 周巡检清单
– [ ] 日常巡检内容
– [ ] 数据库性能检查
– [ ] 索引使用情况检查
– [ ] 安全配置检查
– [ ] 数据库参数检查
#
# 月巡检清单
– [ ] 周巡检内容
– [ ] 数据库结构检查
– [ ] 备份策略检查
– [ ] 监控机制检查
– [ ] 数据库版本检查
#
# 健康检查清单
– [ ] 数据库配置检查
– [ ] 数据库性能检查
– [ ] 数据库安全检查
– [ ] 备份恢复检查
– [ ] 监控机制检查
– [ ] 系统资源检查
– [ ] 数据库架构检查
#
# 巡检流程
1. 制定巡检计划
2. 执行巡检操作
3. 分析巡检结果
4. 处理发现的问题
5. 记录巡检档案
6. 持续改进巡检策略
5.3 DM数据库巡检与健康检查工具推荐
DM数据库巡检与健康检查常用工具:
- 系统命令:top、free、df、iostat、vmstat、netstat等
- 数据库视图:v$instance、v$session、v$sysstat、v$bufpool、v$lock等
- 自定义脚本:daily_check.sh、weekly_check.sh、monthly_check.sh、health_check.sh等
- 第三方工具:Zabbix、Prometheus、Grafana、Nagios等
- DM管理工具:图形化管理工具,用于监控数据库性能
- 自动化工具:Ansible、Shell脚本、Python脚本等
持续改进:定期review巡检与健康检查策略,总结经验教训,不断优化巡检方法,提高数据库管理的水平。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
