脚本 起动本机数据库存所有的oralce监听

当一台服务器上有很多侦听时,如何用脚本一次起动

#!/bin/bash
#+++++++++++++++++++++++++++++++++++++++++++++
# stop and start all oracle database listener in a server 
#
# Param 1 : -stop |start
#+++++++++++++++++++++++++++++++++++++++++++++
#############################################
#
#  Start the tnslistener
#
#############################################
start_tnslstnr()
{
  oraid=`ls -ltr ${listener}|cut -d " " -f 3`
  echo $oraid
  echo $(date) "Start TNSLISTENER name $oralistner  for Database $oraid"
  if ! [ -z $targetlistener ]
    then
      su - $oraid -c "lsnrctl start $targetlistener ; wait" >/dev/null 2>&1 0</dev/null;
      su - $oraid -c "lsnrctl status $targetlistener" 2>&1 0</dev/null;
    else
      su - $oraid -c "lsnrctl start $oralistner ; wait" >/dev/null 2>&1 0</dev/null;
      su - $oraid -c "lsnrctl status $oralistner" 2>&1 0</dev/null;
  fi

  RC=$?;
  if [ $RC -eq 0 ]
    then 
      echo $(date) "DONE : Start TNSLISTENER $oralistner";
    else
      echo "=================================================================";
      echo ""
      echo ""
      echo $(date) "WARNING: Start TNSLISTENER $oraid RC="$RC;
      echo "=================================================================";
      echo ""
      echo ""
      echo ""
  fi
}

#############################################
#
#  stop the tnslistener
#
#############################################
stop_tnslstnr()
{
  echo $(date) "Start TNSLISTENER name $oralistner  for Database $oraid"
  oraid=`ls -ltr ${listener}|cut -d " " -f 3`
  echo $oraid
  if ! [ -z $targetlistener ] 
    then
      su - $oraid -c "lsnrctl stop $targetlistener ; wait" >/dev/null 2>&1 0</dev/null;
      su - $oraid -c "lsnrctl status $targetlistener" 2>&1 0</dev/null;
    else
      su - $oraid -c "lsnrctl stop $oralistner ; wait" >/dev/null 2>&1 0</dev/null;
      su - $oraid -c "lsnrctl status $oralistner" 2>&1 0</dev/null;
  fi
  
  
  RC=$?;
  if [ $RC -eq 0 ]
    then 
      echo $(date) "DONE : Stop TNSLISTENER $oralistner";
    else
      echo "##################################################################";
      echo ""
      echo ""
      echo $(date) "WARNING: Stop TNSLISTENER $oraid RC="$RC;
      echo "##################################################################";
      echo ""
      echo ""
      echo ""
  fi
}

#############################################
#
#  Start the tnslistener
#
#############################################
read_listener()
{
oralistners=$(cat /tmp/tlistener|grep -v "^#" |grep -v "SID_LIST"|grep -v "DESC" |grep -v ")"|grep -v "ADDRESS")
oralistners=$(echo  $oralistners|tr "=" " ")
for oralistner in $oralistners
  do 
    case $action in
    -start)     start_tnslstnr 
    ;;
    -stop)      stop_tnslstnr 
    ;;
    esac
  done

if [ $RC -le 1 ] 
   then
   case $action in
    -start)     echo "all the database listener on this server is started!!!"
    ;;
    -stop)      echo "all the database listener on this server is stopped!!!"
    ;;
    esac
fi 
}
#############################################
#
#  Main 
#
#############################################
if [ $# -lt 1 ]
then
  echo "##########################################################################################"
  echo 
  echo "  Syntax : stop oracle database listener: listener <listener name> <-start|-stop> " 1>&2
  echo "  Parm1  : optional <listener name> "
  echo "  Parm2  : -start|-stop
  echo "##########################################################################################"
  exit 8
fi

if [ $# -eq 2 ]
  then
     targetlistener=$1
     action=$2
  else 
     targetlistener=""
     action=$1
fi

echo "   Trying to found listener file";
listeners=$(find / -name listener.ora|grep -v sample)
for listener in $listeners
  do   
    if [ -f /tmp/tlistener ]
       then
          echo $listener
          rm -rf /tmp/listener
          cat $listener > /tmp/tlistener
          read_listener;
        else 
          echo $listener
          cat $listener > /tmp/tlistener
          read_listener;
    fi
  done

 

posted on 2020-10-17 01:53  InnoLeo  阅读(90)  评论(0编辑  收藏  举报