在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

相关文章

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境