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 출력 파일의 해석은 정보수준에서 참고하시면 좋겠습니다. ~~
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 |
댓글 영역