지난 <startsap 과정 설명> 포스팅에서 startsap 명령어를 날렸을 어떤 순서로 서비스가 시작되는지 간단하게 알아보았습니다.

이번에는 심층적으로 startsap 과정을 이해 해보겠습니다.

 

그림은 UNIX 시스템에 해당됩니다. Windows 쪼금 다릅니다만, 대략적인 컨셉은 비슷하기 때문에 UNIX 시스템을 타겟으로 설명하겠습니다.

그림 출처: https://help.sap.com/viewer/ff18034f08af4d7bb33894c2047c3b71/7.4.16/en-US/b3903925c34a45e28a2861b59c3c5623.html?q=sap%20start%20service

 

(1) OS 부팅 -> /etc/init.d/sapinit 실행 -> sapstartsrv 프로세스 실행

UNIX/LINUX 에는 /etc/init.d 라는 디렉터리가 있습니다.

OS 부팅 시에 디렉터리에 있는 스크립트가 실행되는데요.

SAP 설치하게 되면 디렉터리 안에 sapinit 이라는 스크립트가 만들어집니다.

testehp8:tepadm 56> cd /etc/init.d

testehp8:tepadm 57> ls

functions  netconsole  network  README  sapinit

 

스크립트의 궁극적인 목적은 sapstartsrv 프로세스를 실행하는 것입니다.

sapstartsrv 프로세스는 SAP 시스템에서 필요한 프로세스들의 부모 프로세스가 됩니다.

따라서 sapstartsrv 프로세스는 절대 죽어서는 안됩니다.

 

또한 sapinit 스크립트는 /usr/sap/sapservices 파일을 읽어오는데, sapservices 파일에는 인스턴스 라이브러리 정보와 sapstartsrv 실행 스크립트를 포함하고 있습니다.

testehp8:tepadm 62> cat /usr/sap/sapservices

#!/bin/sh

LD_LIBRARY_PATH=/usr/sap/TEP/ASCS01/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/TEP/ASCS01/exe/sapstartsrv pf=/usr/sap/TEP/SYS/profile/TEP_ASCS01_testehp8 -D -u tepadm

LD_LIBRARY_PATH=/usr/sap/TEP/D00/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/TEP/D00/exe/sapstartsrv pf=/usr/sap/TEP/SYS/profile/TEP_D00_testehp8 -D -u tepadm

 

결국 OS 실행하고 나서 sapinit 실행되면 아래와 같은 SAP 시스템 관련 프로세스들이 실행됩니다.

크게 부분으로 나눌 있는데,

첫째는 /usr/sap/hostctrl/ 밑에 있는 Host Agent

둘째는 /usr/sap/TEP/ASCS<##> 밑에 있는 ASCS

셋째는 /usr/sap/TEP/D<##> 밑에 있는 PAS 부분입니다.

[root@testehp8 ~]# ps -ef | grep sap

root       2691      1  0 11:12 ?        00:00:00 /usr/sap/hostctrl/exe/saphostexec pf=/usr/sap/hostctrl/exe/host_profile

sapadm     2737      1  0 11:12 ?        00:00:00 /usr/sap/hostctrl/exe/sapstartsrv pf=/usr/sap/hostctrl/exe/host_profile -D

root       2824      1  0 11:12 ?        00:00:00 /usr/sap/hostctrl/exe/saposcol -l -w60 pf=/usr/sap/hostctrl/exe/host_profile

tepadm     3015      1  0 11:12 ?        00:00:00 /usr/sap/TEP/ASCS01/exe/sapstartsrv pf=/usr/sap/TEP/SYS/profile/TEP_ASCS01_testehp8 -D -u tepadm

tepadm     3187      1  0 11:12 ?        00:00:00 /usr/sap/TEP/D00/exe/sapstartsrv pf=/usr/sap/TEP/SYS/profile/TEP_D00_testehp8 -D -u tepadm

root       3623   3501  0 11:14 pts/0    00:00:00 grep --color=auto sap

 

(2) startsap

다시 위의 그림을 보시면 startsap 스크립트가 있습니다.

그대로 SAP 시스템을 구동 시키는 스크립트이며, Profile 디렉터리의 프로파일들을 읽어 들여서 설정된 파라미터에 맞도록 시스템을 구동 시킵니다. 과정에서 DB 실행 여부도 확인하고 실행 중이지 않다면 실행하는 것이구요.

 

제가 처음에 이해가 안됐던 부분은 startsap 스크립트가 sapstartsrv 실행시키느냐 인데요.

sapstartsrv 프로세스가 없으면 인스턴스 구동에 필요한 프로세스들을 만들 없기 때문에 한번 확인하는 과정이지 싶습니다.

그래서 sapinit 없애가지고 OS 부팅 시에 sapstartsrv 프로세스를 실행시키지 않은 상태에서 startsap 실행해봤는데, 역시나 동작하더군요.

 

아무튼 startsap 동작하게 되면 Work Process, Message Server 비롯한 여러 컴포넌트들이 실행됩니다.

 

여기까지 SAP 실행 과정을 세부적으로 살펴보았습니다.

 

출처:

https://help.sap.com/viewer/ff18034f08af4d7bb33894c2047c3b71/7.4.16/en-US/b3903925c34a45e28a2861b59c3c5623.html?q=sap%20start%20service

'SAP BC' 카테고리의 다른 글

CTS, TMS 란?  (0) 2022.02.27
SICK error - UUID is not active  (0) 2022.02.27
startsap 과정 설명  (0) 2022.02.26
Help Portal 링크 모음  (0) 2022.01.25
SAP 사용자 계정 생성 시 기본값 관련 파라미터  (0) 2021.11.09

+ Recent posts