监听检查脚本lsnr_check.sh


点击(此处)折叠或打开

  1. #!/bin/bash
  2. ##
  3. # check listeners
  4. #
  5. LOGFILE=$HOME/dbadmin/logs/lsnr_check_`date +'%Y%m%d'`.log
  6. exec 3>&1 4>&2
  7. exec 1>>$LOGFILE 2>&1
  8. echo "Start: `date +%Y%m%d%H%M%S`"
  9. pr_stat()
  10. {
  11. ps -ef |grep tns
  12. ps -elf |grep $1 |grep -v grep
  13. pmap -x $1
  14. pflags $1
  15. }
  16. LISTENER_LIST=`sed -n 's/^SID_LIST_\(.*\)[ ]*=/\1/p' $TNS_ADMIN/listener.ora |tr "[A-Z]" "[a-z]"`
  17. TMPFILE=/tmp/lsnr_check_$$.tmp
  18. for f in $LISTENER_LIST; do
  19. echo -n "checking listener $f ..."
  20. [ -f $TMPFILE ] && rm -f $TMPFILE
  21. echo 'this is a line' >$TMPFILE
  22. #`tnsping $f |grep OK >>$TMPFILE &`
  23. `lsnrctl status $f |tail -1 |grep "successfully">>$TMPFILE &`
  24. sleep 3
  25. #test `cut -c1,2 $TMPFILE |grep OK`
  26. test "`grep successfully $TMPFILE`"
  27. if (($? != 0)); then
  28. echo "FAILED"
  29. pid=`ps -ef |grep tnslsnr |grep -i $f |grep -v grep |awk '{print $2}'`
  30. if [ "X$pid" != "X" ]; then
  31. pr_stat $pid
  32. echo -n "kill process $pid ..."
  33. kill -9 $pid
  34. if [ $? = 0 ]; then
  35. echo "stopped"
  36. else
  37. echo "Unable to stop tnslsnr"
  38. fi
  39. sleep 3
  40. else
  41. echo "tnslsnr not started"
  42. fi
  43. echo -n "starting listener $f ..."
  44. lsnrctl start $f
  45. echo "started"
  46. else
  47. echo "OK"
  48. fi
  49. [ -f $TMPFILE ] && rm -f $TMPFILE
  50. done
  51. echo "End: `date +%Y%m%d%H%M%S`"
  52. echo
  53. exec 1>&3 3>&-
  54. exec 2>&4 4>&-
  55. exit 0

请使用浏览器的分享功能分享到微信等