1. 首页 > 国产数据库教程 > 达梦DM教程 > 正文

DM教程FG093-达梦数据库自动化运维脚本

本文档详细介绍DM数据库自动化运维脚本的方法和技巧,包括自动化运维概念、自动化运维类型、自动化运维的重要性、自动化运维规划、自动化运维工具、自动化运维最佳实践、自动化运维实施、自动化运维配置、自动化运维维护等内容,风哥教程参考DM官方文档《DM8运维指南》手册,适合DBA人员进行DM数据库的自动化运维工作。

Part01-基础概念与理论知识

1.1 DM数据库自动化运维概念

DM数据库自动化运维是指通过脚本、工具等技术手段,实现对数据库的自动化管理,包括备份、监控、维护、优化等操作,减少人工干预,提高运维效率。

自动化运维的目标:

  • 提高效率:减少人工操作,提高运维效率
  • 降低成本:减少人力成本,降低运维成本
  • 减少错误:减少人为错误,提高准确性
  • 提高质量:标准化操作,提高运维质量

1.2 DM数据库自动化运维类型

DM数据库自动化运维类型:

# 自动化运维类型
#
# 1. 备份自动化
– 定义:自动执行数据库备份操作
– 备份内容:全量备份、增量备份、日志备份
– 备份频率:每天、每周、每月
– 优势:减少人工操作,确保备份及时
– 劣势:需要编写和维护脚本
– 适用场景:日常备份
#
# 2. 监控自动化
– 定义:自动监控数据库运行状态
– 监控内容:状态监控、性能监控、资源监控
– 监控频率:实时、每分钟、每小时
– 优势:实时监控,及时发现异常
– 劣势:需要配置监控规则
– 适用场景:日常监控
#
# 3. 维护自动化
– 定义:自动执行数据库维护操作
– 维护内容:表空间维护、索引维护、统计信息收集
– 维护频率:每天、每周、每月
– 优势:减少人工操作,确保维护及时
– 劣势:需要编写和维护脚本
– 适用场景:日常维护
#
# 4. 优化自动化
– 定义:自动优化数据库性能
– 优化内容:SQL优化、索引优化、参数优化
– 优化频率:每天、每周、每月
– 优势:自动优化,提高性能
– 劣势:需要编写和维护脚本
– 适用场景:性能优化
#
# 5. 告警自动化
– 定义:自动发送告警信息
– 告警内容:状态告警、性能告警、资源告警
– 告警方式:邮件、短信、微信 风哥提示:
– 优势:及时通知,快速响应
– 劣势:需要配置告警规则
– 适用场景:告警通知

1.3 DM数据库自动化运维的重要性

DM数据库自动化运维的重要性:

  1. 提高效率:减少人工操作,提高运维效率
  2. 降低成本:减少人力成本,降低运维成本
  3. 减少错误:减少人为错误,提高准确性
  4. 提高质量:标准化操作,提高运维质量
  5. 及时响应:自动监控,及时发现和解决问题
  6. 持续优化:自动优化,持续提高性能
  7. 规范管理:标准化流程,规范运维管理
  8. 提升服务:提高数据库服务质量,提升用户体验
风哥提示:DM数据库自动化运维是数据库运维的重要组成部分,通过有效的自动化运维,可以减少人工操作,提高运维效率,确保数据库的稳定运行。

Part02-生产环境规划与建议

2.1 DM数据库自动化运维规划

生产环境DM数据库自动化运维规划:

# 自动化运维规划
#
# 1. 自动化运维需求分析
– 业务需求:根据业务特点确定自动化运维需求
– 技术需求:根据技术要求确定自动化运维方案
– 时间要求:确定自动化运维的时间要求
– 成本预算:确定自动化运维的预算
#
# 2. 自动化运维目标设定 学习交流加群风哥微信: itpux-com
– 效率目标:确定自动化运维的效率目标
– 质量目标:确定自动化运维的质量目标
– 成本目标:确定自动化运维的成本目标
– 可用性目标:确定自动化运维的可用性目标
#
# 3. 自动化运维方案选择
– 备份自动化:自动执行数据库备份操作
– 监控自动化:自动监控数据库运行状态
– 维护自动化:自动执行数据库维护操作
– 优化自动化:自动优化数据库性能
– 告警自动化:自动发送告警信息
#
# 4. 自动化运维技术选型
– Shell脚本:使用Shell脚本编写自动化脚本
– Python脚本:使用Python脚本编写自动化脚本
– Ansible:使用Ansible实现自动化运维
– SaltStack:使用SaltStack实现自动化运维
– 自定义工具:开发自定义自动化运维工具
#
# 5. 自动化运维资源规划
– 硬件资源:自动化服务器、存储、网络等
– 软件资源:自动化软件、数据库等
– 人力资源:自动化运维实施和维护人员
– 时间资源:自动化运维实施和维护时间
#
# 6. 自动化运维流程设计
– 需求分析:分析自动化运维需求
– 方案设计:设计自动化运维方案
– 脚本开发:开发自动化运维脚本
– 测试验证:测试自动化运维脚本
– 部署上线:部署自动化运维脚本
– 运行维护:运行和维护自动化运维脚本
#
# 7. 自动化运维风险控制
– 风险识别:识别自动化运维过程中的风险
– 风险评估:评估风险的影响和可能性
– 风险应对:制定风险应对措施
– 应急预案:制定应急预案
#
# 8. 自动化运维文档与培训
– 自动化运维文档:自动化运维方案、操作手册等
– 人员培训:对相关人员进行培训
– 演练计划:定期进行自动化运维演练

