ORACLE Database / WAS (iAS) / SQL 자료실 - 포기하지 않으면 실패하지 않는다!
Vote Reply Modify Delete Forward Prev Next List

  Author   : 조성환 [ ladmin ] Vote: 186, Hit: 4605, Lines: 264, Category: Etc.
오라클 DB 자동 Start/Stop 스크립트


[/etc/rc2.d] #  cat s99dbora

# from which execute dbstart and dbshut
ORA_HOME=/export/home/oracle8/OraHome1
ORA_OWNER=oracle8
case "$1" in
'start')
#Start the oracle database:
su - $ORA_OWNER -c /export/home/oracle8/OraHome1/bin/dbstart &
;;
'stop')
# Stop the Oracle database:
su - $ORA_OWNER -c /export/home/oracle8/OraHome1/bin/dbshut  &
;;
#su - oracle -c "opsd log=/tmp/opsd.log"
esac








[/etc/rc2.d] #  cat /export/home/oracle8/OraHome1/bin/dbstart

#
# $Header: dbstart.sh.pp 30-may-2000.14:31:07 jboyce Exp $ dbstart.sh.pp Copyr (c) 1991 Oracle
#

###################################
#
# usage: dbstart
#
# This script is used to start ORACLE from /etc/rc(.local).
# It should ONLY be executed as part of the system boot procedure.
#
#####################################

ORATAB=/var/opt/oracle/oratab

trap 'exit' 1 2 3
case $ORACLE_TRACE in
   T) set -x ;;
esac

# Set path if path not set (if called from /etc/rc)
case $PATH in
   "") PATH=/bin:/usr/bin:/etc
       export PATH ;;
esac
# Save LD_LIBRARY_PATH
SAVE_LLP=$LD_LIBRARY_PATH

#
# Loop for every entry in oratab file and and try to start
# that ORACLE
#

cat $ORATAB | while read LINE
do
   case $LINE in
       \#*)                ;;        #comment-line in oratab
       *)
#       Proceed only if third field is 'Y'.
       if [ "`echo $LINE | awk -F: '{print $3}' -`" = "Y" ] ; then
           ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
           if [ "$ORACLE_SID" = '*' ] ; then
               ORACLE_SID=""
           fi
#           Called programs use same database ID
           export ORACLE_SID
           ORACLE_HOME=`echo $LINE | awk -F: '{print $2}' -`
#           Called scripts use same home directory
           export ORACLE_HOME
#           Put $ORACLE_HOME/bin into PATH and export.
           PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/etc ; export PATH
#           add for bug # 652997
           LD_LIBRARY_PATH=${SAVE_LLP}:${ORACLE_HOME}/lib ; export LD_LIBRARY_PATH
           PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora

#        Figure out version of database.
           if [ -f $ORACLE_HOME/bin/sqldba ] ; then
               VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk '
                       /SQL\*DBA: (Release|Version)/ {split($3, V, ".") ;
                       print V[1]}'`
               SQLDBA=sqldba
           else
               if [ -f $ORACLE_HOME/bin/svrmgrl ] ; then
                   SQLDBA=svrmgrl
               else
                   SQLDBA="sqlplus /nolog"
               fi
           fi

           STATUS=1
           if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.dbf ] ; then
               STATUS="-1"
           fi
           if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.ora ] ; then
               STATUS="-1"
           fi
           pmon=`ps -ef | egrep pmon_$ORACLE_SID  | grep -v grep`
           if [ "$pmon" != "" ];
           then
               STATUS="-1"
               echo "Database \"${ORACLE_SID}\" already started."
           fi

           if test $STATUS -eq -1 ; then
               echo ""
               echo "Database \"${ORACLE_SID}\" possibly left running when system went down (system crash?)."
               echo "Notify Database Administrator."
               case $VERSION in
                   6)  sqldba "command=shutdown abort" ;;
                   *)  $SQLDBA $args <<EOF
