«

Shell实现的Oracle启动脚本分享

时间:2024-3-2 16:03     作者:韩俊     分类: Linux


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}

标签: linux

热门推荐