2.2 DM数据库自动化运维工具

DM数据库自动化运维工具:

学习交流加群风哥QQ113257174

自动化运维工具类型:

  • Shell脚本:使用Shell脚本编写自动化脚本,简单易用
  • Python脚本:使用Python脚本编写自动化脚本,功能强大
  • Ansible:使用Ansible实现自动化运维,配置管理
  • SaltStack:使用SaltStack实现自动化运维,配置管理
  • 自定义工具:开发自定义自动化运维工具,灵活定制

2.3 DM数据库自动化运维最佳实践

DM数据库自动化运维最佳实践:

# 自动化运维最佳实践
#
# 1. 自动化运维准备
– 详细评估:详细评估自动化运维需求
– 工具选择:选择合适的自动化运维工具
– 环境准备:准备自动化运维环境和工具
– 文档准备:准备自动化运维文档
#
# 2. 自动化运维实施
– 分步实施:采用分步实施的策略
– 脚本测试:每步完成后测试脚本
– 日志记录:详细记录自动化运维过程
– 进度监控:实时监控自动化运维进度
#
# 3. 自动化运维测试
– 全面测试:全面测试自动化运维脚本
– 功能测试:测试自动化运维功能
– 性能测试:测试自动化运维性能
– 异常测试:测试异常情况处理
#
# 4. 自动化运维部署
– 部署计划:制定详细的部署计划
– 部署执行:按计划执行部署
– 部署验证:验证部署结果
– 回滚准备:准备回滚方案
#
# 5. 自动化运维优化
– 脚本优化:优化自动化运维脚本
– 性能优化:优化自动化运维性能
– 参数优化:优化自动化运维参数
– 流程优化:优化自动化运维流程
#
# 6. 自动化运维维护 更多视频教程www.fgedu.net.cn
– 脚本维护:维护自动化运维脚本
– 问题处理:及时处理自动化运维问题
– 性能调优:持续优化自动化运维性能
– 文档更新:更新自动化运维文档
#
# 7. 自动化运维管理
– 责任明确:明确自动化运维管理的责任
– 流程规范:建立规范的自动化运维管理流程
– 持续改进:根据实际情况持续改进
– 经验总结:总结自动化运维管理的经验

Part03-生产环境项目实施方案

3.1 DM数据库自动化运维实施

3.1.1 备份自动化脚本

# 备份自动化脚本
#!/bin/bash
# dm_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
# 配置参数
DB_USER=SYSDBA
DB_PASS=SYSDBA
BACKUP_DIR=/dm/backup
LOG_DIR=/dm/logs
DATE=$(date +%Y%m%d)
TIME=$(date +%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR/full
mkdir -p $BACKUP_DIR/incremental
mkdir -p $BACKUP_DIR/log
mkdir -p $LOG_DIR
# 全量备份
full_backup() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始全量备份”
BACKUP_FILE=$BACKUP_DIR/full/fgedu_full_$DATE.dmp
LOG_FILE=$BACKUP_DIR/log/fgedu_full_$DATE.log
dexp $DB_USER/$DB_PASS file=$BACKUP_FILE log=$LOG_FILE full=y
if [ $? -eq 0 ]; then 更多学习教程公众号风哥教程itpux_com
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 全量备份成功: $BACKUP_FILE”
# 压缩备份文件
gzip $BACKUP_FILE
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份文件已压缩: $BACKUP_FILE.gz”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 全量备份失败”
exit 1
fi
}
# 增量备份
incremental_backup() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始增量备份”
BACKUP_FILE=$BACKUP_DIR/incremental/fgedu_incremental_$DATE_$TIME.dmp
LOG_FILE=$BACKUP_DIR/log/fgedu_incremental_$DATE_$TIME.log
dexp $DB_USER/$DB_PASS file=$BACKUP_FILE log=$LOG_FILE incremental=y
if [ $? -eq 0 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 增量备份成功: $BACKUP_FILE”
# 压缩备份文件
gzip $BACKUP_FILE
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份文件已压缩: $BACKUP_FILE.gz”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 增量备份失败”
exit 1
fi
}
# 日志备份
log_backup() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始日志备份”
BACKUP_FILE=$BACKUP_DIR/log/fgedu_log_$DATE_$TIME.dmp
LOG_FILE=$BACKUP_DIR/log/fgedu_log_$DATE_$TIME.log from DB视频:www.itpux.com
dexp $DB_USER/$DB_PASS file=$BACKUP_FILE log=$LOG_FILE log=y
if [ $? -eq 0 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 日志备份成功: $BACKUP_FILE”
# 压缩备份文件
gzip $BACKUP_FILE
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份文件已压缩: $BACKUP_FILE.gz”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 日志备份失败”
exit 1
fi
}
# 清理过期备份
cleanup_backup() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始清理过期备份”
# 清理30天前的全量备份
find $BACKUP_DIR/full -name “*.dmp.gz” -mtime +30 -delete
# 清理7天前的增量备份
find $BACKUP_DIR/incremental -name “*.dmp.gz” -mtime +7 -delete
# 清理30天前的日志备份
find $BACKUP_DIR/log -name “*.dmp.gz” -mtime +30 -delete
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 过期备份清理完成”
}
# 主函数
main() {
case $1 in
full)
full_backup
;;
incremental)
incremental_backup
;;
log)
log_backup
;;
cleanup)
cleanup_backup
;;
all)
full_backup
cleanup_backup
;;
*)
echo “Usage: $0 {full|incremental|log|cleanup|all}”
exit 1
esac
}
# 执行主函数
main $*
# 记录日志
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份操作完成” >> $LOG_DIR/dm_backup.log

