JP1_AJS3_작업관리

[JP1/AJS3] 방치하면 위험하다?! 디스크 파편화 무효영역

jp1 blog 2025. 4. 4. 16:11

 

 

JP1/AJS3-Manager를 이용중, 임베디드 DB에 「무효 영역」이 발생하는 것을 아십니까?

JP1/AJS3는 임베디드 DB라는 데이터베이스를 사용합니다. JP1/AJS3를 운용하고 있으면, 내부에서 데이터의 추가나 삭제등의 갱신이 이루어지고 있습니다만, 갱신이 반복되면(자) 임베디드 DB내에 단편화한 빈 영역(무효 영역)이 발생합니다. 이 유효하지 않은 공간을 방치하면 데이터베이스 액세스 성능이 저하되고 작업이 지연되거나 필요 이상으로 데이터베이스 공간을 사용하여 작업이 비정상적으로 종료되는 문제가 발생할 수 있습니다.

그래서 이번에는 무효영역의 증가에 의해 발생할 수 있는 3가지 문제와 무효영역의 유지보수 방법을 소개합니다.

 

무효영역 증가로 인한 3가지 문제

1. 작업 지연

 

JP1 / AJS3-Manager는 작업 정의 정보, 실행 결과, 실행 상태 등의 정보를 내장 DB에 저장합니다.

임베디드 DB에 무효 영역이 발생하면 이 정보가 데이터베이스에 효율적으로 저장되지 않고 작업이 실행 중이 되기까지 시간이 걸리거나 작업 종료 시 등의 상태 천이에 시간이 걸립니다. 또, 이 이벤트는 작업의 상태 천이에 시간이 걸리는 것만으로, 이상 종료는 하지 않습니다. 그러므로 작업이 지연 되고 있음을 알 수 없으며 종료 예정 시간이 되어도 작업이 끝나지 않는 등의 문제가 발생할 수 있습니다 .

 

유효하지 않은 공간이 증가하면 데이터베이스 액세스 성능이 저하되고 작업이 지연될 수 있습니다.
※그림은 무효 영역을 나타내기 위한 이미지입니다.

또한 무효 영역은 갑자기 증가하지 않고 점차 증가합니다. 따라서 작업이 실행되기 전에는 몇 밀리 초 정도의 지연에서 몇 초, 수십 초의 지연으로 이어집니다.

 

2. 임베디드 DB 영역 부족으로 인한 작업 이상 종료

 

JP1/AJS3-Manager의 내장 DB에는, 데이터베이스가 FULL이 되었을 때에, 자동으로 영역을 늘리는 기능 「자동 증분 기능 ※」이 있습니다. 이 「자동 증분 기능」을 이용하지 않는 설정으로 하고 있는 경우, 데이터베이스 용량이 FULL가 되었을 때에 데이터를 격납할 수 없어, 그 결과 작업이 이상 종료합니다. 또한 임베디드 DB의 무효 영역이 계속 증가하면 쓸데없이 데이터베이스 공간을 활용하기 때문에 설계 시 예상보다 많은 공간을 사용하여 예상치 못한 데이터베이스 용량이 FULL이 될 수 있습니다. ※「자동 증분 기능」은, JP1/AJS3-Manager의 인스톨시에 설정합니다. 디폴트는 「자동 증분 기능」이【유효】로 되어 있습니다. 본 기능의 설정 확인 방법은 "[ 무효 영역 유지 보수 방법] 1. 임베디드 DB 자동 증분 기능 확인 "을 참조하십시오.

 

 

※그림은 무효 영역을 나타내기 위한 이미지입니다.

데이터베이스 공간이 80%, 90%, 100%가 되면 다음 메시지가 Windows 이벤트 로그와 UNIX syslog에 출력됩니다.

