DB2数据库解死锁之shell脚本经典版!

数据库
我们今天主要向大家讲述的是在linux/unix下,DB2数据库解死锁之shell脚本,以及对其在实际操作中要用到的实际操作代码的描述。

以下的文章主要向大家描述的是在linux/unix下,DB2数据库解死锁之shell脚本,以下就是对在linux/unix下,DB2数据库解死锁之shell脚本的具体描述,希望在你今后的学习中会有所帮助。

clear;

  1. DB2 "connect to db user dbuser using dbpass"  
  2. DB2 "update monitor switches using lock on table on"  
  3. tmpf=`echo "$HOME/tmp/""$RANDOM"_"$SECONDS"".lock"`  
  4. DB2 get snapshot for locks on abbs>$tmpf  
  5. handles=`cat $tmpf|awk '{if($2=="handle")print $4}'`  
  6. x=0;  
  7. y=0;  
  8. deadhandles=" " 
  9. for i in $handles  
  10. do  
  11.  

取当前id所在行

  1. ibeg=`cat $tmpf|awk '{if($2=="handle" && $4=="'$i'")print NR}'`;  
  2. #echo "Line[15]:handle:$i,beg:$ibeg" 

取当前行以后的内容

 

  1. cat $tmpf|awk '{if(NR-1>'$ibeg')printf("%s\n", $0);}'>$tmpf.$i; 

取下一个handle所在行

 

  1. hangdleaf=`cat $tmpf.$i|awk '{if($2=="handle")print NR}'`  
  2. #echo Line[20]:$hangdleaf  
  3. if [ -z "$hangdleaf" ];then  
  4. cat $tmpf.$i>$tmpf.$i.aft;  
  5. else 

取下一个handle

 

  1. itmp="";  
  2. for j in $hangdleaf  
  3. do  
  4. if [ -z "$itmp" ];then  
  5. handlenext=$j;  
  6. itmp="get done!" 
  7. fi  
  8. done  
  9. #echo Line[33]:$handlenext;  
  10. #cat $tmpf.$i|awk '{if(NR<'$handlenext')print $0;}'  
  11. cat $tmpf.$i|awk '{if(NR<'$handlenext')print $0;}'>$tmpf.$i.aft;  
  12. fi 

判断本handle相关的锁 是否存在排他锁

  1. ifx=`cat $tmpf.$i.aft|awk '{if(($1=="Mode" && ($3=="X" || $3=="IX")) ||($2=="mode" && substr($6,2,1)=="X") )print $0;}'`  
  2. #echo Line[39]:handle[$i],$ifx  
  3. if [ -z "$ifx" ];then  
  4. a=1 
  5. else  
  6. deadhandles="$deadhandles"" $i" 
  7. x=`expr $x + 1`;  
  8. echo $i  
  9. fi  
  10. #cat $tmpf.$i.aft|grep X|more  
  11. #echo Line[48]:$deadhandles  
  12. #read yn  
  13. rm -f $tmpf.$i  
  14. rm -f $tmpf.$i.aft  
  15. done  
  16. #echo "死锁$x:$deadhandles";  
  17. #read yn  
  18. clear  
  19. if [ -z "$deadhandles" ] || [ "$deadhandles" = " " ] ;then  
  20. echo "没有死锁,退出......";  
  21. read yn;  
  22. exit 0;  
  23. fi  
  24. echo "锁句柄:$deadhandles,解锁? Y/N\c"  
  25. read yn;  
  26. if [ -z "$yn" ];then  
  27. echo "放弃解锁!"  
  28. exit 0;  
  29. fi  
  30. if [ "$yn" = "Y" ] || [ "$yn" = "y" ];then  
  31. x=0;  
  32. for i in $deadhandles  
  33. do  
  34. echo 解死锁:$i  
  35. DB2 "force applications($i)"  
  36. x=`expr $x + 1`  
  37. done  
  38. echo "解开[$x]个锁...."   
  39. else  
  40. echo "放弃解锁!"  
  41. exit 0;  
  42. fi  
  43. DB2 connect reset;  
  44. DB2 terminate;  
  45. rm -f $tmpf  
  46. echo "解锁终端:">/tmp/tty.tmp  
  47. tty>>/tmp/tty.tmp  
  48. wall </tmp/tty.tmp  
  49. rm -f /tmp/tty.tmp  

以上的相关内容就是对linux/unix下DB2数据库解死锁的shell脚本的介绍,望你能有所收获。

【编辑推荐】

  1. DB2 CMO安装7.1.2.6补丁之后会出现的错误
  2. IBM DB2数据库新手必看的基础知识有哪些?
  3. 如何正确管理DB2 For z/OS or OS/390的操作性能
  4. 安装DB2 Content Manager8.3出现144错误代码
  5. 安装IBM DB2 Content Manager V83时与122错误代码

     

     
责任编辑:佚名 来源: 51CTO.com
相关推荐

2010-08-12 09:33:30

DB2数据库备份

2010-09-06 12:44:24

DB2数据库

2010-08-09 16:51:24

DB2数据库

2010-08-17 17:29:06

DB2性能优化

2010-08-27 11:28:39

DB2shell数据库

2010-08-13 10:43:49

IBM DB2数据库

2010-08-25 10:50:48

DB2数据库

2011-03-11 16:02:03

DB2数据库安装

2009-06-25 10:30:30

2010-09-30 11:49:21

DB2数据库权限

2010-11-01 11:30:41

DB2数据库权限

2010-11-03 16:21:18

DB2数据库授权

2010-08-26 16:15:25

DB2数据库管理

2011-03-16 16:03:00

DB2数据库

2009-07-06 17:34:26

远程复制DB2

2010-08-26 10:37:40

DB2Q复制

2010-08-31 11:26:59

DB2数据库

2010-08-31 13:06:49

DB2数据库

2010-11-02 11:49:18

SQL SERVER连

2010-11-03 16:32:10

DB2创建数据库
点赞
收藏

51CTO技术栈公众号