기술 정보
home
채널 소개
home

통계수집 중 get_blk_cnt함수 사용 시 에러

문서 유형
장애 해결
분야
패치/업그레이드
키워드
shdrblk
적용 제품 버전
6FS06
1 more property

현상

통계 수집 과정에서 get_blk_cnt 함수를 읽을 때 Internal Error '((shdrblk->cl.type == TCBLKT_SEGMENT_HEADER) && (shdrblk->tx.sgmt_id == sgmt_id))' 가 발생한 현상 입니다.
## callstack 일부 Thread 10 (Thread 0x7f5c876d7700 (LWP 10032)): #0 0x00007f62c8fb266d in nanosleep () from /lib64/libc.so.6 #1 0x00007f62c8fb2504 in sleep () from /lib64/libc.so.6 #2 0x0000000000d90415 in tb_system (cmdstring=<optimized out>, timeout_in_sec=297, kill_child=1 '\001', ds=<optimized out>) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/frame/callstack.c:232 #3 callstack_dump_ex (ds=0x3a8d480 <debug_dstream>, tid=<optimized out>, dump_dest_dir=0x0) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/frame/callstack.c:1020 #4 0x0000000000d8dcf9 in tb_tracedump (tracedump_cause=TRACEDUMP_ASSERT) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/frame/tbsvr_tracedump.c:91 #5 0x0000000000fd4cc6 in tb_assert_msg_detail (cond=0x272b078 "((shdrblk->cl.type == TCBLKT_SEGMENT_HEADER) && (shdrblk->tx.sgmt_id == sgmt_id))", argc=<optimized out>, filename=0x272a752 "tx_sgmt.c", line=<optimized out>, func=<optimized out>) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/minimal/tb_assert.c:115 #6 0x00000000019e9ac3 in tx_sgmt_get_blk_cnt (ts_id=<optimized out>, shdrdba=<optimized out>, sgmt_id=<optimized out>) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/tx/tx_sgmt.c:6175 #7 0x00000000012a1e6b in pkg_sys_util__get_blk_cnt (argv=<optimized out>, obj_id=<optimized out>) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/pkg/pkg_sys_util.c:118 #8 0x00000000014a2d48 in psm_vm_execute (env=0x7f5c876d51c0, bcode=0x7f5c876d5780, start_pc=0x0, argv=0x0) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/psm/psm_vm.c:5216 #9 0x00000000014a7eb7 in psm_vm_interpret (bcode=0x7f5c876d5780, pkg=<optimized out>, argv=0x0) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/psm/psm_vm.c:3632 #10 0x00000000014ef14c in psm_execute_anonblk (alloc_psm=0x7f5c580126f0, bcode=0x7f5c876d5780, host_vars=0x0) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/psm/psm_for_frame.c:554 #11 0x00000000014f0676 in psm_execute_anonblk_from_sga_bcode (msg_alloc=0x7f5c876d3ed0, sga_bcode=<optimized out>, host_vars=0x7f5c876d3f60) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/psm/psm_for_frame.c:285 #12 psm_anonblk (msg_alloc=<optimized out>, pp=<optimized out>, sql=0x7f5c8878f780 "begin\n/*+EVERY_MIDNIGHT_STAT_GATHERING*/ begin dbms_stats.gather_database_stats (gather_sys=>true, options=>'GATHER AUTO', method_opt=>'FOR ALL INDEXED COLUMNS SIZE REPEAT'); end;\nend;", host_vars=0x0, exec_mode=<optimized out>, pp_hit=0 '\000') at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/psm/psm_for_frame.c:97 #13 0x0000000001269763 in pkg_dbms_job_execute_common (alloc=0x7f5c58011f20, job=7, what=<optimized out>, raw_job=0x7f6199e33060, flags=0) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/pkg/pkg_dbms_job.c:771 #14 0x000000000126bf78 in psm_job_run_internal (alloc=0x7f5c58011f20, raw_job=0xffffffffffffffff, flags=0) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/pkg/pkg_dbms_job.c:82 #15 0x0000000000588f8e in wthr_get_new_job (my_tid=<optimized out>) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/body/tbsvr_wthr.c:2654 #16 thread_main_chk_bitmask (my_tid=593, bitmask=...) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/body/tbsvr_wthr.c:171 #17 0x0000000000598b57 in svr_wthr_main_internal (my_tid=593) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/body/tbsvr_wthr.c:884 #18 0x0000000000d72d80 in wthr_init (args=<optimized out>) at /home/autodist/build_20210512_190704/tibero6/src/tbsvr/frame/tbsvr_cthr.c:3241 #19 0x00007f62cb1ccdc5 in start_thread () from /lib64/libpthread.so.0 #20 0x00007f62c8feb73d in clone () from /lib64/libc.so.6 ## out파일 일부 [593] Internal Error with condition: '((shdrblk->cl.type == TCBLKT_SEGMENT_HEADER) && (shdrblk->tx.sgmt_id == sgmt_id))' (3 args) (tx_sgmt.c:6178:tx_sgmt_get_blk_cnt) (pid=9679, sessid=593, tid=593) (shdrblk->cl.type) = '' = 0xc (shdrblk->tx.sgmt_id) = 1574441 = 1574441 = 0x180629 (sgmt_id) = 1564323 = 1564323 = 0x17dea3 [593] client : ip [] process [JOB_SCHEDULER] logon time : [2023/07/29 00:01:00] [593] prev sql : "select p.obj_id, sgmt_id, ts_id, shdrdba, subpartcnt from sys._dd_tblpart p, sys._dd_obj o where p.bo_id = :B1 and o.obj_id = p.obj_id" [593] current sql : "begin /*+EVERY_MIDNIGHT_STAT_GATHERING*/ begin dbms_stats.gather_database_stats (gather_sys=>true, options=>'GATHER AUTO', method_opt=>'FOR ALL INDEXED COLUMNS SIZE REPEAT'); end; end;" [593] *** 2023/07/29 00:01:13.061 *** [593] callstack dump from tbsvr_WP049 for [WTHR, 593, 10032/9679] [593] SEE DUMP tbsvr.callstack.9679 (lwpid 10032) BY PSTACK
SQL
복사

원인

통계 수집 과정에서 get_blk_cnt 함수를 읽을 때 잘못된 sgmt공간으로 접근하여 발생하는 에러 입니다.
통계 수집 중 sgmt에 add/drop part가 반복되는 상황에서 drop된 sgmt공간이 add시 재할당 되고, drop 전 설정되어 있던 정보로 sgmt공간에 접근 시 발생합니다.

해결

통계수집 중 문제 발생 시 해당 sgmt에 대한 수집을 생략할 수 있도록, 패치를 적용해 해결합니다. (적용패치: 312409a)
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.