3.1.2 监控自动化脚本

# 监控自动化脚本
#!/bin/bash
# dm_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
# 配置参数
DB_USER=zabbix
DB_PASS=Zabbix123
LOG_DIR=/dm/logs
ALERT_DIR=/dm/alerts
DATE=$(date +%Y%m%d)
TIME=$(date +%H%M%S)
# 创建日志目录
mkdir -p $LOG_DIR
mkdir -p $ALERT_DIR
# 检查数据库状态
check_status() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 检查数据库状态”
STATUS=$(disql $DB_USER/$DB_PASS << EOF set echo off set heading off select status from v\$instance; EOF ) if [ "$STATUS"="OPEN" ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 数据库状态正常: $STATUS" return 0 else echo "[$(date '+%Y-%m-%d %H:%M:%S')] 数据库状态异常: $STATUS" # 发送告警 send_alert "DM数据库状态异常" "critical" "数据库状态: $STATUS" return 1 fi } # 检查会话数 check_sessions() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] 检查会话数" SESSIONS=$(disql $DB_USER/$DB_PASS << EOF set echo off set heading off select count(*) from v\$sessions; EOF ) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 当前会话数: $SESSIONS" if [ $SESSIONS -gt 1000 ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 会话数过高: $SESSIONS" # 发送告警 send_alert "DM数据库会话数过高" "warning" "当前会话数: $SESSIONS" return 1 else echo "[$(date '+%Y-%m-%d %H:%M:%S')] 会话数正常: $SESSIONS" return 0 fi } # 检查CPU使用率 check_cpu() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] 检查CPU使用率" CPU=$(disql $DB_USER/$DB_PASS << EOF set echo off set heading off select value from v\$sysstat where name='CPU TIME' ; EOF ) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 当前CPU使用率: $CPU%" if [ $(echo "$CPU > 80″ | bc) -eq 1 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] CPU使用率过高: $CPU%” # 发送告警
send_alert “DM数据库CPU使用率过高” “warning” “当前CPU使用率: $CPU%” return 1 else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] CPU使用率正常: $CPU%” return 0 fi } # 检查内存使用率 check_memory() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 检查内存使用率” MEMORY=$(disql $DB_USER/$DB_PASS << EOF set echo off set heading off select value from v\$sysstat where name='MEMORY USAGE' ; EOF ) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 当前内存使用率: $MEMORY%" if [ $(echo "$MEMORY > 80″ | bc) -eq 1 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 内存使用率过高: $MEMORY%” # 发送告警
send_alert “DM数据库内存使用率过高” “warning” “当前内存使用率: $MEMORY%” return 1 else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 内存使用率正常: $MEMORY%” return 0 fi } # 检查表空间使用率 check_tablespace() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 检查表空间使用率” TABLESPACE=$(disql $DB_USER/$DB_PASS << EOF set echo off set heading off select round(sum(bytes)/1024/1024/1024, 2) from dba_data_files; EOF ) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 当前表空间使用: $TABLESPACE GB" if [ $(echo "$TABLESPACE > 800″ | bc) -eq
1 ]; then echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 表空间使用率过高: $TABLESPACE GB” # 发送告警
send_alert “DM数据库表空间使用率过高” “warning” “当前表空间使用: $TABLESPACE GB” return 1 else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 表空间使用率正常: $TABLESPACE GB” return 0 fi } # 发送告警 send_alert() {
ALERT_NAME=$1 ALERT_LEVEL=$2 ALERT_MESSAGE=$3 echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 发送告警: $ALERT_NAME” #
保存告警信息 echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 告警名称: $ALERT_NAME”>> $ALERT_DIR/dm_alert_$DATE.log
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 告警级别: $ALERT_LEVEL” >> $ALERT_DIR/dm_alert_$DATE.log
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 告警消息: $ALERT_MESSAGE” >> $ALERT_DIR/dm_alert_$DATE.log
# 发送邮件告警
# send_email_alert ”
$ALERT_NAME” “$ALERT_LEVEL” “$ALERT_MESSAGE”
# 发送短信告警
# send_sms_alert ”
$ALERT_NAME” “$ALERT_LEVEL” “$ALERT_MESSAGE”
# 发送微信告警
# send_wechat_alert ”
$ALERT_NAME” “$ALERT_LEVEL” “$ALERT_MESSAGE”
}
# 主函数
main() {
case $1 in
status)
check_status
;;
sessions)
check_sessions
;;
cpu)
check_cpu
;;
memory)
check_memory
;;
tablespace)
check_tablespace
;;
all)
check_status
check_sessions
check_cpu
check_memory
check_tablespace
;;
*)
echo “Usage: $0 {status|sessions|cpu|memory|tablespace|all}”
exit 1
esac
}
# 执行主函数
main $*
# 记录日志
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 监控操作完成” >> $LOG_DIR/dm_monitor.log

