使用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脚本

[python] view plaincopy print?
  1. robin@SZDB:~/dba_scripts/custom/bin> more ck_inst.sh
  2. # +-------------------------------------------------------+
  3. # +    CHECK INSTANCE STATUS AND SEND MAIL                |
  4. # +    Author : Robinson                                  |
  5. # +    Blog   : http://blog.csdn.net/robinson_0612        |
  6. # +    Desc:                                              |
  7. # +         variable X_DB use to exclude some instance    |
  8. # +-------------------------------------------------------+
  9. #!/bin/bash
  10. # --------------------------------------------
  11. # Set environment vairable and define variable
  12. # --------------------------------------------
  13. if [ -f ~/.bash_profile ]; then
  14. . ~/.bash_profile
  15. fi
  16. ORATAB=/etc/oratab
  17. TIMESTAMP=`date +%Y%m%d%H%M`
  18. MAILPATH=/users/robin/dba_scripts/sendEmail-v1.56
  19. LOG_DIR=/users/robin/dba_scripts/custom/log
  20. LOG_FILE=${LOG_DIR}/ck_inst_$TIMESTAMP.log
  21. DBALIST="robinson.cheng@12306.com;robinson_0612@12306.com"
  22. X_DB='SYBO2SZ|CNQDII|CNFO'
  23. RETENTION=1
  24. # ----------------------
  25. # Check instance status
  26. # ----------------------
  27. if [ -z "$X_DB" ]; then
  28. X_DB='DUMMY'
  29. fi
  30. {
  31. echo "`date` "
  32. echo "Oracle Database(s) Status on `hostname`"
  33. echo "-----------------------------------------"
  34. db=`egrep -i ":Y|:N" $ORATAB | cut -d":" -f1 | grep -v "\#" | grep -v "\*"`
  35. pslist=`ps -ef | grep pmon | grep -v grep`
  36. dblist=`for i in $db; do echo $i; done | grep -vP $X_DB`
  37. for i in $dblist; do
  38. echo "$pslist" | grep "[oa]*_pmon_$i" > /dev/null 2>&1
  39. if (( $? )); then
  40. echo "Oracle Instance - $i: Down"
  41. else
  42. echo "Oracle Instance - $i: Up"
  43. fi
  44. done;
  45. }|tee -a ${LOG_FILE} 2>&1
  46. # ------------------------
  47. # Send Email
  48. # ------------------------
  49. cnt=`cat $LOG_FILE | grep Down | wc -l`
  50. if [ "$cnt" -gt 0 ]; then
  51. $MAILPATH/sendEmail -f szdb@2gotrade.com -t $DBALIST -u "Instance status on `hostname`" -o message-file=$LOG_FILE
  52. fi
  53. # ------------------------------------------------
  54. # Removing files older than $RETENTION parameter
  55. # ------------------------------------------------
  56. find ${LOG_DIR} -name "ck_inst*.*" -mtime +$RETENTION -exec rm {} \;
  57. exit
  58. robin@SZDB:~/dba_scripts/custom/bin> ./ck_inst.sh
  59. Fri Feb  1 15:10:41 CST 2013
  60. Oracle Database(s) Status on SZDB
  61. -----------------------------------------
  62. Oracle Instance - CNBO1: Up
  63. Oracle Instance - CNBOTST: Down
  64. Oracle Instance - CNMMBO: Up
  65. Oracle Instance - MMBOTST: Up
  66. Oracle Instance - CNMMBOBK: Down
  67. Oracle Instance - CI8960U: Up
  68. Oracle Instance - CNBO2: Up
  69. 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、尾部清除监控过程中产生的保留日期之前的日志。

转:http://blog.csdn.net/leshami/article/details/8563115

