监控数据库锁阻塞_机器连接数_警报日志的shell脚本 分享
- 这个shell脚本监控数据库锁阻塞,机器连接数,警报日志,而其中的机器连接数,警报日志不会重复发相同内容的邮件
- #!/bin/sh
- #danchen
- #2007-3-28
- #program variable
- export ORACLE_BASE=/opt/oracle
- export ORACLE_HOME=$ORACLE_BASE/product/9.2
- export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
- export NLS_LANG=american_america.zhs16gbk
- export ORACLE_OWNER=oracle
- export ORACLE_SID=test
- export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
- export BDUMP=/opt/oracle/admin/devdb/bdump
- ulimit -l unlimited >/dev/null 2>&1
- #local variable
- mailto='test@test.com'
- CP=/bin/cp
- date
- $ORACLE_HOME/bin/sqlplus -S test/test@test <<EOF
- set serveroutput on size 20000;
- spool /tmp/lock_danger.log
- declare
- sql1 varchar2(2000);
- sql2 varchar2(2000);
- machine1 varchar2(50);
- machine2 varchar2(50);
- isblock number;
- seq number;
- begin
- for i in(select sid,id1,id2 from v\$lock where type='TX' and lmode=6) loop
- isblock := 0;
- select serial#,machine into seq,machine1 from v\$session where sid=i.sid;
- for j in(select sid,id1,id2 from v\$lock where type='TX' and request=6) loop
- if i.id1=j.id1 and i.id2=j.id2 then
- isblock := 1;
- select machine into machine2 from v\$session where sid=j.sid;
- dbms_output.put_line('machine '||machine1||' is blocking machine '||machine2);
- end if;
- end loop;
- if isblock=1 then
- dbms_output.put_line('alter system kill session '''||i.sid||','||seq||''';');
- dbms_output.put_line(chr(10));
- end if;
- end loop;
- end;
- /
- spool off
- spool /tmp/link_danger.log
- select machine,count(*) from v\$session group by machine having count(*)>15;
- spool off
- exit;
- EOF
- #analyze
- v_kill=`cat /tmp/lock_danger.log|grep "alter system kill session"|wc -l`
- if [ $v_kill -gt 0 ]
- then
- scp /tmp/lock_danger.log oracle@csdb1:/opt/devtest_db_logs/lock_$HOSTNAME.log
- ssh -loracle csdb1 "mail -s "lock_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/lock_$HOSTNAME.log"
- fi
- if [ -f /tmp/link_danger.log.old ]
- then
- $CP /tmp/link_danger.log /tmp/link_danger.log.new
- v_mc=`diff /tmp/link_danger.log.new /tmp/link_danger.log.old|grep "<"|wc -l`
- $CP /tmp/link_danger.log.new /tmp/link_danger.log.old
- if [ $v_mc -gt 0 ]
- then
- v_m_c=`cat /tmp/link_danger.log.new|grep "MACHINE"|wc -l`
- if [ $v_m_c -gt 0 ]
- then
- scp /tmp/link_danger.log oracle@csdb1:/opt/devtest_db_logs/link_$HOSTNAME.log
- ssh -loracle csdb1 "mail -s "link_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/link_$HOSTNAME.log"
- fi
- fi
- else
- echo " " > /tmp/link_danger.log.old
- fi
- #alert.log
- if [ -f $BDUMP/alert_${ORACLE_SID}.log.old ]
- then
- $CP $BDUMP/alert_${ORACLE_SID}.log $BDUMP/alert_${ORACLE_SID}.log.new
- v_alert=`diff $BDUMP/alert_${ORACLE_SID}.log.new $BDUMP/alert_${ORACLE_SID}.log.old|grep "<"|grep "ORA-"`
- n_alert=`diff $BDUMP/alert_${ORACLE_SID}.log.new $BDUMP/alert_${ORACLE_SID}.log.old|grep "<"|grep "ORA-"|wc -l`
- $CP $BDUMP/alert_${ORACLE_SID}.log.new $BDUMP/alert_${ORACLE_SID}.log.old
- if [ $n_alert -gt 0 ]
- then
- echo "$v_alert" > /tmp/alert_danger.log
- scp /tmp/alert_danger.log oracle@csdb1:/opt/devtest_db_logs/alert_$HOSTNAME.log
- ssh -loracle csdb1 "mail -s "alert_${HOSTNAME}_danger" $mailto < /opt/devtest_db_logs/alert_$HOSTNAME.log"
- fi
- else
- $CP $BDUMP/alert_${ORACLE_SID}.log $BDUMP/alert_${ORACLE_SID}.log.old
- fi
- date
转载于:https://blog.51cto.com/lya041/672822
监控数据库锁阻塞_机器连接数_警报日志的shell脚本 分享相关推荐
- shell脚本自动回车_干货分享:Linux shell脚本分享!!快收藏起来吧
Linux shell 脚本分享 Shell 是一个命令解释器,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户,Shell 它是一个用 C 语言编写的程序,它是用户使用 Lin ...
- oracle degree 造成阻塞_数据库锁/阻塞分析的一种常用方法
对于一些中小用户来说,日常遇到的最多的问题不外乎表空间与锁的分析.数据库表空间使用率/空间使用率分析似乎很简单,是一条SQL就能搞定的事情,实际上并不简单,这个话题容以后找时间阐述.今天就重点分析下另 ...
- linux监控是否运行脚本,监控网站是否可以正常打开的Shell脚本分享
最近刚好需要测试一下新建站的稳定性,所以写了个SHELL脚本放到本机(最近换了mac本),能够实时查看你需要监控的WEB页面状态,并发送到指定邮箱. 这里赞一下OS X自带有crontab计划任务,可 ...
- 轻松掌握mysql数据库锁机制的相关原理_轻松掌握MySQL数据库锁机制的相关原理...
不同于行级或页级锁定的选项: · 版本(例如,为并行的插入在MySQL中使用的技术),其中可以一个写操作,同时有许多读取操作.这明数据库或表支持数据依赖的不同视图,取决于访问何时开始.其它共同的术语是 ...
- flask执行python脚本_如何从Flask应用程序执行Shell脚本
要在Python中显示命令输出,有两种常用方法:check_output():它使用参数运行命令并返回其输出.(official documentation) subprocess.communica ...
- shell grep 变量_老司机给出的关于 shell 脚本的8个建议,必收!
这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训.事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条.毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生 ...
- bash shell sed 获取第一行_老司机给出的关于 shell 脚本的8个建议,必收!
这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训.事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条.毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生 ...
- mysql数据库备份shell_mysql数据库备份shell脚本分享
#!/bin/bash #2020年04月27日15:56:21 #auto backup mysql db #by author www.cnbugs.com ################### ...
- 监控mysql的shell脚本_监控MySQL主从状态的shell脚本
分享一个Linux下,监控MySQL主从状态及配合企业微信机器人报警的Shell脚本 SLAVE_IP:为监控的主机IP USER:为msyql用户 PASSWORD:为mysql密码 WHEREIS ...
- 用shell脚本实现定时备份数据库
1.备份数据库的方法 可以使用命令查看 ls /usr/local/mysql/bin 这个mysqldump就是系统内置的用来备份数据库的工具. 2.实现方法 ①先随便进入一个位置创建一个目录 ② ...
最新文章
- MCMC+马尔科夫链蒙特卡罗
- 使用websocket-sharp来创建c#版本的websocket服务
- Windows 下用reg 文件将exe 写入启动项
- 机械爪角度与距离之间的关系
- elisa数据处理过程图解_ELISA原理示意图详解.ppt
- 如何掌握所有的程序设计语言?
- 记一次YY笔试中卡住得知识点
- 动态头像 Android 实现,Android仿京东金融首页头像效果
- SpringBoot中快速实现邮箱发送
- Linux操作系统中vi常见用法和相关配置
- 刚才读《基于Lucene的中文自然语言搜索引擎》后感
- Matlab画图颜色设置
- 国产CAD_手机也能看CAD图纸了?国产软件助力CAD告别电脑时代!
- Apache(阿帕奇) 配置环境及使用(保姆级教程)拒绝繁琐
- 谈谈网络协议,常见的网络协议有那些?
- js自定义函数传参(字符串)问题
- 互联网公司的几种销售模式
- 二十一世纪大学英语读写教程(第二册)学习笔记(原文)——1 - Winston Churchill—His Other Life(丘吉尔与绘画)
- 阿星 centos7卸载mysql并且通过yum安装mysql
- My Visual DataBase(数据库编程软件)v5.3免费版