KFPH00211-I
RDAREA usage aaa%, RDAREA = "bb....bb"cc....cc (L)
aaa: 다음 중 하나가 출력됩니다.
RD 영역의 최종 파일 사용 세그먼트 상대 위치
RD 영역 전체의 세그먼트 사용률 전체
RD 영역 사용 세그먼트 상대 위치
bb....bb: 해당 RD 영역 이름
cc....cc: 세그먼트 사용률 추가 정보, dd....dd segments unused

 

이 메시지는 임베디드 DB의 유효 영역이 늘어날 가능성을 나타냅니다. 작업의 이상 종료 등의 문제를 미연에 방지하려면 80%의 메시지가 출력될 때 무효 영역을 해소해야 합니다. (90%를 넘은 타이밍에서는 작업에 필요한 여유 공간을 확보할 수 없어 무효 영역을 해소하는 명령을 실행할 수 없었던 사례가 있습니다.)

무효 영역의 해소 방법은 「【무효 영역의 유지 보수 방법】그 3. 무효 영역을 해소한다」를 참조해 주십시오.

 

3. 디스크 공간 부족으로 인한 작업 이상 종료

 

JP1/AJS3-Manager 내장 DB의 「자동 증분 기능」을 이용하는 설정으로 하고 있는 경우, 디스크 공간이 없어질 때까지 데이터베이스 영역이 자동적으로 확장됩니다. 임베디드 DB의 유효하지 않은 공간이 증가하는 등 자동으로 데이터베이스 공간이 계속 확장되면 디스크가 FULL이 되어 작업이 비정상적으로 종료 됩니다.

 

 

※그림은 무효 영역을 나타내기 위한 이미지입니다.

또한 데이터베이스가 확장될 때마다 다음 메시지가 Windows 이벤트 로그나 UNIX syslog로 출력됩니다. 이 메시지가 계속 출력되면 유효하지 않은 공간으로 인해 데이터베이스가 확장되었을 수 있습니다.

 

KFPH22024-W
Extension completed in RDAREA "aa....aa",FILE "bb....bb",ccccc(dd....dd) segments created (L)
aa....aa:데이터베이스 영역명
bb....bb:파일명 (파일명이 113자 이상일 경우에는 뒤에서 112자만 출력됩니다.)
ccccc:충분한 세그먼트수
dd....dd:총 세그먼트수

 

무효영역 유지 보수 방법

 

1. 임베디드 DB 자동 증분 기능 확인

 

JP1 / AJS3-Manager의 내장 DB는 설치시 자동 증분을 설정할 수 있습니다. 디폴트에서는, 인스톨러로 「자동 증분 기능」을【유효】로 하고 있습니다. 기본 설정으로 빌드한 후 [무효]로 변경하려면 데이터베이스 재구축이 필요합니다.

자동 증분 기능의 설정 상태는 다음 로그 파일에서 확인합니다.

■WIndows의 경우
C:\ProgramData\Hitachi\jp1\jp1_default\JP1AJS2\log\embdb\ajsembdbbuild_JFxx.log

■UNIX계의 경우
/var/opt/jp1ajs2/log/embdb/ajsembdbbuild_JFxx.log

※ xx에는 구축 시 지정한 데이터베이스 지시자가 표시됩니다.

 

출력 예는 다음과 같습니다.

[EmbedDB SETUP START] -s -d “C:\Program Files (x86)\HITACHI\JP1AJS2・・・・・ -ext_db -ext_log
상기 출력 예와 같이「ajsembdbbuild」 명령 실행 시 옵션에「-ext_db」가 포함되어 있는 경우 자동증분기능이 유효합니다.

 

2. 무효영역 확인

 

유효하지 않은 영역의 발생을 확인하려면 「ajsembdbstatus」 명령을 실행하십시오. 명령 결과의 빈 세그먼트(Unused Segment)  적고 빈 페이지 수 (Collect Prearranged Page )  많으면 무효 영역이 많이 발생하고 있음을 나타냅니다. 명령 실행 예와 실행 결과는 아래를 참조하십시오.

 

