mysql 表空间 监控

编程入门 行业动态 更新时间:2024-10-26 16:22:00

mysql 表<a href=https://www.elefans.com/category/jswz/34/1771407.html style=空间 监控"/>

mysql 表空间 监控

1、建立监控脚本:

$cat check_tablespace_health_report.sh#!/bin/sh

source ~/.bash_profile

#定义变量

v_datetime=`date +"%Y-%m-%d %H:%M:%S"`

v_username='oracle'

v_hostname=`hostname`

v_dbname='DB01'

#表空间大小报警阀值,单位:M

v_free_space=5000

#表空间使用百分比报警阀值

v_used_rate=85

#发送人

v_sendmail='XXXXX@139'

v_mailname='XXXXX@139'

v_password='XXXXX'

#smtp服务器IP或域名:smtp.qq

v_smtpserver='XXX.XXX.XXX.XXX'

#接收人,多个联系人用空格分开

v_receivemail='XXXXX@139 XXXXX@163'

#路径

v_path="/home/${v_username}/scripts"

v_logfile_temp="${v_path}/tablespace_health_report.temp"

sqlplus -S / as sysdba <

spool $v_logfile_temp

set heading off feedback off pagesize 0 verify off echo off time off timing off linesize 1000

SELECT '表空间' || D.TABLESPACE_NAME || '当前大小为:' || SPACE || 'M,可用空间为:' ||

FLOOR(F.FREE_SPACE) || 'M,空间使用率为:' ||

ROUND((1 - NVL(FREE_SPACE, 0) / SPACE) * 100, 2) || '%,空间实际使用率为:' ||

ROUND((SPACE - NVL(FREE_SPACE, 0)) /

DECODE(D.MAXBYTES / 1024 / 1024,

0,

SPACE,

D.MAXBYTES / 1024 / 1024) * 100,

2) || '%'

FROM (SELECT TABLESPACE_NAME,

SUM(DECODE(autoextensible, 'YES', MAXBYTES, USER_BYTES)) MAXBYTES,

nvl(SUM(BYTES) / 1024 / 1024, SUM(BYTES)) SPACE

FROM DBA_DATA_FILES

GROUP BY TABLESPACE_NAME) D,

(SELECT TABLESPACE_NAME, SUM(BYTES) / 1024 / 1024 FREE_SPACE

FROM DBA_FREE_SPACE

GROUP BY TABLESPACE_NAME) F

WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)

AND (ceil((1 - NVL(FREE_SPACE, 0) / SPACE) * 100) >= $v_used_rate and FLOOR(F.FREE_SPACE) <= $v_free_space);

spool off

set echo on

set feedback on

set heading on

exit

EOF

if [ `cat ${v_logfile_temp}|wc -l` -gt 0 ] ; then

echo "############################" > ${v_path}/tablespace_health_report.log

echo "USER: ${v_username}" >> ${v_path}/tablespace_health_report.log

echo "HOSTNAME: ${v_hostname}" >> ${v_path}/tablespace_health_report.log

echo "DBNAME: ${v_dbname}" >> ${v_path}/tablespace_health_report.log

echo "############################" >> ${v_path}/tablespace_health_report.log

echo "数据库${v_dbname}表空间告警:" >> ${v_path}/tablespace_health_report.log

cat ${v_logfile_temp} >> ${v_path}/tablespace_health_report.log

${v_path}/sendEmail -f ${v_sendmail} -t ${v_receivemail} -s ${v_smtpserver} -u "数据库${v_dbname}表空间报警邮件 - ${v_datetime}" -xu ${v_mailname} -xp ${v_password} -o message-content-type=text -o message-charset=GB2312 message-file=${v_path}/tablespace_health_report.log -l ${v_path}/check_tablespace_health_report.log

rm ${v_logfile_temp}

fi

2、配置crontab,每一分钟执行一次

$crontab -l#oracle tablespace check

*/10 * * * * /home/oracle/scripts/check_tablespace_health_report.sh >/dev/null 2>&1

更多推荐

mysql 表空间 监控

本文发布于:2024-03-08 14:32:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721141.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:空间   mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!