Shell实现的Oracle启动脚本分享

Usage: sh oracled [start|stop|restart] SIDs 其中SIDs是数据库名,多个名称之间用逗号分隔。缺省的操作是 restart ,也可以指定需要进行的操作( start | stop | restart )

代码如下:

#!/bin/sh  

  

cmdname="restart"  

# get oracle sid information from env by default.  

oracleSID=${ORACLE_SID}  

env_oracleSID=${ORACLE_SID}  

  

function echohelp(){  

  echo "******oracled Tool Helper******"  

  echo "Usage:sh oracled [start|stop|restart] SIDs"  

  echo "SIDs : seperated by comma"  

  exit 5  

}  

  

function startoracle(){  

  echo "begin to start oracle ..."  

  

  lsnrctl start  

  for curSID in `echo ${oracleSID} | awk 'BEGIN {RS=","}{ORS="\n"}{print $1}'` ; do  

    if [ "x${curSID}" = "x" ] ; then  

      continue;  

    fi  

    export ORACLE_SID=${curSID}  

  

sqlplus /nolog <<EOF  

  

connect /as sysdba  

startup  

exit  

exit  

  

EOF  

  

    echo "oracle DB [${curSID}] started OK."  

  done  

}  

function stoporacle(){  

  echo "begin to stop oracle ..."  

  

  for curSID in `echo ${oracleSID} | awk 'BEGIN {RS=","}{ORS="\n"}{print $1}'` ; do  

    if [ "x${curSID}" = "x" ] ; then  

      continue;  

    fi  

    export ORACLE_SID=${curSID}  

  

sqlplus /nolog <<EOF  

  

connect /as sysdba  

shutdown immediate  

exit  

exit  

  

EOF  

  

    echo "oracle DB [${curSID}] stopped OK."  

  done  

  lsnrctl stop  

}  

function restartoracle(){  

  stoporacle  

  startoracle  

}  

  

  

if [ $# -lt 1 ] ; then  

  echohelp  

fi  

  

until [ $# -eq 0 ]  

do  

  tmpVOrg=$1  

  tmpV=`echo "${tmpVOrg}" | awk '{printf "%s",$1}' | tr '[A-Z]' '[a-z]'`  

  if [ $tmpV = "start" -o $tmpV = "restart" -o $tmpV = "stop" ] ; then  

    cmdname=${tmpV}  

  elif [ $tmpV = "--help" -o $tmpV = "-h" ] ; then  

    echohelp  

  else  

    oracleSID=$tmpVOrg  

  fi  

  

  shift  

done  

  

if [ "x${cmdname}" = "x" ] ; then  

  echohelp  

fi  

  

${cmdname}oracle  

  

export ORACLE_SID=${env_oracleSID} 

相关推荐