Linux/Unix shell 监控Oracle实例(monitor instance)

使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日至的监控,以

使用shell脚本实现对oracle数据库的监控与管理将大大简化dba的工作负担,,如常见的对实例的监控,监听的监控,告警日至的监控,以及数据库的备份,awr report的自动邮件等。本文给出linux 下使用 shell 脚本来监控 oracle 实例。

Linux Shell的相关参考:

Linux/Unix shell 脚本中调用SQL,RMAN脚本

Linux/Unix shell sql 之间传递变量

Linux Unix shell 调用 PL/SQL

1、监控Oracle实例shell脚本

  robin@SZDB:~/dba_scripts/custom/bin> more ck_inst.sh 
  # +——————————————————-+
  # +    CHECK INSTANCE STATUS AND SEND MAIL                |
  # +    Author : Robinson                                  |
  # +    Blog  : ,net/robinson_0612        |
  # +    Desc:                                              |
  # +        variable X_DB use to exclude some instance    |
  # +——————————————————-+
 
  #!/bin/bash
 
  # ——————————————–
  # Set environment vairable and define variable
  # ——————————————–
 
  if [ -f ~/.bash_profile ]; then
      . ~/.bash_profile
  fi
 
  ORATAB=/etc/oratab
  TIMESTAMP=`date +%Y%m%d%H%M`   
  MAILPATH=/users/robin/dba_scripts/sendEmail-v1.56
  LOG_DIR=/users/robin/dba_scripts/custom/log           
  LOG_FILE=${LOG_DIR}/ck_inst_$TIMESTAMP.log
  DBALIST=”robinson.cheng@12306.com;robinson_0612@12306.com”
  X_DB=’SYBO2SZ|CNQDII|CNFO’
  RETENTION=1
 
  # ———————-
  # Check instance status
  # ———————-
 
  if [ -z “$X_DB” ]; then
      X_DB=’DUMMY’
  fi
  {
  echo “`date` ”
  echo “Oracle Database(s) Status on `hostname`”
  echo “—————————————–”
  db=`egrep -i “:Y|:N” $ORATAB | cut -d”:” -f1 | grep -v “#” | grep -v “*”`
  pslist=`ps -ef | grep pmon | grep -v grep`
  dblist=`for i in $db; do echo $i; done | grep -vP $X_DB`
  for i in $dblist; do
      echo “$pslist” | grep “[oa]*_pmon_$i” > /dev/null 2>&1
      if (( $? )); then
          echo “Oracle Instance – $i: Down”
      else
          echo “Oracle Instance – $i: Up”
      fi
  done;
  }|tee -a ${LOG_FILE} 2>&1
 
  # ————————
  # Send Email
  # ————————
 
  cnt=`cat $LOG_FILE | grep Down | wc -l`
  if [ “$cnt” -gt 0 ]; then
      $MAILPATH/sendEmail -f szdb@2gotrade.com -t $DBALIST -u “Instance status on `hostname`” -o message-file=$LOG_FILE
  fi
 
  # ————————————————
  # Removing files older than $RETENTION parameter
  # ————————————————
 
  find ${LOG_DIR} -name “ck_inst*.*” -mtime +$RETENTION -exec rm {} ;
 
  exit
 
  robin@SZDB:~/dba_scripts/custom/bin> ./ck_inst.sh
  Fri Feb  1 15:10:41 CST 2013
  Oracle Database(s) Status on SZDB
  —————————————–
  Oracle Instance – CNBO1: Up
  Oracle Instance – CNBOTST: Down
  Oracle Instance – CNMMBO: Up
  Oracle Instance – MMBOTST: Up
  Oracle Instance – CNMMBOBK: Down
  Oracle Instance – CI8960U: Up
  Oracle Instance – CNBO2: Up
  Feb 01 15:10:41 szdb sendEmail[16024]: Email was sent successfully!

2、补充

a、上面的脚本根据/etc/oratab中列出的实例进行监控,可以监控多个实例。

