在linux/aix下用邮件对表空间报警

2024-04-24 16:38

本文主要是介绍在linux/aix下用邮件对表空间报警,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自己写了一个表空间报警程序。针对自动扩展的数据文件,有一个file limitation的问题,如8k的数据库,数据文件的限制是32g,脚本针对这个问题也可以报警。

1.setup service.txt -->将server 上需要监控的service 名写入一个文件:
$more service.txt
db1
db2
db3

2.在每个数据库创建用户oper并授予以下权限
grant select on SYS.SM$TS_AVAIL to oper;
grant select on SYS.SM$TS_USED to oper;
grant select on SM$TS_FREE to oper;
grant select on v_$database to oper;
grant select on v_$parameter to oper;
grant select on dba_data_files to oper;
grant select on dba_extents to oper;
grant select on dba_free_space to oper;
grant connect,resource to oper;

3.用oper创建以下存储过程:
CREATE OR REPLACE PROCEDURE Space_Monitor
IS
var_dbname v$database.NAME%TYPE;
var_blocksize v$parameter.VALUE%TYPE;
var_filelimit NUMBER;
CURSOR cur_tabalert IS
SELECT v1.file_name,v1.autoextensible,num1 total_space,
num3 free_space,
num1-num3 "USED_SPACE"
FROM
(SELECT file_name,file_id,autoextensible,SUM(bytes) num1 FROM DBA_DATA_FILES GROUP BY file_name,file_id,autoextensible) v1,
  (SELECT file_id,SUM(BYTES) num3 FROM DBA_FREE_SPACE GROUP BY file_id) v3
  WHERE v1.file_id=v3.file_id(+);

CURSOR cur_tabspacealt IS
SELECT TABLESPACE_NAME,TOTAL,USED,FREE,USED_CENT,FREE_CENT FROM (
SELECT A.TABLESPACE_NAME,TRUNC(A.BYTES/1024/1024) TOTAL,TRUNC(B.BYTES/1024/1024) USED, TRUNC(C.BYTES/1024/1024) FREE,
ROUND((B.BYTES*100)/A.BYTES,2)  USED_CENT,ROUND((C.BYTES*100)/A.BYTES,2) FREE_CENT
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME) ;

BEGIN
SELECT NAME INTO var_dbname FROM v$database;
SELECT VALUE INTO var_blocksize FROM v$parameter WHERE NAME='db_block_size';
SELECT POWER(2,22)*var_blocksize INTO var_filelimit  FROM dual;
FOR rec_tabalert IN cur_tabalert
    LOOP
   IF rec_tabalert.autoextensible='YES'
         THEN
   IF rec_tabalert.used_space/var_filelimit >0.9 THEN
       DBMS_OUTPUT.PUT_LINE('File: '||rec_tabalert.file_name||' in database  '||var_dbname||' is autoextend,  '||' Now Used% is >90%');
          END IF;
     END IF;
END LOOP;
  FOR rec_tabspacealt IN cur_tabspacealt
    LOOP
   IF rec_tabspacealt.FREE_CENT<5 THEN
    DBMS_OUTPUT.PUT_LINE('Free space of Tablespace  '||rec_tabspacealt.tablespace_name||' in  database '||var_dbname||' is  <5%');
    END IF;
    END LOOP;
END;
/

4.运行以下脚本:
¥more space_monitor.ksh
. /etc/profile
. $HOME/.profile

USER="user@126.com 139xxxxxx@139.com" --利用139邮箱的短信功能进行实时报警

for i in `cat /u80/scripts/service.txt | awk -F: ' {print $1}'`
do
sqlplus oper/oper@$i << EOF
set serveroutput on
set echo off
set term off
set verify off
set feedback off
spool /u80/scripts/space_monitor_$i
exec space_monitor;
spool off
EOF

#checking
#echo "FILE: space_monitor_${i}.lst"
if (( `cat /u80/scripts/space_monitor_${i}.lst|wc -l` > 2 ))
then
  sed -e '1d;$d' /u80/scripts/space_monitor_${i}.lst|mail -s "${i} space is not enough" "${USER}"
fi
done

这篇关于在linux/aix下用邮件对表空间报警的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/932268

相关文章

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu