这篇文章主要介绍了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}