sitelink1  
sitelink2  
extra_vars5  
extra_vars6  
ORACLE DB AUTO STARTUP/SHUTDOWN ON RedHat Linux 8.0

구경탁 jinuxer@yahoo.co.kr

1차수정 : 2002년 11월 04일

--------------------------------------------------------------------------------

이 자료는 O/S startup 시에 Oracle RDBMS 서비스를 자동으로 startup하는 방법에 대한 자료이다.

Oracle RDBMS 서비스를 startup하기위해 $ORACLE_HOME/bin/dbstart를 사용할 수 있고, Oracle RDBMS 서비스를 shutdown하기위해 $ORACLE_HOME/bin/dbshut를 사용할 수 있다.

--------------------------------------------------------------------------------

1. /etc/rc.d/rc.local Boot Time Script 이용



첫번째 방법은 System Boot Time때에 Oracle RDBMS를 자동적으로 서비스를 하기위해서 /etc/rc.d/rc.local에 $ORACLE_HOME/bin/dbstart를 추가하면된다.



# cd /etc/rc.d/

# vi rc.local



...



$ORACLE_HOME/bin/dbstart



가장 하단 부분에 추가해주고 reboot해서 확인해보라.

만약에 안된다면 아래처럼 추가해주라.

주, 디렉토리는 자신이 install한 oracle의 디렉토리로 적당히 편집해주기 바란다.



...



export ORACLE_BASE=/home/oracle/app/oracle



export ORACLE_HOME=$ORACLE_BASE/product/9i



export PATH=$PATH:$ORACLE_HOME/bin



$ORACLE_HOME/bin/dbstart



그래두 안된다면 이 방법은 쓰지말고 다음 방법을 쓰기바란다. -_-;



2. Oracle Boot Shell Script 이용



두번째 방법은 $ORACLE_HOME/bin/dbstart와 $ORACLE_HOME/bin/dbshut를 이용하여 shell script를 작성하는 것이다.

어차피 Oracle RDBMS 서비스를 자동으로 하고자하는것이라면, shutdown도 자동으로 해보자.

주, 디렉토리는 자신이 install한 oracle의 디렉토리로 적당히 편집해주기 바란다.



# cd /etc/rc.d/init.d
# vi oracle

--------------------------------------------------------------------------------

#!/bin/sh
#
# Startup script for Oracle
#
# chkconfig: - 90 15
# description: Start Oracle
#
# processname: oracle
#
# Source function library.
. /etc/rc.d/init.d/functions

export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9i
export PATH=$PATH:$ORACLE_HOME/bin

# See how we were called.
case "" in
  start)
    echo ""
    echo "Starting oracle: "
    su - oracle -c "dbstart"

    echo ""
    echo "Starting TNS listener:"
    su - oracle -c "lsnrctl start"
    touch /var/lock/subsys/oracle
    echo
    ;;
  stop)
    echo ""
    echo "Shutting down TNS listener:"
    su - oracle -c "lsnrctl stop"

    echo ""
    echo "Shutting down oracle:"
    su - oracle -c "dbshut"
    rm -f /var/lock/subsys/oracle
    echo
    ;;
  restart)
     stop
    sleep 2
     start
    ;;
  *)
    echo "Usage:  "
    exit 1
esac

--------------------------------------------------------------------------------

# chkconfig --add oracle
# chkconfig --level 3 oracle on
# ntsys 후 확인을 해보라.



3. 나머지 설정





$ORACLE_HOME/bin/dbstart와 $ORACLE_HOME/bin/dbshut를 구동하기 위해선 /etc/oratab에 Oracle SID가 적혀있는 라인의 "N"을 "Y"로 바꾸어야한다.



예제를 보자.

Oracle SID는 ORCL이고, install 디렉토리는 /home/oracle/app/oracle/product/9i이다.





# vi /etc/oratab



...

ORCL:/home/oracle/app/oracle/product/9i:N

를 아래와 같이 바꾼다.



...

ORCL:/home/oracle/app/oracle/product/9i:Y





모든 작업이 완료되면 reboot하여 확인을 해보도록 한다.



======================================

Visit to KOUG(Korea Oracle User Group)

http://www.koug.net

jinuxer@yahoo.co.kr

======================================




9i의 경우 dbstart 스크립트에 몇가지 문제가 있습니다.



9i부터는 바이너리 형식의 spfile 을 기본적으로 사용합니다.

그런데 dbstart 스크립트는 pfile (text)만 찾고 없으면 오라클을 '시작'시키지 않습니다.



따라서 dbstart를 vi 등 편집기로 열어서...

PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora 를 찾아서

다음에 아래 라인을 추가바랍니다.

SPFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora



그리고 나서

                   if [ -f $PFILE ] ; then

라는 부분을 찾아서 아래와 같이 고쳐줍니다.

                   if [ -f $PFILE -o -f $SPFILE ] ; then


마지막으로 dbshut 이 오래걸리는 이유는  셧다운 모드가 디폴트로

shutdown normal 이기 때문에 모든 트랜잭션이 완료되고 연결된 세션이 해제될 때까지 기다리게 되기 때문입니다.

마찬가지로 dbshut을 vi로 열어서 shutdown normal 을

shutdown immediate 로 고쳐주시면 됩니다.