오라클(Oracle) 자동 실행: 리눅스 systemd 서비스 등록

Wookoa 2025. 2. 23.

오라클 서비스 자동 시작 방법
오라클 서비스 자동 시작 방법

머리말

  리눅스 운영체제 CentOS7 이전 버전에서는 자동 재실행 스크립트를 위해서 /etc/rc.d/init.d 디렉터리에 스크립트를 생성하는 방법을 사용했다. 하지만 CentOS7부터는 systemd 데몬을 활용해서 서비스를 관리하는 방법이 공식적으로 가이드되고 있다. 자동 시작 서비스를 보다 쉽게 관리할 수 있는 장점과 병렬로 처리되기 때문에 부팅 속도가 향상되기 때문이다. 본 포스팅에서는 systemd 데몬을 활용해 서비스를 자동으로 시작할 수 있도록 설정하는 방법에 대해서 소개한다.

systemd 기능 및 특징

  서비스를 관리하는 systemd 데몬은 다른 프로세스보다 우선되는 최상위 프로세스이며 사용자 계정에서 최초로 실행되는 서비스다. systemd 서비스가 실행된 이후에 다른 서비스의 유닛들을 제어하고 관리가 가능하다. systemd 서비스의 특징은 아래와 같다.

init 프로세스에 대한 호환성 제공

시스템을 관리할 때 systemd 유닛을 사용

시스템 부팅 시 서비스를 병렬로 시작하기 때문에 성능 향상

사용자의 요구에 맞는 서비스 실행 관리

마운트 포인트와 자동 마운트 포인트 관리

  systemd 서비스에서 유닛들을 관리하는 영역은 총 3개로 구분된다. 쉽게 설명하면 수동, 임시 그리고 자동 설정 영역으로 구분된다. 각 영역에 대한 설명은 아래와 같다.

/etc/systemd/system: 시스템 관리자가 수동으로 생성 및 관리하는 유닛들을 저장 [부팅 시 사용]

/run/systemd/system: 런타임 상태일 때 임시로 유닛 파일을 저장하는 디렉터리 [재부팅 시 삭제]

/usr/lib/systemd/system: 특정 유닛이 포함된 패키지를 설치하면 저장되는 디렉터리

오라클 서비스 자동시작 설정

  systemd 서비스의 특징과 유닛 생성 영역을 숙지했다면 아래와 같이 서비스를 등록하면 된다. 본인의 경우 /usr/lib/systemd/system 디렉터리에 서비스를 등록했다.

#오라클 리스너 등록

vi /usr/lib/systemd/system/oracle_listener.service

 

[Unit]

Description=oracle listener

After=network.target

 

[Service]

Type=forking

Environment=ORACLE_BASE=/app/oracle

Environment=ORACLE_HOME=/app/oracle/11gR2

Environment=ORACLE_SID=wookoa

ExecStart=/app/oracle/11gR2/bin/lsnrctl start

ExecStop=/app/oracle/11gR2/bin/lsnrctl stop

User=oracle

 

[Install]

WantedBy=multi-user.target

#오라클 인스턴스 등록

vi /usr/lib/systemd/system/oracle_instance.service

 

[Unit]

Description=oracle instance

After=network.target syslog.target

 

[Service]

Type=forking

User=oracle

Group=database

Environment=ORACLE_BASE=/app/oracle

Environment=ORACLE_HOME=/app/oracle/11gR2

Environment=ORACLE_SID=wookoa

ExecStart=/app/oracle/11gR2/bin/dbstart

ExecStop=/app/oracle/11gR2/bin/dbshut

 

[Install]

WantedBy=multi-user.target

#systemd에 등록

systemctl daemon-reload

systemctl start oracle_listener.service

systemctl enable oracle_listener.service

systemctl start oracle_instance.service

systemctl enable oracle_instance.service

  systemd 모듈은 위에서 설정한 파일을 읽고 서비스를 시작, 재시작, 상태 출력 등 서비스를 관리하기 위한 기능을 제공한다. 따라서 정해진 규칙으로 파일을 생성해야 되며, systemd 데몬을 재시작함으로써 서비스를 관리할 수 있다. 아래의 표는 systemd 데몬을 활용한 명령어를 정리했으니 참고 바란다.

 명령 종류  상세 설명
 start  특정 유닛을 시작
 stop  특정 유닛을 정지
 reload  유닛의 설정 파일을 다시 로드
 restart  특정 유닛을 재시작
 enable  시스템 부팅 시 특정 유닛이 자동 실행 활성화
 disable  시스템 부팅 시 특정 유닛이 자동 실행 비 활성화
 is-active  특정 유닛의 시작 여부를 체크
 is-enabled  특정 유닛의 자동 실행 여부를 체크
 isolate  특정 유닛 및 관련된 유닛만 실행하고 그 외 유닛은 정지
 kill  특정 유닛에 종료 신호를 전송

꼬리말

  리눅스 시스템은 운영체제마다 서비스를 자동으로 시작하는 설정이 조금씩 다르다. 물론 발전하는 방향으로 변경되지만 버전 별 차이를 잘 숙지하고 있어야 시간을 낭비하는 경우가 줄어든다. CentOS7 버전에서 서비스를 자동으로 시작할 수 있도록 설정하는 방법을 소개한 본 포스팅은 이로써 마무리르 짓도록 한다.

인기있는 글

소중한 댓글 (0)