Shell實現(xiàn)的Oracle啟動腳本分享

字號:


    Usage: sh oracled [start|stop|restart] SIDs 其中SIDs是數(shù)據(jù)庫名,多個名稱之間用逗號分隔。缺省的操作是 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}