2011. 8. 4. 16:51
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
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
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
esac
위와 같이 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가 올라갑니다.
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_
#
# 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_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
}
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
}
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가 올라갑니다.
'OS > Linux' 카테고리의 다른 글
[명령어] RPM 명령으로 패키지 설치/삭제 Linux (0) | 2011.08.15 |
---|---|
ORACLE DB Installation Guide 9i R2 for RHEL4 x86 (0) | 2011.08.05 |
ORACLE 자동 실행 설정 (0) | 2011.08.04 |
Linux Redhat 4 설치 -> Oracle 9i 엔진 설치 -> 9.2.0.8 패치 -> DB 생성 (1) | 2011.07.28 |
rpm 관련 패치 다운 (0) | 2011.07.28 |