[Know-How] ORACLE DATABASE 의 AUTOMATIC STARTUP/SHUTDOWN 방법


시스템이 startup 하면서 오라클도 함께 startup 하거나 시스템을 shutdown 할 때 오라클도 같이 shutdown 하는 것이 가능하다. 그 방법은 OS마다 차이가 있는데 여기서는 UNIX 에 기반한 여러 플랫폼에 대해서 알아보기로 한다.

 

본 내용에서 가장 많이 사용되는 화일은 다음과 같다.

 

$ORACLE_HOME/bin/dbstart

$ORACLE_HOME/bin/dbshut

/etc/oratab 또는 /var/opt/oracle/oratab

 

dbstart 와 dbshut 은 오라클을 startup/shutdown 시키는 스크립트인데 이것은 automatic startup/shutdown 시에만 사용하도록 하고 평상시의 경우에는 사용하지 않도록 한다.

oratab 화일은 일반 텍스트 화일로서 시스템에 설치된 오라클 인스턴스에 대한 정보를 가지고 있는데 보통 3개의 필드로 이루어   있으며 첫번재 필드는 ORACLE_SID, 두번째 필드는 ORACLE_HOME, 세번째 필드는 Y 또는 N 으로 구성되어 있다. 해당 인스턴스를 autostartup 시키려면 꼭 Y로 세팅되어 있어야 한다.

 

SYSTEM V

——–

System V 에 기반한 시스템은 /etc/rc.d 디렉토리에 초기화 스크립트를 가지고 있다. 여기서  은 해당 스크립트의 run-level 을 의미한다. 일반적으로 run-level 0 은 power shutdown mode 이고 run-level 2는 multi-user mode 이다. 각각의 디렉토리에 들어있는 초기화 스크립트는 다음과 같은

형태의 이름을 갖고 있다.

 

[K|S]{two-digit number][descriptive filename]

 

예를 들면 S75cron, K30tcp 등이 있을 수 있다.

 

S로 시작되는 스크립트는 startup시에 실행되는 것이고 K 로 시작하는 것은 shutdown 시에 실행된다.

 

two-digit number가 의미하는 것은 스크립트가 실행되는 순서인데 숫자가 작은 것부터 먼저 실행된다. 따라서 오라클 스크립트는 보통 다음과 같은 이름을 갖게 된다

 

S99oracle, K01oracle

 

이와같이 설정하면 시스템이 startup 될 때 모든 초기화가 끝난 후 마지막으로 오라클이 startup 되며 시스템을 shutdown 할 때에는  오라클을 가장 먼저 shutdown 하게 된다.

 

 

 

BSD UNIX

——–

 

BSD 에 기반한 시스템은 시스템이 startup 될 때 초기화 화일로 /etc/rc*(예를 들면, /etc/rc, /etc/rc.local) 를 사용한다.

시스템을 shutdown 할 때에는 보통은 /etc/shutdown 만 실행하게 되므로 특별히 실행되는 스크립트가 없지만 /etc/rc.shutdown 이 실행되는 플랫폼도 있다.

 

이제 각 플랫폼별로 자세히 알아보기로 한다.

 

주의 :  는 oracle owner id 로 대체 <$ORACLE_HOME> 은 oracle home directory 명으로 대체

 

(1)SunOS 4.1.3

————–

 

SunOS 4.1.3 에서는 /etc/rc.local 을 startup 스크립트로 사용한다. 즉 시스템이 startup 되면서 /etc/rc.local 이 실행된다. 따라서 이 화일의 끝에 다음과 같은 라인을 추가하면 된다.

 

su  -c <$ORACLE_HOME>/bin/dbstart

 

예를 들어 oracle owner oracle7 이고 $ORACLE_HOME 이 /home/oracle 이라면 다음과 같이 해주면 된다.

 

su oracle7 -c /home/oracle/bin/dbstart

 

여기서 /home/oracle 대신에 $ORACLE_HOME 과 같은 환경변수를 이용하여 세팅하면 안된다.

 

SunOS 에서는 시스템이 shutdown 될 대 실행되는 스크립트는 따로 없다.