3.1.3 维护自动化脚本

# 维护自动化脚本
#!/bin/bash
# dm_maintenance.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
# 配置参数
DB_USER=SYSDBA
DB_PASS=SYSDBA
LOG_DIR=/dm/logs
DATE=$(date +%Y%m%d)
TIME=$(date +%H%M%S)
# 创建日志目录
mkdir -p $LOG_DIR
# 表空间维护
maintain_tablespace() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始表空间维护”
LOG_FILE=$LOG_DIR/tablespace_maintenance_$DATE.log
disql $DB_USER/$DB_PASS << EOF> $LOG_FILE
— 检查表空间使用情况
select tablespace_name,
round(sum(bytes)/1024/1024/1024, 2) size_gb,
round(sum(bytes)/1024/1024/1024 * 100 / (select sum(bytes)/1024/1024/1024 from dba_data_files), 2)
usage_pct
from dba_data_files
group by tablespace_name
order by usage_pct desc;
— 扩展表空间
— alter tablespace USERS add datafile ‘/dm/data/users02.dbf’ size 1024M autoextend on maxsize 10240M;
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 表空间维护完成”
EOF
if [ $? -eq 0 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 表空间维护成功”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 表空间维护失败”
exit 1
fi
}
# 索引维护
maintain_index() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始索引维护”
LOG_FILE=$LOG_DIR/index_maintenance_$DATE.log
disql $DB_USER/$DB_PASS << EOF> $LOG_FILE
— 检查索引使用情况
select table_name,
index_name,
blevel,
leaf_blocks,
distinct_keys,
clustering_factor
from dba_indexes
where owner = ‘FGEDU’
order by table_name, index_name;
— 重建索引
— alter index fgedu.idx_fgedu_id rebuild;
— 分析索引
— analyze index fgedu.idx_fgedu_id compute statistics;
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 索引维护完成”
EOF
if [ $? -eq 0 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 索引维护成功”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 索引维护失败”
exit 1
fi
}
# 统计信息收集
collect_statistics() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始收集统计信息”
LOG_FILE=$LOG_DIR/statistics_collection_$DATE.log
disql $DB_USER/$DB_PASS << EOF> $LOG_FILE
— 收集表统计信息
analyze table fgedu.fgedu_user compute statistics;
— 收集索引统计信息
analyze index fgedu.idx_fgedu_id compute statistics;
— 收集系统统计信息
dbms_stats.gather_schema_stats(‘FGEDU’, cascade=>true);
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 统计信息收集完成”
EOF
if [ $? -eq 0 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 统计信息收集成功”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 统计信息收集失败”
exit 1
fi
}
# 日志清理
cleanup_log() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始清理日志”
# 清理7天前的日志
find $LOG_DIR -name “*.log” -mtime +7 -delete
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 日志清理完成”
}
# 临时文件清理
cleanup_temp() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始清理临时文件”
# 清理临时文件
rm -rf /dm/temp/*
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 临时文件清理完成”
}
# 主函数
main() {
case $1 in
tablespace)
maintain_tablespace
;;
index)
maintain_index
;;
statistics)
collect_statistics
;;
cleanup_log)
cleanup_log
;;
cleanup_temp)
cleanup_temp
;;
all)
maintain_tablespace
maintain_index
collect_statistics
cleanup_log
cleanup_temp
;;
*)
echo “Usage: $0 {tablespace|index|statistics|cleanup_log|cleanup_temp|all}”
exit 1
esac
}
# 执行主函数
main $*
# 记录日志
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 维护操作完成” >> $LOG_DIR/dm_maintenance.log

3.2 DM数据库自动化运维配置

3.2.1 定时任务配置

# 定时任务配置
#
# 1. 备份定时任务
# 每天凌晨2点执行全量备份
0 2 * * * /dm/scripts/dm_backup.sh full >> /dm/logs/dm_backup_full.log 2>&1
# 每小时执行增量备份
0 * * * * /dm/scripts/dm_backup.sh incremental >> /dm/logs/dm_backup_incremental.log 2>&1
# 每30分钟执行日志备份
*/30 * * * * /dm/scripts/dm_backup.sh log >> /dm/logs/dm_backup_log.log 2>&1
# 每天凌晨3点清理过期备份
0 3 * * * /dm/scripts/dm_backup.sh cleanup >> /dm/logs/dm_backup_cleanup.log 2>&1
#
# 2. 监控定时任务
# 每分钟检查数据库状态
* * * * * /dm/scripts/dm_monitor.sh status >> /dm/logs/dm_monitor_status.log 2>&1
# 每5分钟检查会话数
*/5 * * * * /dm/scripts/dm_monitor.sh sessions >> /dm/logs/dm_monitor_sessions.log 2>&1
# 每5分钟检查CPU使用率
*/5 * * * * /dm/scripts/dm_monitor.sh cpu >> /dm/logs/dm_monitor_cpu.log 2>&1
# 每5分钟检查内存使用率
*/5 * * * * /dm/scripts/dm_monitor.sh memory >> /dm/logs/dm_monitor_memory.log 2>&1
# 每10分钟检查表空间使用率
*/10 * * * * /dm/scripts/dm_monitor.sh tablespace >> /dm/logs/dm_monitor_tablespace.log 2>&1
#
# 3. 维护定时任务
# 每天凌晨4点执行表空间维护
0 4 * * * /dm/scripts/dm_maintenance.sh tablespace >> /dm/logs/dm_maintenance_tablespace.log 2>&1
# 每周日凌晨5点执行索引维护
0 5 * * 0 /dm/scripts/dm_maintenance.sh index >> /dm/logs/dm_maintenance_index.log 2>&1
# 每天凌晨6点收集统计信息
0 6 * * * /dm/scripts/dm_maintenance.sh statistics >> /dm/logs/dm_maintenance_statistics.log 2>&1
# 每天凌晨7点清理日志
0 7 * * * /dm/scripts/dm_maintenance.sh cleanup_log >> /dm/logs/dm_maintenance_cleanup_log.log 2>&1
# 每天凌晨8点清理临时文件
0 8 * * * /dm/scripts/dm_maintenance.sh cleanup_temp >> /dm/logs/dm_maintenance_cleanup_temp.log 2>&1

