Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-21
제목 오라클 database의 AUTOMATIC STARTUP/SHUTDOWN
오라클 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{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/inittab : 초기화 과정을 콘트롤
/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 와 같은 스크립트는 /etc/init.d 에 존재하는 같은 이름의 스크립트에
대한 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 < <$ORACLE_HOME>/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 스크립트의 마지막에 추가하면 auto startup 이 가능해진다.

su -c <$ORACLE_HOME>/bin/dbstart

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

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을
사용하도록 한다.
Comment
등록된 코멘트가 없습니다.