시스템이 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을 사용하도록 한다.