connect internal
shutdown immediate
EOF
                       ;;
               esac
               if test $? -eq 0 ; then
                   STATUS=1
               else
                   echo "Database \"${ORACLE_SID}\" NOT started."
               fi
           fi

           if test $STATUS -eq 1 ; then
               if [ -f $PFILE ] ; then
                   case $VERSION in
                       6)  sqldba command=startup ;;
                       *)  $SQLDBA <<EOF
connect internal
startup
EOF
                           ;;
                   esac

                   if test $? -eq 0 ; then
                       echo ""
                       echo "Database \"${ORACLE_SID}\" warm started."
                   else
                       echo ""
                       echo "Database \"${ORACLE_SID}\" NOT started."
                   fi
               else
                   echo ""
                   echo "Can't find init file for Database \"${ORACLE_SID}\"."
                   echo "Database \"${ORACLE_SID}\" NOT started."
               fi
           fi
       fi
       ;;
   esac
done










[/etc/rc2.d] #  cat /export/home/oracle8/OraHome1/bin/dbshut

#
# $Header: dbshut.sh.pp 30-may-2000.14:31:09 jboyce Exp $ dbshut.sh.pp Copyr (c) 1991 Oracle
#

###################################
#
# usage: dbshut
#
# This script is used to shutdown ORACLE from /etc/rc(.local).
# It should ONLY be executed as part of the system boot procedure.
#
#####################################

ORATAB=/var/opt/oracle/oratab

trap 'exit' 1 2 3
case $ORACLE_TRACE in
   T) set -x ;;
esac

# Set path if path not set (if called from /etc/rc)
case $PATH in
   "") PATH=/bin:/usr/bin:/etc
       export PATH ;;
esac
# Save LD_LIBRARY_PATH
SAVE_LLP=$LD_LIBRARY_PATH

#
# Loop for every entry in oratab file and and try to shut down
# that ORACLE
#

cat $ORATAB | while read LINE
do
   case $LINE in
       \#*) ;;        #comment-line in oratab
       *)
#       Proceed only if third field is 'Y'.
       if [ "`echo $LINE | awk -F: '{print $3}' -`" = "Y" ] ; then
           ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
           if [ "$ORACLE_SID" = '*' ] ; then
               ORACLE_SID=""
           fi
#           Called programs use same database ID
           export ORACLE_SID
           ORACLE_HOME=`echo $LINE | awk -F: '{print $2}' -`
#           Called scripts use same home directory
           export ORACLE_HOME
#           Put $ORACLE_HOME/bin into PATH and export.
           PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/etc ; export PATH
#           add for bug 652997
           LD_LIBRARY_PATH=${SAVE_LLP}:${ORACLE_HOME}/lib ; export LD_LIBRARY_PATH
           PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora

#            See if it is a V6 or V7 database
           if [ -f $ORACLE_HOME/bin/sqldba ] ; then
               VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk '
                   /SQL\*DBA: (Release|Version)/ {split($3, V, ".") ;
                   print V[1]}'`
               SQLDBA=sqldba
           else
               if [ -f $ORACLE_HOME/bin/svrmgrl ] ; then
                   SQLDBA=svrmgrl
               else
                   SQLDBA="sqlplus /nolog"
               fi
           fi
     case $VERSION in
                 6)  sqldba command=shutdown ;;
                 *)  $SQLDBA <<EOF
connect internal
shutdown immediate
EOF
                   ;;
             esac

           if test $? -eq 0 ; then
               echo "Database \"${ORACLE_SID}\" shut down."
           else
               echo "Database \"${ORACLE_SID}\" not shut down."
           fi
       fi
       ;;
   esac
done







Prev: 노아카이브 로그모드 만들기
Next: 롤백 세그먼트 확인하는 sql문
2003/12/23(20:26) from 211.253.82.82
CrazyWWWBoard 2000

Vote Reply Modify Delete Forward Prev Next List
(c) Nobreak Technologies, Inc.