출처 :
https://oracle-base.com/articles/linux/automating-database-startup-and-shutdown-on-linux
https://thefif19wlsvy.tistory.com/157
리눅스에서 자동으로 재기동할 수 있게 해주는 쉘입니다.
테스트는 linux 6,linux 7에서 수행하였습니다.
(출처에는 리눅스 6용이라고 되어 있었는데, 테스트는 리눅스 7에서 수행하였고, 잘 수행되었음. 실제 서버는 리눅스 6이라 적용했고 잘 수행되었음.)
DB 버전은 11.2.0.2로 수행하였습니다.
등록을 위해서는 두가지절차가 있습니다.
1.oratab flag 변경
2.쉘 등록
작업 내용
1.oratab flag 변경
[oracle 유저로 수행]
# cat /etc/oratab
XE:/u01/app/oracle/product/11.2.0/xe:Y
2.쉘 등록
[root유저로 수행]
ORA_HOME과 ORA_OWNER를 환경에 맞게 변경합니다.
# vi /etc/init.d/oracle
#!/bin/bash
#
# chkconfig: - 70 30
# description: oracle for GCLB
# ORA_HOME 경로는 자기 경로에 맞게 설정한다.
ORA_HOME="/u01/app/oracle/product/11.2.0/xe"
ORA_OWNER="oracle"
case "$1" in
start)
echo -n "Oracle Start: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
echo -n "ORACLE Shutdown: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart"
exit 1
esac
exit 0
권한 변경 및 chkconfig 등록
# chmod 775 /etc/init.d/oracle
# chkconfig --add oracle
# chkconfig oracle on
# chkconfig --list oracle
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
oracle 0:off 1:off 2:on 3:on 4:on 5:on 6:off
완료되었습니다. 이제 재기동하면 자동으로 기동되게 됩니다.
테스트
아래는 테스트한 결과인데 같이 첨부합니다. 테스트는 1번 oratab 변경과 2번 쉘등록중 하나만 해도 재기동 시 자동기동이 될까에 대한 테스트이고 4번의 상황에 DB가 자동으로 올라오는지 테스트 하였습니다.
1.oratab : Y & chkconfig 등록 X
# cat /etc/oratab
XE:/u01/app/oracle/product/11.2.0/xe:Y // Y
# chkconfig --list oracle
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
error reading information on service oracle: No such file or directory //등록 안되어 있음
재기동 후
DB가 자동기동 되지 않았습니다.
$ ps -ef |grep pmon
vagrant 1589 1565 0 15:53 pts/0 00:00:00 grep --color=auto pmon
$ ps -ef |grep tns
root 23 2 0 15:52 ? 00:00:00 [netns]
vagrant 1596 1565 0 15:53 pts/0 00:00:00 grep --color=auto tns
2.oratab : N & chkconfig 등록 O
# cat /etc/oratab
XE:/u01/app/oracle/product/11.2.0/xe:N //N
# chkconfig --list oracle
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
oracle 0:off 1:off 2:on 3:on 4:on 5:on 6:off
재기동 후
DB는 기동되지 않음(리스너는 기동됨)
$ ps -ef |grep pmon
vagrant 1692 1662 0 16:06 pts/0 00:00:00 grep --color=auto pmon
$ ps -ef |grep tns
root 23 2 0 16:04 ? 00:00:00 [netns]
oracle 956 1 0 16:04 ? 00:00:00 /u01/app/oracle/product/11.2.0/xe/bin/tnslsnr LISTENER -inherit
vagrant 1697 1662 0 16:06 pts/0 00:00:00 grep --color=auto tns
3.oratab : Y & chkconfig 등록 O
# cat /etc/oratab
XE:/u01/app/oracle/product/11.2.0/xe:Y //Y
# chkconfig --list oracle
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
oracle 0:off 1:off 2:on 3:on 4:on 5:on 6:off
재기동 후
DB 자동기동 잘됨
$ ps -ef |grep pmon
oracle 1032 1 0 15:40 ? 00:00:00 xe_pmon_XE
vagrant 1816 1775 0 15:41 pts/0 00:00:00 grep --color=auto pmon
$ ps -ef |grep tns
root 23 2 0 15:40 ? 00:00:00 [netns]
oracle 954 1 0 15:40 ? 00:00:00 /u01/app/oracle/product/11.2.0/xe/bin/tnslsnr LISTENER -inherit
vagrant 1819 1775 0 15:41 pts/0 00:00:00 grep --color=auto tns
4.oratab : N & chkconfig 등록 X
# cat /etc/oratab
XE:/u01/app/oracle/product/11.2.0/xe:N // N
# chkconfig --list oracle
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
error reading information on service oracle: No such file or directory //등록 안되어 있음
재기동 후
DB 재기동 안됨.
$ ps -ef |grep pmon
vagrant 1753 1730 0 16:14 pts/0 00:00:00 grep --color=auto pmon
$ ps -ef |grep tns
root 23 2 0 16:10 ? 00:00:00 [netns]
vagrant 1757 1730 0 16:14 pts/0 00:00:00 grep --color=auto tns
테스트 결과, 두개의 파일이 같이 적용되어야 자동으로 재기동 되는것을 확인할 수 있었습니다.
다만,
쉘 내용은 os상에서 sh oracle start/stop/restart 로 DB를 기동/중지/재기동 한다는 내용인데.. chkconfig 등록만으로도 DB가 OS 재기동시 자동으로 기동되는 이유는 정확히 이해되지 않고 있습니다.
이해된다면 내용 추가하겠습니다.
끝.
'Oracle > 운영' 카테고리의 다른 글
큰 트랜잭션이 취소됐을때 확인 법과 대처법 (0) | 2023.05.19 |
---|---|
[ASM] diskgroup에 disk 추가하기 (0) | 2023.05.16 |
파티션 테이블 옵션사용 여부에 따른 인덱스 변화 체크 테스트 (0) | 2023.04.14 |
[DBMS_SPACE,DBMS_ADVISOR]리오그 대상 확인 빌트인 패키지 비교 (0) | 2023.02.23 |
특정 테이블스페이스에서 오브젝트 용량 증가량 조회 (0) | 2023.02.21 |
댓글