기술 정보
home
채널 소개
home

Windows 7.2.2 DB nomount 기동 불가 현상

문서 유형
장애 해결
분야
설치
키워드
Internal Error
WIindow
_SYSTEM_ROOT_ALLOCATOR_CNT
적용 제품 버전
7FS02
7FS02PS

현상

DB nomount 기동 후 기동이 안되고 Slog에 Internal Error 발생하였습니다.
Slog에 남겨진 에러 코드는 다음과 같습니다.
[2024-12-04T09:26:14.070000] [FRM-00] [I] time scale factor: (2496.629695->2497), real: 3617227 (usec) -> calculated: 3616015 (usec) [2024-12-04T09:26:14.070000] [FRM-00] [I] min sleep time: 0 usec [2024-12-04T09:26:14.515000] [CLB-00] [I] buffer cache pool initialization: total_wscnt=48, total_blkcnt=213360, blkcnt_per_ws=4445, cache_size_per_ws=34M [2024-12-04T09:26:14.515000] [CLB-00] [I] Default/Keep/Recycle Blocks=213360/0/0, WS = 48/0/0 [2024-12-04T09:26:14.548000] [TXS-00] [I] init l1cache: bucket_size=1024/1024 [2024-12-04T09:26:14.549000] [TXU-00] [I] xa init. pending_tx_cnt: 0 [2024-12-04T09:26:14.568000] [FRM-00] [I] Server is running at NOMOUNT mode (bootmode : NOMOUNT, bootflag : 0) ... 중략 .. [2024-12-04T09:26:14.620000] [ALC-00] [I] root_alloc for initializing (SHP slave allocator #0) LC. slave alloc: idx=0, init size=33554432, max size = 206682572, root alloc: available size=413335552, used size=33554432 [2024-12-04T09:26:14.620000] [ALC-00] [I] root_alloc for initializing (SHP slave allocator #0) DD. slave alloc: idx=0, init size=33554432, max size = 206682572, root alloc: available size=413335552, used size=67108864 [2024-12-04T09:26:14.620000] [ALC-00] [I] root_alloc for initializing (SHP slave allocator #0) SLAB. slave alloc: idx=0, init size=33554432, max size = 206682572, root alloc: available size=413335552, used size=100663296 [2024-12-04T09:26:14.620000] [ALC-00] [I] root_alloc for initializing (SHP slave allocator #0) MISC. slave alloc: idx=0, init size=8388608, max size = 330692115, root alloc: available size=413335552, used size=109051904 [2024-12-04T09:26:14.620000] [ALC-00] [I] root_alloc for initializing (SHP slave allocator #1) MISC. slave alloc: idx=1, init size=8388608, max size = 330692115, root alloc: available size=413335552, used size=117440512 [2024-12-04T09:26:14.620000] [ALC-00] [I] root_alloc for initializing (SHP slave allocator #2) MISC. slave alloc: idx=2, init size=8388608, max size = 330692115, root alloc: available size=413335552, used size=125829120 [2024-12-04T09:26:14.620000] [ALC-00] [I] root_alloc for initializing (SHP slave allocator #3) MISC. slave alloc: idx=3, init size=8388608, max size = 330692115, root alloc: available size=413335552, used size=134217728 [2024-12-04T09:26:14.620000] [ALC-00] [I] root_alloc for initializing (SHP slave allocator #0) LTERM. slave alloc: idx=0, init size=33554432, max size = 330692115, root alloc: available size=413335552, used size=167772160 [2024-12-04T09:26:14.634000] [FRM-00] [I] MONP(tbsvr) is ready : tid(0), ospid(16004) [2024-12-04T09:26:14.651000] [COM-81] [I] Internal Error with condition '!"Error entring TRY block with spinlock."' (rv_slave.c:2310) (pid=16004, sessid=81, tid=81, os_thr_id=22908)
SQL
복사

원인

Windows 환경에서는 MAX_SESSION_CNT 값에 따라 _SYSTEM_ROOT_ALLOCATOR_CNT 파라미터 값이 증가하게 됩니다. 기본적으로 _SYSTEM_ROOT_ALLOCATOR_CNT의 기본값은 MAX_SESSION_CNT / 2로 설정되어 있습니다. 이로 인해 tb_root_malloc 함수 내에서 해당 값만큼 버퍼를 초기화하는 로직이 수행되며, MAX_SESSION_CNT가 256을 초과하는 경우 128을 넘는 크기의 버퍼를 초기화하게 되어 메모리 손상이 발생할 수 있습니다.
예외 처리가 이에 대해 충분히 되어 있지 않아 문제가 발생한 현상입니다.

해결

1.
패치를 적용해 해결합니다. (적용 패치: 336017a)
_SYSTEM_ROOT_ALLOCATOR_CNT의 수가 128을 넘지 않도록 수정하는 패치 입니다.
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.
2.
회피책을 설정하여 오류 해결을 시도할 수 있습니다. (두 방법 중 하나를 적용하여 문제를 우회할 수 있습니다.)
MAX_SESSION_COUNT를 256 이하의 값으로 설정합니다.
_SYSTEM_ROOT_ALLOCATOR_CNT를 128 이하의 값으로 설정합니다.
설정 후, 아래 방법들로 문제 해결이 되었는지 확인 가능합니다.
[직접 확인법] Windows 머신에서 MAX_SESSION_COUNT=500 시 정상적으로 부팅 과정이 진행되는지 확인합니다. (부팅에 실패하더라도 로그들을 남기면서 실패해야 함)
[간접 확인법]
MAX_SESSION_COUNT=256 이상으로 부팅 후, select * from _vt_parameters 에서 _SYSTEM_ROOT_ALLOCATOR_CNT가 128로 고정되는지 확인합니다.
참고
Tibero7.2.2 Windows 뿐만 아니라  FS02_312239a 가 반영된 Windows Server는 모두 동일하게 적용됩니다.