● 명령 실행 예
[Windows의 경우]
> "C:\Program Files (x86)\Hitachi\JP1AJS2\tools\ajsembdbstatus" -db -d -id _JF0

[UNIX계의 경우]
# /opt/jp1ajs2/tools/ajsembdbstatus -db -d -id _JF0

실행 결과에서 사용 가능한 세그먼트 수를 확인하는 방법
                    <전략>
RD Area Name : AJS2DATA
Server : ajs2
Total Segment : 301 Segment Size : 10 Pages
Unused Segment0 Page Size : 30720 Bytes
History1 Hold Status : Hold Code : 0Hold Time :
History2 Hold Status : Hold Code : 0Hold Time :
--------------------------------------------------------------------------------------------------------------------------------
                    <중략>
RD Area Name : AJS2INDX
Server : ajs2
Total Segment : 904 Segment Size : 10 Pages
Unused Segment5 Page Size : 4096 Bytes
History1 Hold Status : Hold Code : 0 Hold Time :
History2 Hold Status : Hold Code : 0 Hold Time :
---------------------------------------------------------------------------------------------------------------------------------
                    <후략>

 

위와 같이 「Unused Segment」 의 값이 1 자리수대 등 극단적으로 작은 경우는 빈 세그먼트가 적다고 판단합니다.

 

【실행 결과로부터, 빈 페이지수의 확인한다】
                    <전략>
Table Name : AJS1BODY
Auth Id : root
Status :
Reference Pending Status :
Check Pending Status :
Segment Reuse : 18 segments
<Base row segment>
Search Mode : INS
Reuse Search Failure : 222/ 223Used(Full) Used(Full) 241( 218) 241
Page 0%( 0%) 2409( 2202) 2410
Collect On Segment : 0
Collect Prearranged Page254
                    <후략>

 

위와 같이 「Collect Prearranged Page」 의 값이 3자리에 이르는 등 큰 경우에는 빈 페이지 수가 많다고 판단합니다.

 

3. 무효영역을 해소한다

 

늘어난 무효 영역을 해소하기 위해서는, 임베디드 DB의 메인터넌스 커멘드 「ajsembdbreclaim ※」를 실행합니다. 이 명령은 하루에 한 번 작업이 적은 시간대에서 실행하는 것이 좋습니다.

※「ajsembdbreclaim」커맨드는, JP1/AJS3-Manager 서비스 기동중에 실행할 수 있습니다(서비스 정지는 불필요). 매일 실행하는 작업에 통합하여 실행할 수도 있습니다.

 

● 명령 실행 예
[Windows의 경우]
> "C:\Program Files (x86)\Hitachi\JP1AJS2\tools\ajsembdbreclaim" -m manager

[UNIX계의 경우]
# /opt/jp1ajs2/tools/ajsembdbreclaim -m manager

 

ajsembdbreclaim 명령을 실행하면 유효하지 않은 영역이 제거되고 작업 지연과 같은 문제를 예방할 수 있습니다.

 

정  리

이번에는 JP1 / AJS3-Manager의 무효 영역 발생에 대해 소개했습니다. 데이터베이스에 유효하지 않은 공간이 발생했음을 명령을 실행하지 않으면 확인할 수 없으며 작업 지연과 같은 문제가 발생하여 처음으로 발견되는 경우가 대부분입니다. 문제를 예방하기 위해 매일 한 번 "ajsembdbreclaim" 명령을 실행하여 무효 영역을 제거하십시오.

 

제품 정식 명칭/약칭 표기 및 기능 대상 버전

JP1/Automatic Job Management System 3 - Manager/JP1/AJS3-Manager

 

 

추가로 궁금하신 사항은...

아래 연락처로 문의 부탁 드립니다.

 

TEL: 02-701-2020 / hmchung@bismuth.co.kr

 

 

 

 

※ 본 콘텐츠는 일본 어시스트社에서 제공한 내용으로 구성되었습니다.

    ⓒ 2025 Ashisuto. All rights reserved.