따라서 dbshut 을 실행시키는 방법은 다음과 같은 스크립트를 만들어서 시스템을 shutdown 시킬 때 /etc/shutdown 을 실행시키지 말고 대신 이것을 실행시켜야 한다.

 

#!/bin/csh

su  -c <$ORACLE_HOME>/bin/dbshut

/etc/shutdown $*

 

만약 오라클을 shutdown 하지 않고 시스템을 shutdown 하면  다음에 오라클을 startup 하려고 할 때 startup이 되지 않는다. 이 경우에는 $ORACLE_HOME/dbs/sgadef.dbf 화일을 지우고 startup 시키면 된다.

 

(2)OSF/1(DIGITAL UNIX)

———————-

 

/etc/inittab          : 초기화 과정을 콘트롤

/sbin/rc3             : run-level 3 에서 사용되는 script

/sbin/rc0             : run-level 0 에서 사용되는 script

/sbin/rc3.d/S99oracle : /sbin/init.d/oracle 로 link

/sbin/rc0.d/K01oracle : /sbin/init.d/oracle 로 link

 

/etc/initab 화일에는 초기화 과정에 대한 정보가 들어 있다. 예를 들면 다음과 같다.

 

s3:3:wait:/sbin/rc3 < /dev/console > /dev/console 2>&1

 

이렇게 설정하면 run-level 3 일 경우 /sbin/rc3 스크립트가 실행된다.

/sbin/rc3 은 /sbin/rc3.d 디렉토리에 들어있는 스크립트를 실행한다. 만약 스크립트 이름이 K 로 시작하면 이것은 stop 파라미터를 갖고 실행되어서 이 스크립트에 지정된 프로세스를 정지시킨다.  한편, 스크립트가 S 로 시작하면 /sbin/rc3 는 이 스크립트에 startup 파라미터를 부여하고 여기서 지정된 프로세스를 실행시킨다. 따라서 /sbin/rc3.d/S99oracle 을 사용하여 dbstart를 실행한다.

 

shutdown 과정도 거의 비슷하다. /etc/inittab 에 다음과 같은 라인을 추가 한다.

 

s0:0:wait:/sbin/rc0 off < /dev/console > /dev/console 2>&1

 

이것은 /sbin/rc0 를 실행  키는데 /sbin/rc0 는 /sbin/rc0.d 디렉토리에 들어있는 스크립트를 실행시킨다. 스크립트의 이름이 S 로 시작하면 run time parameter 로 start 를 사용하게 되고 K 로 시작하면 stop 을 사용한다. 따라서 /sbin/rc0.d/K01oracle 스크립트는 stop 파라미터를 갖고 실행되며 이 스크립트는 $ORACLE_HOME/bin/dbshut 스크립트를 실행시켜서 오라클을 shutdown 시킨다.

 

/sbin/rc3.d/S99oracle 과 /sbin/rc0.d/K01oracle 은 모두 /sbin/init.d/oracle에 대한 symbolic link 이다. /sbin/init.d/oracle 에 대한 symbolic link 는 이들 외에 더 있을 수 있다.

 

(3)Solaris 2.3 & SCO UNIX

————————-

 

/etc/initab           : 초기화 과정을 콘트롤

/etc/rc2              : run-level 2 에서 사용되는 스크립트

/etc/rc0              : run-level 0 에서 사용되는 스크립트

/etc/rc2.d/S99dbstart : /etc/init.d/dbstart 에 대한 link

/etc/rc0.d/K01dbshut  : /etc/init.d/dbshut 에 대한 link

/var/opt/oracle/oratab

 

Solaris 의 경우는 OSF/1 과 매우 유사하다. 차이점이라고 한다면 /sbin 디렉토리 대신에 /etc 디렉토리에 필요한 스크립트가 들어있다는 것이다.

rc0.d, rc2.d 같은 디렉토리는 실제로 /etc 디렉토리에 위치하고 있으며 rc0, rc2 와 같은 스크립트는 /sbin 에 존재하는 같은 이름의 스크립트에 대한 symbolic link 이다.

 

