현상
_INC_DSPC_CNT 파라미터가 설정되어 있는 경우, system memory dump(alter system dump systemalloc;) 수행 시 'TBR-12123: An attempt to begin sysdump has failed.' 에러가 발생합니다.
SQL> select name, dflt_value, value from _vt_parameter where name='_INC_DSPC_CNT';
NAME DFLT_VALUE VALUE
------------- ---------- -----
_INC_DSPC_CNT 0 1
SQL> alter system dump systemalloc;
TBR-12123: An attempt to begin sysdump has failed.
SQL
복사
원인
TAC 환경에서 _INC_DSPC_CNT 파라미터를 적용한 경우, 메시지 수신을 담당하는 Dispatcher 쓰레드에 대한 memory dump 예외 처리 로직이 없어 dump 수행이 실패합니다.
참고
_INC_DSPC_CNT : DB 노드 간 TCP 통신을 할 때, 메시지 수신을 담당하는 쓰레드의 개수
-- sys.log
[02-10T14:32:39.643097] [DDL-194] [I] Executing DDL: alter system dump systemalloc
[02-10T14:32:50.057710] [FRM-10] [I] The following working thread failed to stop. tid: 132 serial no: 0, pid: 22348072, status: 3.
[02-10T14:32:50.057857] [FRM-10] [I] An attempt to stop 22348072 process for sysdump has failed. Resuming all threads back to normal.
[02-10T14:32:50.068475] [FRM-194] [I] THROW. ec=ERROR_SYSDUMP_FAILED(-12123) [ An attempt to begin sysdump has failed.] (csr_id:4294967295) [dump_thread.c:858:scs_dump_phm]
[02-10T14:32:50.076763] [DDL-194] [I] DDL execution failed (ec = -12123): alter system dump systemalloc
SQL> select * from v$process where tid=132;
PID| TID| SPID| NAME| ATCHWAIT
---------|----------|----------|------------|---------------
10| 132| 20644352| DSPC| 0x00
SQL
복사
해결
Dispatcher 쓰레드에 대한 예외 처리 로직을 보강하여 정상적인 메모리 dump가 수행되도록 합니다. (적용 패치: 326504a)
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.
※ 회피 방법: _INC_DSPC_CNT 파라미터 미사용
주의
프로세스의 allocator dump를 수행하려면 컨트롤 쓰레드를 제외한 모든 쓰레드를 일시적으로 정지시켜야 합니다.
이때 정지할 수 없는 쓰레드가 하나라도 존재하면, TBR-12123 오류와 함께 dump 작업이 실패하게 됩니다.
SQL> alter system dump systemalloc;
TBR-12123: An attempt to begin sysdump has failed.
SQL
복사