1. 인스턴스 정의 파일인 /etc/oratab 을 편집한다.

oratab 은 인스턴스의 SID를 등록하는 파일이다.
oratab 의 서식은 아래와 같이 되어있다.
말미의 Y와 N에서 자동기동 대상으로 할지를 지정한다. 여기를 Y로 지정해준다.
복수의 인스턴스가 있을 경우에는 이 행도 복수가 된다.
ROOT 계정에서 실행한다

# LANG=C
# vi /etc/oratab

...
ORACLE_SID:$ORACLE_HOME:[Y|N]  --->  orcl:/home/oracle/product/9.2.0:Y     // N인경우 Y로 변경시켜준다.



2. DB실행 스크립트인 $ORACLE_HOME/bin 의 dbstart, dbshut 를 편집한다.

ORACLE 계정에서 실행
한다.

$ vi $ORACLE_HOME/bin/dbstart
...
PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora           //  주석처리 해준다.(맨앞에 # 붙이면 된다)(55줄)
...

$ vi $ORACLE_HOME/bin/dbshut
...
connect / as sysdba                ----> connect / as sysdba     // 아래 shutdown 뒤에 immediate를 추가한다.
shutdown                                ----> shutdown immediate     // 이렇게 수정하면 된다.(85줄)
...



3. 서비스 스크립트인 /etc/rc.d/init.d/dbora 을 작성한다.

MIRACLE LINUX 에는 dbora 가 존재하지만, Red Hat Linux 에는 신규 작성을 해야 한다.
dbora 는 OS가 실행하는 Oracle 시작/종료 스크립트이다. OS 가 직접 dbstart 와 dbshut
을 실행하는 것이 아니라, dbora 를 경유해 실행한다.

1. OS 의 init 프로세스가 /etc/inittab 에 기초해 dbora 를 기동한다.
   (init프로세스는 UNIX계 OS에서 최초로 기동되는 프로세스이다.)
2. dbora 가 dbstart을 실행한다.
3. dbstart 가 /etc/oratab 을 참조해서 자동기동 대상의 인스턴스를 기동한다.

ROOT 계정으로 실행한다. vi편집기를 이용해 dbora 파일을 생성한다.
# LANG=C
# vi /etc/rc.d/init.d/dbora

#!/bin/sh
#
# chkconfig: - 99 10
# description: Oracle Database Server 9i
# processname: ora_
SUBSYS=/var/lock/subsys/dbora
ORA_HOME=/home/oracle/product/9.2.0        # $ORACLE_HOME 의 경로
ORA_OWNER=oracle                                          # $ORACLE_OWNER 의 이름
start(){
  if [ -f $SUBSYS ]; then
    echo "Already Running Oracle Database Server"
  else
    if [ -f $ORA_HOME/bin/dbstart ]; then
        su - $ORA_OWNER   -c "$ORA_HOME/bin/dbstart"   # DB를 startup 시키는 구문
        echo "Starting Oracle Database Server"
        su - $ORA_OWNER   -c "$ORA_HOME/bin/lsnrctl start"    # listener를 start 시키는 구문
        echo "Starting Listener"
        touch $SUBSYS
        sleep 5
    else
        echo "$ORA_HOME/bin/dbstart is Not Found"
    fi
  fi
  return 0
}

stop(){
  if [ -f $SUBSYS ]; then
    if [ -f $ORA_HOME/bin/dbshut ]; then
      su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut"       // DB를 shutdown immediate 시키는 구문
      echo "Stopping Oracle Database Server"
      su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"   // listener를 stop 시키는 구문
      echo "Stopping Listener"
      rm $SUBSYS
      sleep 5
    else
      echo "$ORA_HOME/bin/dbshut is Not Found"
    fi
  else
    echo "Oracle Database Server is Already Stopped"
  fi
  return 0
}

restart(){
  echo "Restarting Oracle Database Server"
  stop
  start
  return 0
}

case "$1" in
start)
  start
  ;;
stop)
  stop
  ;;
restart)
  restart
  ;;
esac
exit 0

위와 같이 dbora 파일을 만들어준다.



4. 서비스 스크립트인 /etc/rc.d/init.d/dbora 를 등록하고 자동 실행을 유효로 한다.

ROOT 계정으로 실행
한다.

# chkconfig --add dbora                                // dbora는 서비스를 할수 없다는 에러가 나올때는 dbora 파일에서
# chkconfig dbora on                                    //  맨윗 부분의 오타를 확인하자.
# chkconfig --list dbora

* 참고로, 자동실행을 정지 하고 싶을때는 # chkconfig dbora off 로 설정한다.



5. DB를 재시작 시켜본 후, LISTENER 데몬이 띄워져 있는지 확인합니다.
ROOT 계정으로 실행
한다.

# chmod 755 /etc/rc.d/init.d/dbora                // 실행 허가 시켜준다.
# /etc/rc.d/init.d/dbora start
# ps ax | grep LISTENER

이제 재부팅 하고나면 정상적으로 LISTENER과 DB가 올라갑니다.



Posted by 나른한스누피