상세 컨텐츠

본문 제목

Db2 Trace Facility

Db2 for LUW

by 파란디비 2022. 11. 29. 12:40

본문

Db2 trace는 사용 중 오류가 발생하거나 Hang등 문제가 있을 때 실제 실패 시간 동안 시스템에서 발생한 내용에 대한 정보를 얻을 때 사용됩니다.

  • 어떤 함수 호출이 이루어졌는지 정보
  •  사용된 실제 코드 경로 정보
  •  일부 함수는 조작되는 데이터 정보

그러나 Db2 Trace는 상당 양의 시스템 자원을 소비하므로 서비스 운영 중인 시스템은 특정한 애플리케이션 또는 특정한 컴포넌트(함수)를 추적하도록 제한하여 영향을 최소화하는 주의가 필요합니다. 


Db2 Trace를 사용하는 몇가지 예제들입니다.

구분 명령어
모든 활동 추적
db2trc on –l 128M
<recreate the problem>
db2trc dmp <dmpfile>
db2trc off
db2trc flw <dmpfile> <flwfile>
db2trc fmt <dmpfile> <fmtfile>
Application 제한
(애플리케이션 핸들 또는 애플리케이션 ID)
db2trc on –l 128m –apphdl <apphdl> (up to 16 apphandles), OR
db2trc on –l 128m –appid <applid>  (up to 12 application IDs)
<recreate the problem>
db2trc dmp <dmpfile>
db2trc off
db2trc flw <dmpfile> <flwfile>
db2trc fmt <dmpfile> <fmtfile>
Component (함수) 제한
db2trc on -t -Madd SQLEX -Madd SQLO -f trace.dmp à Slow Connection           
Repro the slow connect: db2 "connect to <db name> user <userid>"
(You will be prompted for password)                            
db2trc off                                                     
db2trc fmt trace.dmp trace.fmt                                 
db2trc flw -t trace.dmp trace.flw                              
db2trc fmt -c trace.dmp trace_drda.fmt
성능 Trace •db2trc on -perfcount -t
•<…run your scenario…>
•db2trc dmp trace.dmp
•db2trc off
•db2trc perffmt trace.dmp trace.perfmt
•sort -k2nr trace.perfmt > trace.perfmt.sorted

Trace 출력 파일(FLW, FMT)에서 에러 코드를 확인하려면 SQL1032의 경우, -1032를 검색합니다.  Hang 이슈가 발생한 경우에는 문제 프로세스(스레드)에는 리턴 코드가 없거나  EXIT이 없습니다. 

 

1. Db2 Trace : Flow(FLW)

FLW는 DB2 루틴이 누구에 의해 호출되었는지, 리턴 코드, 마커 및 프로브 포인트를 시각적으로 표현합니다. 추적 ID는 컨텍스트 스위치 때문에 순차적이진 않습니다. 

308986      sqleProcessSCoordRequest entry [eduid 37 eduname db2agent]
310069      | sqlpParallelRecovery entry [eduid 37 eduname db2agent]
              <...lots of other calls here...>
316955      | sqlpParallelRecovery exit [rc = SQLB_EMP_MAP_INFO_NOT_FOUND]
317046      sqleProcessSCoordRequest exit

- 고유 추적 ID.  항상 1로 시작되고 번호는 증가
- 호출된 Db2 함수
- 함수 위치. "entry", "exit", "probe number", "marker", …
- DB2 "스레드"(EDU) ID 및 이름. db2diag.log의 EDU ID 및 이름과 일치
- 리턴 코드. DB2 APAR에서 검색

 

2. Db2 Trace : Format(FMT)

FMT는 개별 추적 항목에 대한 추가적인 세부 정보를 제공합니다. FLW와 달리 엔트리는 완벽히 순차적이며 시간순으로 정렬됩니다. 타임스탬프가 있으면(db2trc –t) 이러한 항목을 성능 측정에 사용할 수 있습니다. 앞서 언급한 컨텍스트 전환으로 인해 관심 추적 입력을 소유한 EDU에 각별한 주의가 필요합니다.

316955  exit DB2 UDB recovery manager sqlpParallelRecovery fnc (2.3.94.48.0)  pid 14925 tid 46912874998080 cpid 14546 node 0 rc = 0x8402001B = -2080243685 = SQLB_EMP_MAP_INFO_NOT_FOUND
316956  entry DB2 UDB base sys utilities sqleSubCoordTerm fnc (1.3.5.1051.0)  pid 14925 tid 46912874998080 cpid 14546 node 0 eduid 37 eduname  db2agent

- 고유 추적 ID (FLW의 ID와 일치)
- 기능의 특정 위치. "entry", "exit", "probe number", "marker"등
- 호출된 Db2 함수, "IP 주소" 기록
- 프로세스/스레드/EDU/노드 ID, EDU 이름. 타임스탬프 등도 포함
- 리턴 코드. FLW와 동일

 

Trace 출력 파일의 해석은 정보수준에서 참고하시면 좋겠습니다. ~~

 

'Db2 for LUW' 카테고리의 다른 글

dbsummary로 Db2 성능 문제 원인 찾기  (0) 2022.12.20
Db2 OLTP 아키텍처 구성  (0) 2022.12.05
외부(External) 테이블  (0) 2022.11.23
Db2 라이센스(LUW)  (0) 2022.11.08
Db2 신규 SQL 함수  (0) 2022.11.03

관련글 더보기

댓글 영역