b、变量X_DB用于排除那些不需要监控的实例,如脚本中排出了3个实例。也可以将该变量置空。

c、如果X_DB的值为空时,我们赋予了DUMMY,确保你的数据库实例名没有使用DUMMY,否则过滤不掉。

d、监控脚本在监控过程中只要有一个实例宕掉,则发送整个监控报告。

d、使用了sendEmail邮件发送程序来发送邮件。参阅:不可或缺的 sendEmail 见

e、尾部清除监控过程中产生的保留日期之前的日志。

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1901806.html

(0)
上一篇 2025年2月22日 14:54:55
下一篇 2025年2月22日 14:55:11

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Oracle 11g中Temp临时表空间、文件的新特性

    临时表空间是Oracle体系结构中比较特殊的结构。通常情境下,数据库使用者只需要设置对应的临时表空间(到用户),临时段分配等工 临时表空间是oracle体系结构中比较特殊的结构。通常情境下,数据库使用者只需要设置对应的临时表空间(到用户),…

    数据库 2025年2月23日
    100
  • Oracle SQL 执行计划和分析小结

    Oracle有多种方式获得一条SQL语句的查询计划,比如使用explain plan命令,在PLSQL Developer里面按F5快捷键等,但是作为SQL调优, oracle有多种方式获得一条sql语句的查询计划,比如使用explain …

    数据库 2025年2月23日
    100
  • Oracle空间数据库函数使用

    最近一段时间一直在用Oracle的空间数据库做一些空间数据处理和分析功能,写这篇文章主要是做一个笔记,毕竟好记性不如烂笔头嘛。 最近一段时间一直在用oracle的空间数据库做一些空间数据处理和分析功能,写这篇文章主要是做一个笔记,毕竟好记性…

    数据库 2025年2月23日
    100
  • DB2 SQL0902C 解决实例

    我在其他主机上对数据库进行在线备份后打算在该主机上进行DB2的还原遭遇SQL0902C A system error (reason code = 8) occurred. 周日开发环境在对数据库进行归档删除时,将数据库重启之后,数据库无法…

    数据库 2025年2月23日
    100
  • Oracle下session的查询与删除

    Oracle下session的查询与删除 1、查询当前session SQLgt; select username,sid,serial# from v$session where username is not oracle下sessio…

    数据库 2025年2月23日
    100
  • undo Segment深入解析

    在undo自动管理时,设置了undo_retention以后,undo块就存在四种状态。Active:表示正在使用该undo的事务还没有提交或回滚。Inac 在undo自动管理时,设置了undo_retention以后,undo块就存在四种…

    数据库 2025年2月23日
    100
  • MySQL的自动化安装部署

    有过MySQL运维的人应该都清楚,线上的MySQL一般都采用源码编译,因为这样才可以根据企业的各自需要选择要编译的功能,虽然MySQL的 有过mysql运维的人应该都清楚,线上的mysql一般都采用源码编译,因为这样才可以根据企业的各自需要…

    数据库 2025年2月23日
    100
  • Oracle常用系统查询

    1 查询系统所有对象 SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, TIMESTAMP, STATUS FROM DBA_OBJECTS W 1  查询系统所…

    数据库 2025年2月23日
    100
  • Oracle数据泵详解

    数据泵与常规方式对比:Oracle 10g开始引入数据泵,与传统exp/imp相比,数据泵可以作业分离,允许挂起和恢复导入导出任务,可以从 数据泵与常规方式对比:oracle 10g开始引入数据泵,与传统exp/imp相比,数据泵可以作业分…

    数据库 2025年2月23日
    100
  • Oracle函数-高阶篇

    下面整理了部分Oracle函数-高阶篇: 1、 CATSTR 举例:SELECT CATSTR(COLUMN_NAME) NAME_LIST FROM DBA_TAB_COLUMNS WHERE TR 下面整理了部分oracle函数-高阶篇…

    数据库 2025年2月23日
    100

发表回复

登录后才能评论