对于DBA来说,检查alert日志是日常工作。告警日志日积月累往往很大,而且每次在服务器上查看或者下载到目标主机查看都十分不方便。

为了方便,以下做出两种情况:(其他情况类推)

第一场景:每天早上上班检查头一天的告警日志。于是用以下脚本截取前一天的日志,发送到指定接收人的邮箱。

#编辑脚本:vim alertlog_day.sh  #oracle用户下执行
#!/bin/bash
# 筛选前一日的alert日志,方便每天早上查看前一天的日志。
#
export LANG=en_US
TODAY=`date +%Y-%m-%d`
YESTERDAY=`date -d -1days +%Y-%m-%d`
sed -n "/$YESTERDAY/,/$TODAY/"p $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert_$ORACLE_SID.log > /opt/oraclesh/alert_$ORACLE_SID_$YESTERDAY.log
echo "Please find the attachment!" |mail -s "ALTER_SID_LOG_$YESTERDAY" -a /opt/oraclesh/alert_$ORACLE_SID_$YESTERDAY.log xxx@xxx.com

第二场景:每隔一个小时截取一次告警日志,并对日志内容初步分析。判断是否存在ORA-相关错误,出现错误的才发至指定接收人邮箱。

#编辑脚本:vim alertlog_hour.sh    #oracle用户下执行
#!/bin/bash
# 筛选alter日志:按每小时截取日志并存放到目标路径。
# 判断如果该日志存在ORA-的相关错误,则发送邮件给接收人;
# 判断如果该日志无任何错误,则无需发送邮件。只记录一下执行日志即可,以备后续查阅。
export LANG=en_US
ONE_HOUR_AGO=`date -d -1hour +%Y-%m-%dT%H`
CURRENT_TIME=`date +%Y-%m-%dT%H`
STORAGE_PATH="/opt/oraclesh/alert_$ORACLE_SID_$ONE_HOUR_AGO.log"
sed -n "/$ONE_HOUR_AGO/,/$CURRENT_TIME/"p $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert_$ORACLE_SID.log > $STORAGE_PATH
if [ `grep -i "ORA-" $STORAGE_PATH | wc -l` -ne ] ;then
echo "Find errors, please see the attachment for details !" |mail -s "ALTER_SID_LOG_$ONE_HOUR_AGO" -a $STORAGE_PATH xxx@xxx.com
else
echo "$ONE_HOUR_AGO: No error find in file" >> /opt/alert_normal.log
fi

如果要在root用户下书写,增加设置变量:

ORACLE_BASE=`su - oracle -c "env | grep ORACLE_BASE "|awk -F "=" '{print $2}'`
ORACLE_SID=`su - oracle -c "env | grep ORACLE_SID "|awk -F "=" '{print $2}'`

SHELL脚本学习-定时检查Oracle alert日志并发送mail的更多相关文章

  1. Shell学习---Shell脚本的静态检查工具shellcheck

    Shell脚本的静态检查工具shellcheck ubuntu下 apt install shellcheck ,即可安装shellcheck.写完shell脚本,记得用它检查一下,能给你点建议的.要 ...

  2. Shell脚本学习指南笔记

    Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...

  3. 笔记——shell脚本学习指南

    <shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...

  4. Shell 脚本学习资料搜集

    Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...

  5. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  6. 转 shell脚本学习指南

    shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...

  7. Shell脚本学习 - 运算符

    继续shell脚本学习.上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作. 运算符 bash不支持简单的数学计算,需要依赖其他命令实现. expr可以代为实现. # 表达式一般这么写 ` + ...

  8. shell脚本学习总结02--数组

    bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...

  9. shell脚本学习之6小时搞定(1)

    shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...

随机推荐

  1. JHipster简介

    JHipster简介 JHipster或者称Java Hipster,是一个应用代码产生器,能够创建Spring Boot + AngularJS的应用.开源项目地址:JHipster/Github. ...

  2. ie8兼容性总结

    DOCTYPE 首先需要确保你的HTML页面开始部分要有DOCTYPE声明.DOCTYPE告诉浏览器使用什么样的HTML或XHTML规范来解析HTML文档,具体会影响: 对标记.attributes ...

  3. ArcGIS API for JS 测量线长(各折线段)

    这里测量长度主要分为两个方面,一个是在绘制长折线段时,不仅需要显示总线段的长度,还要在各线段的中间显示各折线段的长度:另一个则是在绘制多边形时,不仅需要显示多边形的面积,还需要在各边的中间显示线段长. ...

  4. anaconda安装Opencv报错:Could NOT find PythonLibs: Found unsuitable version "2.7.6",

    机器上装了两个python,一个是默认的,一个是anaconda.安装opencv时就报错了: -- Found PythonInterp: /home/deeplp/anaconda2/bin/py ...

  5. EMQTT本地源码搭建填坑记录

    因业务需求需要本地搭建一个emqtt的消息队列服务器,根据官网提示搭建失败,具体如下 官方步骤: Erlang 安装: http://www.erlang.org/ MSYS2 安装: http:// ...

  6. 云栖大会day1 下午

    下午参与的是创新创业专场 会议议程是 创新创业专场-2018阿里云创新中心年度盛典 13:30-14:10 阿里双创新征程 李中雨 阿里云创业孵化事业部总经理 14:10-14:40 人货场的渗透与重 ...

  7. Unity添加多个可视镜头Preview功能(一)

    打算写这样一个工具,可用于影片镜头调节,房产漫游的可视化,建立多个可视镜头,可以动态调整各个镜头的位置和旋转方向,同时,还能在类似于Camera 的Preview这样的小窗口中查看该镜头(在小窗口中点 ...

  8. ISO 2501 quality model division 学习笔记

    作为一个测试,学习质量模型,能够帮你 在测试设计的时候,从多个角度来思考测试用例的设计.而不仅仅是从 功能上, 同时 需要结合自己的产品,选择自己的侧重点,譬如我们公司的产品,安全性这一块 就比较小, ...

  9. js自动时间

    function showTime() { //时间 nowtime = new Date(); year = nowtime.getFullYear(); month = nowtime.getMo ...

  10. 大型分布式架构设计与实现-第一章SOA(面向服务的体系架构)

    拜读了大型分布式架构设计与实现,觉得该书作为入门不错,但内容过于简单,描述过于琐碎,小节之间连续性不强,不适合深入钻研学习.但为了更多的希望向架构师行业靠拢的工程师学习需要,本博客将对上书进行简化讲解 ...