문서유형ㅣ장애해결
분야ㅣ모니터링/점검
적용제품버전ㅣ6FS06, 6FS07
문서번호ㅣTMOTS029
현상
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)
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원인
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되는 현상을 제거한 패치입니다.
주의티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.