3.2.2 配置文件管理

# 配置文件管理
#
# 1. 备份配置文件
# /dm/conf/dm_backup.conf
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
[database]
db_user=SYSDBA
db_pass=SYSDBA
db_name=FGEDU
[backup]
backup_dir=/dm/backup
log_dir=/dm/logs
retention_days=30
[full_backup]
enabled=true
schedule=0 2 * * *
compress=true
[incremental_backup]
enabled=true
schedule=0 * * * *
compress=true
[log_backup]
enabled=true
schedule=*/30 * * * *
compress=true
[cleanup]
enabled=true
schedule=0 3 * * *
full_retention=30
incremental_retention=7
log_retention=30
#
# 2. 监控配置文件
# /dm/conf/dm_monitor.conf
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
[database]
db_user=zabbix
db_pass=Zabbix123
db_name=FGEDU
[monitor]
log_dir=/dm/logs
alert_dir=/dm/alerts
[status_check]
enabled=true
schedule=* * * * *
alert_level=critical
[sessions_check]
enabled=true
schedule=*/5 * * * *
threshold=1000
alert_level=warning
[cpu_check]
enabled=true
schedule=*/5 * * * *
threshold=80
alert_level=warning
[memory_check]
enabled=true
schedule=*/5 * * * *
threshold=80
alert_level=warning
[tablespace_check]
enabled=true
schedule=*/10 * * * *
threshold=800
alert_level=warning
#
# 3. 维护配置文件
# /dm/conf/dm_maintenance.conf
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
[database]
db_user=SYSDBA
db_pass=SYSDBA
db_name=FGEDU
[maintenance]
log_dir=/dm/logs
[tablespace_maintenance]
enabled=true
schedule=0 4 * * *
[index_maintenance]
enabled=true
schedule=0 5 * * 0
[statistics_collection]
enabled=true
schedule=0 6 * * *
[log_cleanup]
enabled=true
schedule=0 7 * * *
retention_days=7
[temp_cleanup]
enabled=true
schedule=0 8 * * *

3.3 DM数据库自动化运维维护

3.3.1 脚本维护计划

# 脚本维护计划
#
# 1. 日常维护
– 脚本检查:检查自动化脚本运行状态
– 日志检查:检查脚本运行日志
– 错误检查:检查脚本运行错误
– 性能检查:检查脚本运行性能
#
# 2. 定期维护
– 脚本更新:定期更新自动化脚本
– 参数优化:定期优化脚本参数
– 功能增强:定期增强脚本功能
– 性能优化:定期优化脚本性能
#
# 3. 维护任务
##
# 脚本维护
– 脚本检查:检查脚本运行状态
– 脚本测试:测试脚本功能
– 脚本更新:更新脚本版本
– 脚本优化:优化脚本性能
##
# 日志维护
– 日志检查:检查脚本运行日志
– 日志分析:分析脚本运行情况
– 日志归档:归档历史日志
– 日志清理:清理过期日志
##
# 配置维护
– 配置检查:检查配置文件
– 配置更新:更新配置文件
– 配置测试:测试配置文件
– 配置备份:备份配置文件
#
# 4. 维护工具
– 日志工具:查看和分析脚本运行日志
– 测试工具:测试脚本功能
– 优化工具:优化脚本性能
– 监控工具:监控脚本运行状态
#
# 5. 维护文档
– 维护计划:制定详细的维护计划
– 维护记录:记录维护过程和结果
– 问题记录:记录维护中发现的问题
– 改进措施:记录改进措施

3.3.2 脚本维护执行

