1. 这个shell脚本监控数据库锁阻塞,机器连接数,警报日志,而其中的机器连接数,警报日志不会重复发相同内容的邮件
  2. #!/bin/sh
  3. #danchen
  4. #2007-3-28
  5. #program variable
  6. export ORACLE_BASE=/opt/oracle
  7. export ORACLE_HOME=$ORACLE_BASE/product/9.2
  8. export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
  9. export NLS_LANG=american_america.zhs16gbk
  10. export ORACLE_OWNER=oracle
  11. export ORACLE_SID=test
  12. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
  13. export BDUMP=/opt/oracle/admin/devdb/bdump
  14. ulimit -l unlimited >/dev/null 2>&1
  15. #local variable
  16. mailto='test@test.com'
  17. CP=/bin/cp
  18. date
  19. $ORACLE_HOME/bin/sqlplus -S test/test@test <<EOF
  20. set serveroutput on size 20000;
  21. spool /tmp/lock_danger.log
  22. declare
  23. sql1 varchar2(2000);
  24. sql2 varchar2(2000);
  25. machine1 varchar2(50);
  26. machine2 varchar2(50);
  27. isblock number;
  28. seq number;
  29. begin
  30. for i in(select sid,id1,id2 from v\$lock where type='TX' and lmode=6) loop
  31. isblock := 0;
  32. select serial#,machine into seq,machine1 from v\$session where sid=i.sid;
  33. for j in(select sid,id1,id2 from v\$lock where type='TX' and request=6) loop
  34. if i.id1=j.id1 and i.id2=j.id2 then
  35. isblock := 1;
  36. select machine into machine2 from v\$session where sid=j.sid;
  37. dbms_output.put_line('machine '||machine1||' is blocking machine '||machine2);
  38. end if;
  39. end loop;
  40. if isblock=1 then
  41. dbms_output.put_line('alter system kill session '''||i.sid||','||seq||''';');
  42. dbms_output.put_line(chr(10));
  43. end if;
  44. end loop;
  45. end;
  46. /
  47. spool off
  48. spool /tmp/link_danger.log
  49. select machine,count(*) from v\$session group by machine having count(*)>15;
  50. spool off
  51. exit;
  52. EOF
  53. #analyze
  54. v_kill=`cat /tmp/lock_danger.log|grep "alter system kill session"|wc -l`
  55. if [ $v_kill -gt 0 ]
  56. then
  57. scp /tmp/lock_danger.log oracle@csdb1:/opt/devtest_db_logs/lock_$HOSTNAME.log
  58. ssh -loracle csdb1 "mail -s "lock_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/lock_$HOSTNAME.log"
  59. fi
  60. if [ -f /tmp/link_danger.log.old ]
  61. then
  62. $CP /tmp/link_danger.log /tmp/link_danger.log.new
  63. v_mc=`diff /tmp/link_danger.log.new /tmp/link_danger.log.old|grep "<"|wc -l`
  64. $CP /tmp/link_danger.log.new /tmp/link_danger.log.old
  65. if [ $v_mc -gt 0 ]
  66. then
  67. v_m_c=`cat /tmp/link_danger.log.new|grep "MACHINE"|wc -l`
  68. if [ $v_m_c -gt 0 ]
  69. then
  70. scp /tmp/link_danger.log oracle@csdb1:/opt/devtest_db_logs/link_$HOSTNAME.log
  71. ssh -loracle csdb1 "mail -s "link_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/link_$HOSTNAME.log"
  72. fi
  73. fi
  74. else
  75. echo " " > /tmp/link_danger.log.old
  76. fi
  77. #alert.log
  78. if [ -f $BDUMP/alert_${ORACLE_SID}.log.old ]
  79. then
  80. $CP $BDUMP/alert_${ORACLE_SID}.log $BDUMP/alert_${ORACLE_SID}.log.new
  81. v_alert=`diff $BDUMP/alert_${ORACLE_SID}.log.new $BDUMP/alert_${ORACLE_SID}.log.old|grep "<"|grep "ORA-"`
  82. n_alert=`diff $BDUMP/alert_${ORACLE_SID}.log.new $BDUMP/alert_${ORACLE_SID}.log.old|grep "<"|grep "ORA-"|wc -l`
  83. $CP $BDUMP/alert_${ORACLE_SID}.log.new $BDUMP/alert_${ORACLE_SID}.log.old
  84. if [ $n_alert -gt 0 ]
  85. then
  86. echo "$v_alert" > /tmp/alert_danger.log
  87. scp /tmp/alert_danger.log oracle@csdb1:/opt/devtest_db_logs/alert_$HOSTNAME.log
  88. ssh -loracle csdb1 "mail -s "alert_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/alert_$HOSTNAME.log"
  89. fi
  90. else
  91. $CP $BDUMP/alert_${ORACLE_SID}.log $BDUMP/alert_${ORACLE_SID}.log.old
  92. fi
  93. date

转载于:https://blog.51cto.com/lya041/672822

监控数据库锁阻塞_机器连接数_警报日志的shell脚本 分享相关推荐

  1. shell脚本自动回车_干货分享:Linux shell脚本分享!!快收藏起来吧

    Linux shell 脚本分享 Shell 是一个命令解释器,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户,Shell 它是一个用 C 语言编写的程序,它是用户使用 Lin ...

  2. oracle degree 造成阻塞_数据库锁/阻塞分析的一种常用方法

    对于一些中小用户来说,日常遇到的最多的问题不外乎表空间与锁的分析.数据库表空间使用率/空间使用率分析似乎很简单,是一条SQL就能搞定的事情,实际上并不简单,这个话题容以后找时间阐述.今天就重点分析下另 ...

  3. linux监控是否运行脚本,监控网站是否可以正常打开的Shell脚本分享

    最近刚好需要测试一下新建站的稳定性,所以写了个SHELL脚本放到本机(最近换了mac本),能够实时查看你需要监控的WEB页面状态,并发送到指定邮箱. 这里赞一下OS X自带有crontab计划任务,可 ...

  4. 轻松掌握mysql数据库锁机制的相关原理_轻松掌握MySQL数据库锁机制的相关原理...

    不同于行级或页级锁定的选项: · 版本(例如,为并行的插入在MySQL中使用的技术),其中可以一个写操作,同时有许多读取操作.这明数据库或表支持数据依赖的不同视图,取决于访问何时开始.其它共同的术语是 ...

  5. flask执行python脚本_如何从Flask应用程序执行Shell脚本

    要在Python中显示命令输出,有两种常用方法:check_output():它使用参数运行命令并返回其输出.(official documentation) subprocess.communica ...

  6. shell grep 变量_老司机给出的关于 shell 脚本的8个建议,必收!

    这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训.事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条.毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生 ...

  7. bash shell sed 获取第一行_老司机给出的关于 shell 脚本的8个建议,必收!

    这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训.事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条.毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生 ...

  8. mysql数据库备份shell_mysql数据库备份shell脚本分享

    #!/bin/bash #2020年04月27日15:56:21 #auto backup mysql db #by author www.cnbugs.com ################### ...

  9. 监控mysql的shell脚本_监控MySQL主从状态的shell脚本

    分享一个Linux下,监控MySQL主从状态及配合企业微信机器人报警的Shell脚本 SLAVE_IP:为监控的主机IP USER:为msyql用户 PASSWORD:为mysql密码 WHEREIS ...

  10. 用shell脚本实现定时备份数据库

    1.备份数据库的方法 可以使用命令查看 ls  /usr/local/mysql/bin 这个mysqldump就是系统内置的用来备份数据库的工具. 2.实现方法 ①先随便进入一个位置创建一个目录 ② ...

最新文章

  1. MCMC+马尔科夫链蒙特卡罗
  2. 使用websocket-sharp来创建c#版本的websocket服务
  3. Windows 下用reg 文件将exe 写入启动项
  4. 机械爪角度与距离之间的关系
  5. elisa数据处理过程图解_ELISA原理示意图详解.ppt
  6. 如何掌握所有的程序设计语言?
  7. 记一次YY笔试中卡住得知识点
  8. 动态头像 Android 实现,Android仿京东金融首页头像效果
  9. SpringBoot中快速实现邮箱发送
  10. Linux操作系统中vi常见用法和相关配置
  11. 刚才读《基于Lucene的中文自然语言搜索引擎》后感
  12. Matlab画图颜色设置
  13. 国产CAD_手机也能看CAD图纸了?国产软件助力CAD告别电脑时代!
  14. Apache(阿帕奇) 配置环境及使用(保姆级教程)拒绝繁琐
  15. 谈谈网络协议,常见的网络协议有那些?
  16. js自定义函数传参(字符串)问题
  17. 互联网公司的几种销售模式
  18. 二十一世纪大学英语读写教程(第二册)学习笔记(原文)——1 - Winston Churchill—His Other Life(丘吉尔与绘画)
  19. 阿星 centos7卸载mysql并且通过yum安装mysql
  20. My Visual DataBase(数据库编程软件)v5.3免费版

热门文章

  1. Mac系统打开dmg出现 “资源忙” 怎么解决?
  2. Ubuntu20.04安装 Redis 并配置 phpRedisAdmin
  3. ID3DXMesh接口 创建自己的立方体网格
  4. 开源MySQL数据传输中间件—DTLE
  5. 【火炉炼AI】机器学习045-对股票数据进行隐马尔科夫建模
  6. VR AR体验或成2017圣丹斯电影节“新主角”
  7. vim介绍与一些使用方式
  8. JavaScript = TypeScript 入门
  9. Ubuntu下好用的小工具
  10. 使用命令行修改当前gnome终端的名称技术