/etc/init.d/dbstart 와 /etc/init.d/dbshut 스크립트의 내용은 각각 다음과 같이 한줄로 구성되어 있다.

 

su  -c <$ORACLE_HOME>/bin/dbstart

 

su  -c <$ORACLE_HOME>/bin/dbshut

 

Solaris 에서는 start,stop 같은 파라미터는 /etc/init.d/dbstart,/etc/init.d/dbshut 에서는 무시된다.

 

/etc/init.d/dbstart, /etc/init.d/dbshut 화일은 owner 가 oracle owner id

이어야 한다. /etc/init.d/README 를 읽어보면 좀 더 자세한 내용이 설명되어 있으니 참조하기 바란다.

 

(4)AIX

——

 

/etc/inittab  : 시스템 초기화 화일

/etc/rc       : 시스템 초기화 스크립트

/etc/mkitab   : /etc/inittab 을 수정하는 유틸리티

/etc/shutdown : 시스템 shutdown 스크립트

 

AIX 에서는 오라클 autostartup 방법은 여러가지가 가능하지만 shutdown 은 한가지만 가능하다. 우선 autostartup 은 다음과 같은 방법 가운데 하나를 사용하면 된다.

 

a)/etc/mkitab 를 사용하여 /etc/inittab 에 entry 를 추가한다. 즉,

 

/etc/mkitab “:2:wait:/bin/su  -c

<$ORACLE_HOME>/bin/dbstart > /dev/console 2>&1”

 

이렇게 하면 /etc/inittab 화일에 dbstart 기능이 추가된다. 이렇게 하면 시스템이 뜨면서 run-level 2일 경우 오라클이 자동으로 startup 된다.

 

b)다음과 같은 방법도 가능하다.

 

/etc/mkitab “rcoracle:2:wait:/etc/rc.oracle > /dev/console 2>&1”

 

그리고 root 소유의 /etc/rc.oracle 스크립트를 다음과 같이 작성한다.

 

su  </bin/dbstart

EOF

 

c)/etc/rc 스크립트의 마지막에 다음을 추가한다.

 

/bin/su  – c <$ORACLE_HOME>/bin/dbstart

 

AIX 에서 시스템 shutdown 은 /etc/shutdown 에 의한다. 시스템을 내릴 때 오라클을 shutdown 하려면 별도의 시스템 shutdown 스크립트(root 소유로)를 다음과 같이 만들어서 /etc/shutdown 을 사용하지 말고 이것을 사용해야 한다.

 

#!/bin/sh

/bin/su  -c <$ORACLE_HOME>/bin/dbshut

/etc/shutdown $*

 

(5)HP/UX

——–

 

/etc/rc         : 시스템 startup 화일

/etc/shutdown   : 시스템 shutdown 실행화일

/etc/shutdown.d : 시스템 shutdown 디렉토리

 

HP/UX 에서는 시스템 startup 시에 /etc/rc 가 실행된다. 따라서 다음 라인을 /etc/rc 스크립트의 마지막에 추가하면 autostartup 이 가능해진다.

 

su  -c <$ORACLE_HOME>/bin/dbstart

 

시스템의 shutdown 은 /etc/shutdown 화일을 실행하여 수행된다. 이 프로그램은 /etc/shutdown.d 디렉토리에 들어있는 스크립트를 실행시키는데 다음과 같은 세가지 방법 가운데 하나로 autoshutdown 을 세팅할 수 있다.

 

a)$ORACLE_HOME/bin/dbshut 화일을 /etc/shutdown.d 디렉토리 아래에 copy

b)/etc/shutdown.d/dbshut 을 $ORACLE_HOME/bin/dbshut 으로 symbolic link 지정

c)다음과 같은 스크립트 작성

 

#!/bin/sh

su  -c <$ORACLE_HOME>/bin/dbshut

 

단,이 스크립트는 root 의 소유이고 root 에 의해서만 실행가능해야 한다.

 

만약 V6 와 V7 을 동시에 사용하는 경우라면 V7 에서 제공하는 dbshut을 사용하도록 한다.


Comments

comments

haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다