# 脚本维护执行
#
# 1. 日常维护
##
# 脚本检查
$ /dm/scripts/check_scripts.sh
##
# 日志检查
$ /dm/scripts/check_logs.sh
##
# 错误检查
$ /dm/scripts/check_errors.sh
##
# 性能检查
$ /dm/scripts/check_performance.sh
#
# 2. 定期维护
##
# 脚本更新
$ cd /dm/scripts
$ git pull
$ chmod +x *.sh
##
# 参数优化
$ vi /dm/conf/dm_backup.conf
$ vi /dm/conf/dm_monitor.conf
$ vi /dm/conf/dm_maintenance.conf
##
# 功能增强
$ vi /dm/scripts/dm_backup.sh
$ vi /dm/scripts/dm_monitor.sh
$ vi /dm/scripts/dm_maintenance.sh
##
# 性能优化
$ vi /dm/scripts/dm_backup.sh
# 优化备份性能
# 添加并行备份
# 优化压缩算法
#
# 3. 脚本维护
##
# 脚本检查
#!/bin/bash
# check_scripts.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
SCRIPT_DIR=/dm/scripts
LOG_DIR=/dm/logs
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 检查脚本运行状态”
# 检查备份脚本
if ps aux | grep -v grep | grep “dm_backup.sh” > /dev/null; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份脚本正在运行”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份脚本未运行”
fi
# 检查监控脚本
if ps aux | grep -v grep | grep “dm_monitor.sh” > /dev/null; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 监控脚本正在运行”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 监控脚本未运行”
fi
# 检查维护脚本
if ps aux | grep -v grep | grep “dm_maintenance.sh” > /dev/null; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 维护脚本正在运行”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 维护脚本未运行”
fi
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 脚本检查完成”
##
# 日志检查
#!/bin/bash
# check_logs.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
LOG_DIR=/dm/logs
DATE=$(date +%Y%m%d)
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 检查脚本运行日志”
# 检查备份日志
if [ -f $LOG_DIR/dm_backup_$DATE.log ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份日志: $LOG_DIR/dm_backup_$DATE.log”
tail -20 $LOG_DIR/dm_backup_$DATE.log
fi
# 检查监控日志
if [ -f $LOG_DIR/dm_monitor_$DATE.log ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 监控日志: $LOG_DIR/dm_monitor_$DATE.log”
tail -20 $LOG_DIR/dm_monitor_$DATE.log
fi
# 检查维护日志
if [ -f $LOG_DIR/dm_maintenance_$DATE.log ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 维护日志: $LOG_DIR/dm_maintenance_$DATE.log”
tail -20 $LOG_DIR/dm_maintenance_$DATE.log
fi
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 日志检查完成”
##
# 错误检查
#!/bin/bash
# check_errors.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
LOG_DIR=/dm/logs
DATE=$(date +%Y%m%d)
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 检查脚本运行错误”
# 检查备份错误
if grep -i “error\|fail” $LOG_DIR/dm_backup_$DATE.log > /dev/null; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 发现备份错误:”
grep -i “error\|fail” $LOG_DIR/dm_backup_$DATE.log
fi
# 检查监控错误
if grep -i “error\|fail” $LOG_DIR/dm_monitor_$DATE.log > /dev/null; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 发现监控错误:”
grep -i “error\|fail” $LOG_DIR/dm_monitor_$DATE.log
fi
# 检查维护错误
if grep -i “error\|fail” $LOG_DIR/dm_maintenance_$DATE.log > /dev/null; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 发现维护错误:”
grep -i “error\|fail” $LOG_DIR/dm_maintenance_$DATE.log
fi
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 错误检查完成”
##
# 性能检查
#!/bin/bash
# check_performance.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
LOG_DIR=/dm/logs
DATE=$(date +%Y%m%d)
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 检查脚本运行性能”
# 检查备份性能
if [ -f $LOG_DIR/dm_backup_$DATE.log ]; then
START_TIME=$(grep “开始全量备份” $LOG_DIR/dm_backup_$DATE.log | head -1 | awk ‘{print $1}’)
END_TIME=$(grep “备份操作完成” $LOG_DIR/dm_backup_$DATE.log | tail -1 | awk ‘{print $1}’)
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份开始时间: $START_TIME”
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份结束时间: $END_TIME”
fi
# 检查监控性能
if [ -f $LOG_DIR/dm_monitor_$DATE.log ]; then
MONITOR_COUNT=$(wc -l < $LOG_DIR/dm_monitor_$DATE.log) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 监控次数: $MONITOR_COUNT" fi # 检查维护性能 if [ -f $LOG_DIR/dm_maintenance_$DATE.log ]; then START_TIME=$(grep "开始表空间维护" $LOG_DIR/dm_maintenance_$DATE.log | head -1 | awk '{print $1}' ) END_TIME=$(grep "维护操作完成" $LOG_DIR/dm_maintenance_$DATE.log | tail -1 | awk '{print $1}' ) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 维护开始时间: $START_TIME" echo "[$(date '+%Y-%m-%d %H:%M:%S')] 维护结束时间: $END_TIME" fi echo "[$(date '+%Y-%m-%d %H:%M:%S')] 性能检查完成" ## 4. 维护文档 ## # 维护计划 $ vi /dm/docs/script_maintenance_plan.md ## # 维护记录 $ vi /dm/docs/script_maintenance_log.md ## # 问题记录 $ vi /dm/docs/script_issue_log.md ## # 改进措施 $ vi /dm/docs/script_improvement_plan.md

Part04-生产案例与实战讲解

4.1 DM数据库备份自动化脚本案例

以下是一个备份自动化脚本的案例:

#
# 备份自动化脚本案例
##
# 场景描述
某企业需要为DM数据库搭建备份自动化脚本,实现数据库的自动备份和清理。
##
# 实施步骤
# 1. 环境准备
#
# 数据库环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
– 内存:64GB
– CPU:16核
– 磁盘:1TB
#
# 备份目录
– 全量备份:/dm/backup/full
– 增量备份:/dm/backup/incremental
– 日志备份:/dm/backup/log
– 备份日志:/dm/backup/log
# 2. 创建备份脚本
#!/bin/bash
# dm_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
# 配置参数
DB_USER=SYSDBA
DB_PASS=SYSDBA
BACKUP_DIR=/dm/backup
LOG_DIR=/dm/logs
DATE=$(date +%Y%m%d)
TIME=$(date +%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR/full
mkdir -p $BACKUP_DIR/incremental
mkdir -p $BACKUP_DIR/log
mkdir -p $LOG_DIR
# 全量备份
full_backup() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始全量备份”
BACKUP_FILE=$BACKUP_DIR/full/fgedu_full_$DATE.dmp
LOG_FILE=$BACKUP_DIR/log/fgedu_full_$DATE.log
dexp $DB_USER/$DB_PASS file=$BACKUP_FILE log=$LOG_FILE full=y
if [ $? -eq 0 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 全量备份成功: $BACKUP_FILE”
# 压缩备份文件
gzip $BACKUP_FILE
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份文件已压缩: $BACKUP_FILE.gz”
# 获取备份文件大小
SIZE=$(du -h $BACKUP_FILE.gz | awk ‘{print $1}’)
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份文件大小: $SIZE”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 全量备份失败”
# 发送告警
send_alert “DM数据库全量备份失败” “critical” “全量备份失败,请检查日志”
exit 1
fi
}
# 增量备份
incremental_backup() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始增量备份”
BACKUP_FILE=$BACKUP_DIR/incremental/fgedu_incremental_$DATE_$TIME.dmp
LOG_FILE=$BACKUP_DIR/log/fgedu_incremental_$DATE_$TIME.log
dexp $DB_USER/$DB_PASS file=$BACKUP_FILE log=$LOG_FILE incremental=y
if [ $? -eq 0 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 增量备份成功: $BACKUP_FILE”
# 压缩备份文件
gzip $BACKUP_FILE
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份文件已压缩: $BACKUP_FILE.gz”
# 获取备份文件大小
SIZE=$(du -h $BACKUP_FILE.gz | awk ‘{print $1}’)
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份文件大小: $SIZE”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 增量备份失败”
# 发送告警
send_alert “DM数据库增量备份失败” “warning” “增量备份失败,请检查日志”
exit 1
fi
}
# 日志备份
log_backup() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始日志备份”
BACKUP_FILE=$BACKUP_DIR/log/fgedu_log_$DATE_$TIME.dmp
LOG_FILE=$BACKUP_DIR/log/fgedu_log_$DATE_$TIME.log
dexp $DB_USER/$DB_PASS file=$BACKUP_FILE log=$LOG_FILE log=y
if [ $? -eq 0 ]; then
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 日志备份成功: $BACKUP_FILE”
# 压缩备份文件
gzip $BACKUP_FILE
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份文件已压缩: $BACKUP_FILE.gz”
# 获取备份文件大小
SIZE=$(du -h $BACKUP_FILE.gz | awk ‘{print $1}’)
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份文件大小: $SIZE”
else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 日志备份失败”
# 发送告警
send_alert “DM数据库日志备份失败” “warning” “日志备份失败,请检查日志”
exit 1
fi
}
# 清理过期备份
cleanup_backup() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 开始清理过期备份”
# 清理30天前的全量备份
FULL_COUNT=$(find $BACKUP_DIR/full -name “*.dmp.gz” -mtime +30 | wc -l)
find $BACKUP_DIR/full -name “*.dmp.gz” -mtime +30 -delete
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 清理了 $FULL_COUNT 个全量备份文件”
# 清理7天前的增量备份
INCREMENTAL_COUNT=$(find $BACKUP_DIR/incremental -name “*.dmp.gz” -mtime +7 | wc -l)
find $BACKUP_DIR/incremental -name “*.dmp.gz” -mtime +7 -delete
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 清理了 $INCREMENTAL_COUNT 个增量备份文件”
# 清理30天前的日志备份
LOG_COUNT=$(find $BACKUP_DIR/log -name “*.dmp.gz” -mtime +30 | wc -l)
find $BACKUP_DIR/log -name “*.dmp.gz” -mtime +30 -delete
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 清理了 $LOG_COUNT 个日志备份文件”
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 过期备份清理完成”
}
# 发送告警
send_alert() {
ALERT_NAME=$1
ALERT_LEVEL=$2
ALERT_MESSAGE=$3
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 发送告警: $ALERT_NAME”
# 发送邮件告警
echo “$ALERT_MESSAGE” | mail -s “[告警] $ALERT_NAME” dba@fgedu.net.cn
# 发送短信告警
# curl -X POST http://sms.fgedu.net.cn/api/send \
# -d “phone=13800138000” \
# -d “message=
$ALERT_NAME: $ALERT_MESSAGE”
}
# 主函数
main() {
case $1 in
full)
full_backup
;;
incremental)
incremental_backup
;;
log)
log_backup
;;
cleanup)
cleanup_backup
;;
all)
full_backup
cleanup_backup
;;
*)
echo “Usage: $0 {full|incremental|log|cleanup|all}”
exit 1
esac
}
# 执行主函数
main $*
# 记录日志
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 备份操作完成” >> $LOG_DIR/dm_backup.log
# 3. 配置定时任务
# 每天凌晨2点执行全量备份
0 2 * * * /dm/scripts/dm_backup.sh full >> /dm/logs/dm_backup_full.log 2>&1
# 每小时执行增量备份
0 * * * * /dm/scripts/dm_backup.sh incremental >> /dm/logs/dm_backup_incremental.log 2>&1
# 每30分钟执行日志备份
*/30 * * * * /dm/scripts/dm_backup.sh log >> /dm/logs/dm_backup_log.log 2>&1
# 每天凌晨3点清理过期备份
0 3 * * * /dm/scripts/dm_backup.sh cleanup >> /dm/logs/dm_backup_cleanup.log 2>&1
# 4. 验证备份
##
# 查看备份文件
$ ls -lh /dm/backup/full/
$ ls -lh /dm/backup/incremental/
$ ls -lh /dm/backup/log/
##
# 查看备份日志
$ tail -f /dm/logs/dm_backup_full.log
$ tail -f /dm/logs/dm_backup_incremental.log
$ tail -f /dm/logs/dm_backup_log.log
##
# 测试恢复
$ dimp SYSDBA/SYSDBA file=/dm/backup/full/fgedu_full_20250409.dmp.gz log=/dm/logs/restore_test.log
# 5. 效果评估
##
# 备份效果
– 备份脚本正常运行
– 备份文件完整
– 备份性能良好
##
# 清理效果
– 过期备份清理及时
– 备份目录整洁
– 磁盘空间充足
##
# 告警效果
– 备份失败及时告警
– 告警信息准确
– 告警处理及时

