SAP Start 과정 (좀 더 세부적으로)
지난 <startsap 과정 설명> 포스팅에서 startsap 명령어를 날렸을 때 어떤 순서로 서비스가 시작되는지 간단하게 알아보았습니다.
이번에는 좀 더 심층적으로 startsap 과정을 이해 해보겠습니다.
※ 본 그림은 UNIX 시스템에 해당됩니다. Windows는 쪼금 다릅니다만, 대략적인 컨셉은 비슷하기 때문에 UNIX 시스템을 타겟으로 설명하겠습니다.
(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 실행 과정을 좀 더 세부적으로 살펴보았습니다.
출처: