기술 정보
home
채널 소개
home

Internal Error with condition '(cp->offset < l1blk->blkcnt)' (2 args) 발생

문서 유형
장애 해결
분야
모니터링/점검
키워드
Parallel DPL
DPL parallel
적용 제품 버전
6FS06
6FS07
1 more property

현상

Parallel DPL(Direct Path Load) 작업이 진행되는 중 트랜잭션 롤백이 발생하면서, Internal Error with condition '(cp->offset < l1blk->blkcnt)' 오류가 발생하는 현상이 발생했습니다.
sys.log 일부 발췌
[2025-02-13T11:49:43.439228] [FRM-217] [I] THROW. ec=ERROR_TX_CANT_ALLOC_EXT(-21004) [ No more extent available in tablespace 'TS_XXXX'. ] (csr_id:4294967295) [tx_ts.c:1513:ts_extend] .. [2025-02-13T11:49:44.460000] [DPL-219] [I] Allocating DP sgmt: 1 [2025-02-13T11:49:44.460452] [DPL-220] [I] Allocating DP sgmt: 1 [2025-02-13T11:49:44.461300] [DPL-217] [I] Allocating DP sgmt: 1 [2025-02-13T11:49:44.576788] [DPL-219] [I] create dp temp sgmt: obj_id=41750, ts_id=8, shdrdba=22_00211017, extsize=16, lock_id=219.4375 [2025-02-13T11:49:44.578200] [DPL-217] [I] create dp temp sgmt: obj_id=41751, ts_id=8, shdrdba=37_00204649, extsize=16, lock_id=217.4377 .. [2025-02-13T13:28:43.592921] [TXR-102] [I] TX 0006.15.5444 recovery DONE [2025-02-13T13:28:43.701249] [COM-133] [I] Bucket dump generated by condition 'cp->offset < l1blk->blkcnt' [2025-02-13T13:28:43.701308] [COM-133] [I] Internal Error with condition '(cp->offset < l1blk->blkcnt)' (2 args) (tx_l1blk.c:184:redocp_tx_l1blk_set_bm_apply) (pid=489224, sessid=133, tid=133)
SQL
복사
tbsvr.out 파일 일부 발췌
[94] *** 2025/02/13 13:28:43.592 *** [94] callstack dump from tbsvr_AGNT for [RSLV, 133, 489305/489224] [133] Internal Error with condition: '(cp->offset < l1blk->blkcnt)' (2 args) (tx_l1blk.c:184:redocp_tx_l1blk_set_bm_apply) (pid=489224, sessid=133, tid=133) (cp->offset) = 255 = 255 = 0xff (l1blk->blkcnt) = 0 = 0 = 0x0 [133] client : ip [] process [TX RECOVERY SLAVE] logon time : [2025/02/13 13:28:43] [133] prev sql : "NULL" [133] current sql : "NULL" pstack(/usr/bin/pstack) access failed. cannot dump [94] *** 2025/02/13 13:28:43.701 *** [94] callstack dump from tbsvr_AGNT for [RSLV, 133, 489305/489224] ================================ Thread #133 (Session #133): tb_thread_exit: (signo:0, sigtype:15) [133] *** FATAL ASSERT INSIDE SIGNAL(0) HANDLER (PID=489224, TID=133, SESSID=133): tbsvr_signal.c:652 (tb_thread_exit_internal): Assertion '0' failed. [0] ***** FATAL ASSERT (PID = 488998, TID = 0, SESSID = 0): ***** tbsvr_signal.c:1951 (sig_fatal_assert_handler): Assertion 'false' failed. ***** Program: tbsvr -startup -t NORMAL -SVR_SID XXXX
SQL
복사

원인

Parallel DPL 수행 중 테이블스페이스 공간 부족으로 인해 트랜잭션 롤백이 발생하였습니다.
이 과정에서 wlock_dp_temp_sgmt(이하 wlock)가 먼저 해제되었고, 이후 Temp Segment 공간에 다른 블록이 덮어쓰여 정합성 오류가 발생한 것으로 확인됩니다.

해결

FS06_CS_253829a 패치를 적용하여 해결합니다.
FS06_CS_253829a : 테이블스페이스 Full로 인해 Extent 할당에 실패하는 상황에서, 트랜잭션 롤백을 먼저 수행한 후 wlock을 해제하도록 로직을 수정한 패치입니다.
패치가 적용된 바이너리(기 적용된 경우 포함)나 253829a 패치를 신규로 적용하는 경우, 273422a 패치도 함께 적용해야 합니다.
273422a : PDPL(Parallel Direct Path Load) 수행 중 WLOCK_DP_TEMP_SGMT가 중복으로 release되는 현상을 제거한 패치입니다.
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.