Linux/Unix shell 监控Oracle实例(monitor instance)相关推荐

  1. Linux/Unix shell 监控Oracle告警日志(monitor alter log file)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...

  2. 修改linux下全局数据库名,linux/unix下修改oracle数据库实例名的方法

    linux/unix下修改oracle数据库实例名的方法 2018年12月10日 | 萬仟网IT编程 | 我要评论 linux/unix下修改oracle实例名的方法 1.检查原来的数据库实例名 $ ...

  3. linux shell spool,Linux/Unix shell 脚本中调用SQL,RMAN脚本

    Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...

  4. 【编程实践】Linux / UNIX Shell编程极简教程

    不同于一般的介绍Linux Shell 的文章,本文并未花大篇幅去介绍 Shell 语法,而是以面向"对象" 的方式引入大量的实例介绍 Shell 日常操作,"对象&qu ...

  5. Linux启动多个Oracle实例

    概述 Centos6.5 有两个数据库实例 orcl1 和 orcl2 需要都起来 关键:操作每个数据库实例之前设置ORACLE_SID变量 export ORACLE_SID=数据库实例 启动orc ...

  6. linux unix shell programming,UnixampLinux Shell Programming I.ppt

    <Unix&ampLinux Shell Programming I.ppt>由会员分享,可在线阅读,更多相关<Unix&ampLinux Shell Program ...

  7. linux unix shell programming,UNIX Shell Programming, 4th Edition

    摘要: Harness the power of shells . . . for the Internet and beyondCompletely revised and updated to i ...

  8. Linux Unix shell 编程指南学习笔记(第五部分)

    第二十五章 深入讨论 << 当shell 看到 << 的时候,它知道下一个词是一个分界符.该分界符后面的内容都被当做输入,直到shell又看到该分界符(位于单独的一行).比方: ...

  9. 一本不错的Linux/Unix Shell脚本学习教程

    找到一本很详细的Linux Shell脚本教程,其实里面不光讲了Shell脚本编程,还介绍了系统的各种命令 http://www.dingbing.com/book/linuxshell.zip 点这 ...

  10. linux bash sh,linux bash shell.sh编程实例

    1.输出 #!/bin/bash echo "Please type your number:" read a for ((i=1;i<=a;i++)) do for ((p ...

最新文章

  1. 使用OpenCV实现摄像头测距
  2. 启动进程 问号_有两个这样的进程:僵尸进程amp;孤儿进程,蓝瘦香菇
  3. 10个迷惑新手的CocoaObjective-c开发问题
  4. Java动态代理详解(Proxy+InvocationHandler)
  5. TIPS FOR LIVING AT CAMBRIDGE
  6. Alteral Max 10 FPGA 优点
  7. java 单例模式打包jar_在 Spark 中实现单例模式的技巧
  8. AT3913-XOR Tree【状压dp】
  9. Matlab矩阵查找
  10. vnr光学识别怎么打开_干货|指纹锁的指纹识别模块的前世今生,智能锁的指纹识别到底有多智能?...
  11. 运营商市场经营方向及趋势
  12. python中的Lambda表达式/函数
  13. 拼多多一出手,苹果AirPods Pro才发布一天就降价了
  14. Linux开机启动过程(6):页表的初始化、避开保留的内存、地址随机化
  15. 【C#编程基础学习笔记】6---变量的命名
  16. Boostnote跨平台 Markdown 编辑器
  17. 演说之禅:幻灯片的演说是多多益善吗?
  18. 大学生计算机考试系统软件,我爱C”《大学计算机基础》考试系统学生端软件使用说明.doc...
  19. 雷达威力图绘制matlab,用Matlab语言实现雷达探测范围图的绘制
  20. 码农小汪-Hibernate学习6-hibernate中Annocation修饰属性

热门文章

  1. 第一次点击button, view视图出现;第二次点击button,view视图消失
  2. 实现gabor filter的滤波
  3. 电脑突然出现成功连接网络但不能上网、网络受限(解决办法)
  4. hdu1536 S-Nim(博弈)
  5. 使用npm安装vue项目+使用
  6. 安装运行jupyter notebook时报错:ModuleNotFoundError: No module named 'prompt_toolkit.formatted_text'...
  7. Java做题错误知识点总结(頑張って)!
  8. 设计模式(十)—— 装饰者模式
  9. ASP连接sql server实例解析
  10. oracle 显示 中文字体( client的字符集设置,将NLS_LANG改为UTF8即可)