4.2 DM数据库监控自动化脚本案例

以下是一个监控自动化脚本的案例:

#
# 监控自动化脚本案例
##
# 场景描述
某企业需要为DM数据库搭建监控自动化脚本,实现对数据库的实时监控和告警。
##
# 实施步骤
# 1. 环境准备
#
# 数据库环境
– 主机名:fgedu-db
– IP地址:192.168.1.200
– 操作系统:Oracle Linux 9.3
– 数据库:DM8
– 内存:64GB
– CPU:16核
– 磁盘:1TB
#
# 监控目录
– 监控日志:/dm/logs
– 告警目录:/dm/alerts
# 2. 创建监控脚本
#!/bin/bash
# dm_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
export DM_HOME=/dm/app
export PATH=$PATH:$DM_HOME/bin
# 配置参数
DB_USER=zabbix
DB_PASS=Zabbix123
LOG_DIR=/dm/logs
ALERT_DIR=/dm/alerts
DATE=$(date +%Y%m%d)
TIME=$(date +%H%M%S)
# 创建日志目录
mkdir -p $LOG_DIR
mkdir -p $ALERT_DIR
# 检查数据库状态
check_status() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 检查数据库状态”
STATUS=$(disql $DB_USER/$DB_PASS << EOF set echo off set heading off select status from v\$instance; EOF ) if [ "$STATUS"="OPEN" ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 数据库状态正常: $STATUS" return 0 else echo "[$(date '+%Y-%m-%d %H:%M:%S')] 数据库状态异常: $STATUS" # 发送告警 send_alert "DM数据库状态异常" "critical" "数据库状态: $STATUS" return 1 fi } # 检查会话数 check_sessions() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] 检查会话数" SESSIONS=$(disql $DB_USER/$DB_PASS << EOF set echo off set heading off select count(*) from v\$sessions; EOF ) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 当前会话数: $SESSIONS" if [ $SESSIONS -gt 1000 ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] 会话数过高: $SESSIONS" # 发送告警 send_alert "DM数据库会话数过高" "warning" "当前会话数: $SESSIONS" return 1 else echo "[$(date '+%Y-%m-%d %H:%M:%S')] 会话数正常: $SESSIONS" return 0 fi } # 检查CPU使用率 check_cpu() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] 检查CPU使用率" CPU=$(disql $DB_USER/$DB_PASS << EOF set echo off set heading off select value from v\$sysstat where name='CPU TIME' ; EOF ) echo "[$(date '+%Y-%m-%d %H:%M:%S')] 当前CPU使用率: $CPU%" if [ $(echo "$CPU > 80″ | bc) -eq 1 ];
then echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] CPU使用率过高: $CPU%” # 发送告警
send_alert “DM数据库CPU使用率过高” “warning” “当前CPU使用率: $CPU%” return 1 else
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] CPU使用率正常: $CPU%” return 0 fi } # 检查内存使用率 check_memory() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] 检查内存使用率” MEMORY=$(disql $DB_USER/$DB_PASS << EOF set echo off set heading off select value fr

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息