db2pd 명령은 DB2® 메모리 세트에서 신속하면서도 즉각적으로 정보를 리턴할 수 있기 때문에 문제점 해결에 사용됩니다.
개요
이 도구는 래치를 획득하거나 엔진 자원을 사용하지 않고 정보를 수집합니다. 그러므로 db2pd가 정보를 수집하는 동안 변경되고 있는 정보를 검색하는 것이 가능하며 예측됩니다. 따라서 데이터가 완전히 정확하지는 않을 수도 있습니다. 변경되는 메모리 포인터가 발생하면, db2pd가 비정상적으로 종료되지 않도록 신호 핸들러가 사용됩니다. 이로 인해 출력에 "데이터 구조 변경으로 명령이 강제로 종료됨"과 같은 메시지가 표시될 수 있습니다. 그럼에도 불구하고 이 도구는 문제점 해결에 유용할 수 있습니다. 래칭 없이 정보를 수집할 경우의 두 가지 이점은 신속한 검색 및 엔진 자원 경합이 없다는 점입니다.
특정 SQLCODE, ZRC 코드 또는 ECF 코드가 발생할 때 데이터베이스 관리 시스템에 대한 정보를 캡처하려면, db2pdcfg -catch 명령을 사용하여 이를 수행할 수 있습니다. 오류가 발생한 경우, db2cos(콜아웃 스크립트)가 시작됩니다. db2cos 스크립트를 동적으로 변경하여 db2pd 명령, 운영 체제 명령 또는 문제점을 해결하는 데 필요한 기타 명령을 실행할 수 있습니다. 템플리트 db2cos 스크립트 파일은 UNIX 및 Linux의 경우 sqllib/bin에 있습니다. Windows 운영 체제의 경우, db2cos는 $DB2PATH\bin 디렉토리에 있습니다.
새 노드를 추가하는 경우, db2pd -addnode 명령을 선택적 oldviewapps 및 detail 매개변수와 함께 사용하여 노드를 추가하고 있는 데이터베이스 파티션 서버에서 조작 진행을 모니터하여 자세한 정보를 얻을 수 있습니다.
현재 사용 중이거나 어떤한 이유로 비활성화된 이벤트 모니터 목록이 필요하면, db2pd -gfw 명령을 실행하십시오. 또한 이 명령은 각 고속 기록기 EDU에 대해 이벤트 모니터가 데이터를 기록하는 대상에 대한 정보와 통계를 리턴합니다.
예
- 예 1: 잠금 대기 진단
- 예 2: -wlocks 매개변수를 사용하여 대기 중인 잠금 모두 캡처
- 예 3: -apinfo 매개변수를 사용하여 잠금 소유자 및 잠금 대기자에 대한 자세한 런타임 정보 캡처
- 예 4: 잠금 문제점 고려 시 콜라웃 스크립트 사용
- 예 5: 응용프로그램을 동적 SQL문에 맵핑
- 예 6: 메모리 사용 모니터링
- 예 7: 테이블스페이스를 다 사용하고 있는 응용프로그램 식별
- 예 8: 복구 모니터링
- 예 9: 트랜잭션이 사용 중인 자원 양 판별
- 예 10: 로그 사용 모니터링
- 예 11: Sysplex 목록 보기
- 예 12: 스택 추적 작성
- 예 13: 데이터베이스 파티션에 대한 메모리 통계 보기
- 예 14: 인덱스 재구성 진행 모니터링
- 예 15: 프로세서 시간 소모별 상위 EDU 표시 및 EDU 스택 정보 표시
- 예 16: 에이전트 이벤트 메트릭 표시
예 1: 잠금 대기 진단
Locks:
Address TranHdl Lockname Type Mode Sts Owner Dur HldCnt Att ReleaseFlg
0x07800000202E5238 3 00020002000000040000000052 Row ..X G 3 1 0 0x0000 0x40000000
0x07800000202E4668 2 00020002000000040000000052 Row ..X W* 2 1 0 0x0000 0x40000000
-db 데이터베이스 이름 옵션을 사용하여 지정한 데이터베이스의 경우, 첫 번째 결과로 해당 데이터베이스에 대한 잠금이 표시됩니다. 이 결과는 TranHdl 2가 TranHdl 3에서 보유한 잠금에 대해 대기 중임을 표시합니다.Transactions:
Address AppHandl [nod-index] TranHdl Locks State Tflag Tflag2 Firstlsn Lastlsn LogSpace SpaceReserved TID AxRegCnt GXID
0x0780000020251B80 11 [000-00011] 2 4 READ 0x00000000 0x00000000 0x000000000000 0x000000000000 0 0 0x0000000000B7 1 0
0x0780000020252900 12 [000-00012] 3 4 WRITE 0x00000000 0x00000000 0x000000FA000C 0x000000FA000C 113 154 0x0000000000B8 1 0
TranHdl 2는 AppHandl 11과 연관되고 TranHdl 3은 AppHandl 12와 연관됨을 알 수 있습니다.Applications:
Address AppHandl [nod-index] NumAgents CoorPid Status C-AnchID C-StmtUID L-AnchID L-StmtUID Appid
0x07800000006879E0 12 [000-00012] 1 1073336 UOW-Waiting 0 0 17 1 *LOCAL.burford.060303225602
0x0780000000685E80 11 [000-00011] 1 1040570 UOW-Executing 17 1 94 1 *LOCAL.burford.060303225601
AppHandl 12는 동적문 17, 1을 마지막으로 실행했음을 알 수 있습니다. ApplHandl 11은 동적문 17, 1을 현재 실행 중이며 명령문 94, 1을 마지막으로 실행했습니다.Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x07800000209FD800 17 1 1 1 2 2 update pdtest set c1 = 5
0x07800000209FCCC0 94 1 1 1 2 2 set lock mode to wait 1
텍스트 컬럼이 잠금 시간종료와 연관된 SQL문을 표시함을 알 수 있습니다.예 2: -wlocks 매개변수를 사용하여 대기 중인 잠금 모두 캡처
venus@boson:/home/venus =>db2pd -wlocks -db pdtest
Database Partition 0 -- Database PDTEST -- Active -- Up 0 days 00:01:22
Locks being waited on :
AppHandl [nod-index] TranHdl Lockname Type Mode Conv Sts CoorEDU AppName AuthID AppID
47 [000-00047] 8 00020004000000000840000652 Row ..X G 5160 db2bp VENUS *LOCAL.venus.071207213730
46 [000-00046] 2 00020004000000000840000652 Row .NS W 5913 db2bp VENUS *LOCAL.venus.071207213658
예 3: -apinfo 매개변수를 사용하여 잠금 소유자 및 잠금 대기자에 대한 자세한 런타임 정보 캡처
venus@boson:/home/venus =>db2pd -apinfo 47 -db pdtest
Database Partition 0 -- Database PDTEST -- Active -- Up 0 days 00:01:30
Application :
Address : 0x0780000001676480
AppHandl [nod-index] : 47 [000-00047]
Application PID : 876558
Application Node Name : boson
IP Address: n/a
Connection Start Time : (1197063450)Fri Dec 7 16:37:30 2007
Client User ID : venus
System Auth ID : VENUS
Coordinator EDU ID : 5160
Coordinator Partition : 0
Number of Agents : 1
Locks timeout value : 4294967294 seconds
Locks Escalation : No
Workload ID : 1
Workload Occurrence ID : 2
Trusted Context : n/a
Connection Trust Type : non trusted
Role Inherited : n/a
Application Status : UOW-Waiting
Application Name : db2bp
Application ID : *LOCAL.venus.071207213730
ClientUserID : n/a
ClientWrkstnName : n/a
ClientApplName : n/a
ClientAccntng : n/a
List of inactive statements of current UOW :
UOW-ID : 2
Activity ID : 1
Package Schema : NULLID
Package Name : SQLC2G13
Package Version :
Section Number : 203
SQL Type : Dynamic
Isolation : CS
Statement Type : DML, Insert/Update/Delete
Statement : insert into pdtest values 99
venus@boson:/home/venus =>db2pd -apinfo 46 -db pdtest
Database Partition 0 -- Database PDTEST -- Active -- Up 0 days 00:01:39
Application :
Address : 0x0780000000D77A60
AppHandl [nod-index] : 46 [000-00046]
Application PID : 881102
Application Node Name : boson
IP Address: n/a
Connection Start Time : (1197063418)Fri Dec 7 16:36:58 2007
Client User ID : venus
System Auth ID : VENUS
Coordinator EDU ID : 5913
Coordinator Partition : 0
Number of Agents : 1
Locks timeout value : 4294967294 seconds
Locks Escalation : No
Workload ID : 1
Workload Occurrence ID : 1
Trusted Context : n/a
Connection Trust Type : non trusted
Role Inherited : n/a
Application Status : Lock-wait
Application Name : db2bp
Application ID : *LOCAL.venus.071207213658
ClientUserID : n/a
ClientWrkstnName : n/a
ClientApplName : n/a
ClientAccntng : n/a
List of active statements :
*UOW-ID : 3
Activity ID : 1
Package Schema : NULLID
Package Name : SQLC2G13
Package Version :
Section Number : 201
SQL Type : Dynamic
Isolation : CS
Statement Type : DML, Select (blockable)
Statement : select * from pdtest
예 4: 잠금 문제점 고려 시 콜라웃 스크립트 사용
Lock Timeout Caught
Thu Feb 17 01:40:04 EST 2006
Instance DB2
Database: SAMPLE
Partition Number: 0
PID: 940
TID: 2136
Function: sqlplnfd
Component: lock manager
Probe: 999
Timestamp: 2006-02-17-01.40.04.106000
AppID: *LOCAL.DB2...
AppHdl:
...
Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:06:53
Locks:
Address TranHdl Lockname Type Mode Sts Owner Dur HldCnt Att Rlse
0x402C6B30 3 00020003000000040000000052 Row ..X W* 3 1 0 0 0x40
출력에서 W*는 시간종료가 발생한 잠금을 표시합니다. 이 경우, 잠금 대기가 발생했습니다. 잠금이 상위 모드로 변환되는 경우에는 잠금 시간종료도 발생할 수 있습니다. 이는 출력에 C*로 표시됩니다.
결과를 트랜잭션, 응용프로그램, 에이전트 또는 db2cos 파일에 기타 db2pd 명령이 제공한 출력이 있는 SQL문에 맵핑할 수 있습니다. 출력 범위를 좁히거나 기타 명령을 사용하여 필요한 정보를 수집할 수 있습니다. 예를 들어, db2pd -locks wait 매개변수를 사용하여 활성화된 대기 상태인 잠금만 인쇄할 수 있습니다. 또한 -app 및 -agent 매개변수를 사용할 수 있습니다.
예 5: 응용프로그램을 동적 SQL문에 맵핑
db2pd -applications -dynamic 명령은 동적 SQL문에 대한 현재 및 마지막 앵커 ID와 명령문 고유 ID를 보고합니다. 따라서 응용프로그램에서 동적 SQL문으로의 직접 맵핑이 가능합니다.
Applications:
Address AppHandl [nod-index] NumAgents CoorPid Status
0x00000002006D2120 780 [000-00780] 1 10615 UOW-Executing
C-AnchID C-StmtUID L-AnchID L-StmtUID Appid
163 1 110 1 *LOCAL.burford.050202200412
Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x0000000220A02760 163 1 2 2 2 1 CREATE VIEW MYVIEW
0x0000000220A0B460 110 1 2 2 2 1 CREATE VIEW YOURVIEW
예 6: 메모리 사용 모니터링
다음 샘플 출력에 표시된 대로 메모리 사용을 이해하려면 db2pd -memblock 명령이 유용할 수 있습니다.
All memory blocks in DBMS set.
Address PoolID PoolName BlockAge Size(Bytes) I LOC File
0x0780000000740068 62 resynch 2 112 1 1746 1583816485
0x0780000000725688 62 resynch 1 108864 1 127 1599127346
0x07800000001F4348 57 ostrack 6 5160048 1 3047 698130716
0x07800000001B5608 57 ostrack 5 240048 1 3034 698130716
0x07800000001A0068 57 ostrack 1 80 1 2970 698130716
0x07800000001A00E8 57 ostrack 2 240 1 2983 698130716
0x07800000001A0208 57 ostrack 3 80 1 2999 698130716
0x07800000001A0288 57 ostrack 4 80 1 3009 698130716
0x0780000000700068 70 apmh 1 360 1 1024 3878879032
0x07800000007001E8 70 apmh 2 48 1 914 1937674139
0x0780000000700248 70 apmh 3 32 1 1000 1937674139
...
이 다음에는 정렬된 '풀별' 출력이 옵니다.
Memory blocks sorted by size for ostrack pool:
PoolID PoolName TotalSize(Bytes) TotalCount LOC File
57 ostrack 5160048 1 3047 698130716
57 ostrack 240048 1 3034 698130716
57 ostrack 240 1 2983 698130716
57 ostrack 80 1 2999 698130716
57 ostrack 80 1 2970 698130716
57 ostrack 80 1 3009 698130716
Total size for ostrack pool: 5400576 bytes
Memory blocks sorted by size for apmh pool:
PoolID PoolName TotalSize(Bytes) TotalCount LOC File
70 apmh 40200 2 121 2986298236
70 apmh 10016 1 308 1586829889
70 apmh 6096 2 4014 1312473490
70 apmh 2516 1 294 1586829889
70 apmh 496 1 2192 1953793439
70 apmh 360 1 1024 3878879032
70 apmh 176 1 1608 1953793439
70 apmh 152 1 2623 1583816485
70 apmh 48 1 914 1937674139
70 apmh 32 1 1000 1937674139
Total size for apmh pool: 60092 bytes
...
출력의 최종 섹션은 전체 메모리 세트에 대해 메모리 소비자를 정렬합니다.
All memory consumers in DBMS memory set:
PoolID PoolName TotalSize(Bytes) %Bytes TotalCount %Count LOC File
57 ostrack 5160048 71.90 1 0.07 3047 698130716
50 sqlch 778496 10.85 1 0.07 202 2576467555
50 sqlch 271784 3.79 1 0.07 260 2576467555
57 ostrack 240048 3.34 1 0.07 3034 698130716
50 sqlch 144464 2.01 1 0.07 217 2576467555
62 resynch 108864 1.52 1 0.07 127 1599127346
72 eduah 108048 1.51 1 0.07 174 4210081592
69 krcbh 73640 1.03 5 0.36 547 4210081592
50 sqlch 43752 0.61 1 0.07 274 2576467555
70 apmh 40200 0.56 2 0.14 121 2986298236
69 krcbh 32992 0.46 1 0.07 838 698130716
50 sqlch 31000 0.43 31 2.20 633 3966224537
50 sqlch 25456 0.35 31 2.20 930 3966224537
52 kerh 15376 0.21 1 0.07 157 1193352763
50 sqlch 14697 0.20 1 0.07 345 2576467555
...
UNIX 및 Linux 운영 체제에서는 전용 메모리에 대한 메모리 블록도 보고할 수 있습니다. 예를 들어, db2pd -memb pid=159770을 실행하는 경우 다음과 유사한 결과가 생성됩니다.
All memory blocks in Private set.
Address PoolID PoolName BlockAge Size(Bytes) I LOC File
0x0000000110469068 88 private 1 2488 1 172 4283993058
0x0000000110469A48 88 private 2 1608 1 172 4283993058
0x000000011046A0A8 88 private 3 4928 1 172 4283993058
0x000000011046B408 88 private 4 7336 1 172 4283993058
0x000000011046D0C8 88 private 5 32 1 172 4283993058
0x000000011046D108 88 private 6 6728 1 172 4283993058
0x000000011046EB68 88 private 7 168 1 172 4283993058
0x000000011046EC28 88 private 8 24 1 172 4283993058
0x000000011046EC68 88 private 9 408 1 172 4283993058
0x000000011046EE28 88 private 10 1072 1 172 4283993058
0x000000011046F288 88 private 11 3464 1 172 4283993058
0x0000000110470028 88 private 12 80 1 172 4283993058
0x00000001104700A8 88 private 13 480 1 1534 862348285
0x00000001104702A8 88 private 14 480 1 1939 862348285
0x0000000110499FA8 88 private 80 65551 1 1779 4231792244
Total set size: 94847 bytes
Memory blocks sorted by size:
PoolID PoolName TotalSize(Bytes) TotalCount LOC File
88 private 65551 1 1779 4231792244
88 private 28336 12 172 4283993058
88 private 480 1 1939 862348285
88 private 480 1 1534 862348285
Total set size: 94847 bytes
예 7: 테이블스페이스를 다 사용하고 있는 응용프로그램 식별
db2pd -tcbstats를 사용하여 테이블에 대한 삽입 수를 식별할 수 있습니다. 다음은 TEMP1이라는 사용자 정의 전역 임시 테이블에 대한 샘플 정보입니다.
TCB Table Information:
Address TbspaceID TableID PartID MasterTbs MasterTab TableName SchemaNm ObjClass DataSize LfSize LobSize XMLSize
0x0780000020B62AB0 3 2 n/a 3 2 TEMP1 SESSION Temp 966 0 0 0
TCB Table Stats:
Address TableName Scans UDI PgReorgs NoChgUpdts Reads FscrUpdates Inserts Updates Deletes OvFlReads OvFlCrtes
0x0780000020B62AB0 TEMP1 0 0 0 0 0 0 43968 0 0 0 0
db2pd -tablespaces 명령을 사용하여 테이블스페이스 3에 대한 정보를 얻을 수 있습니다. 샘플 출력은 다음과 같습니다.
Tablespace 3 Configuration:
Address Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg Name
0x0780000020B1B5A0 DMS UsrTmp 4096 32 Yes 32 1 1 on 1 0 31 TEMPSPACE2
Tablespace 3 Statistics:
Address TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM State MinRecTime NQuiescers
0x0780000020B1B5A0 5000 4960 1088 0 3872 1088 0x00000000 0 0
Tablespace 3 Autoresize Statistics:
Address AS AR InitSize IncSize IIP MaxSize LastResize LRF
0x0780000020B1B5A0 No No 0 0 No 0 None No
Containers:
Address ContainNum Type TotalPgs UseablePgs StripeSet Container
0x0780000020B1DCC0 0 File 5000 4960 0 /home/db2inst1/tempspace2a
FreePgs 컬럼은 스페이스를 채우고 있음을 표시합니다. 사용 가능한 페이지 값이 줄어들면 사용 가능한 스페이스도 줄어듭니다. 또한 FreePgs 값에UsedPgs 값을 더하면 UsablePgs 값과 같음에 유의하십시오.
이를 알았으면 db2pd -db sample -dyn을 실행하여 TEMP1 테이블을 사용 중인 동적 SQL문을 식별할 수 있습니다.
Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:13:06
Dynamic Cache:
Current Memory Used 1022197
Total Heap Size 1271398
Cache Overflow Flag 0
Number of References 237
Number of Statement Inserts 32
Number of Statement Deletes 13
Number of Variation Inserts 21
Number of Statements 19
Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x0000000220A08C40 78 1 2 2 3 2 declare global temporary table temp1 (c1 char(6)) not logged
0x0000000220A8D960 253 1 1 1 24 24 insert into session.temp1 values('TEST')
마지막으로, db2pd -db sample -app를 실행하여 이전 출력의 정보를 응용프로그램 출력에 맵핑하여 응용프로그램을 식별할 수 있습니다.
Applications:
Address AppHandl [nod-index] NumAgents CoorPid Status
0x0000000200661840 501 [000-00501] 1 11246 UOW-Waiting
C-AnchID C-StmtUID L-AnchID L-StmtUID Appid
0 0 253 1 *LOCAL.db2inst1.050202160426
동적 SQL문을 식별한 앵커 ID(AnchID) 값을 사용하여 연관된 응용프로그램을 식별할 수 있습니다. 결과는 마지막 앵커 ID(L-AnchID) 값이 앵커 ID(AnchID) 값과 동일함을 표시합니다. 다음 번에 db2pd를 실행할 때 db2pd 실행 결과를 사용하십시오.
Address AppHandl [nod-index] AgentPid Priority Type DBName
0x0000000200698080 501 [000-00501] 11246 0 Coord SAMPLE
State ClientPid Userid ClientNm Rowsread Rowswrtn LkTmOt
Inst-Active 26377 db2inst1 db2bp 22 9588 NotSet
db2pd -agent 명령 실행으로 발생하는 AppHandl 및 AgentPid 값을 db2pd -app 명령 실행으로 발생하는 AppHandl 및 CoorPid 값에 맵핑할 수 있습니다.
내부 임시 테이블이 테이블스페이스를 채우고 있다고 예측되는 경우에는 단계가 약간 다릅니다. 그러나 db2pd -tcbstats를 사용하여 삽입이 많은 테이블을 식별하십시오. 다음은 내재된 임시 테이블에 대한 샘플 정보입니다.
TCB Table Information:
Address TbspaceID TableID PartID MasterTbs MasterTab TableName SchemaNm ObjClass DataSize ...
0x0780000020CC0D30 1 2 n/a 1 2 TEMP (00001,00002) <30> <JMC Temp 2470 ...
0x0780000020CC14B0 1 3 n/a 1 3 TEMP (00001,00003) <31> <JMC Temp 2367 ...
0x0780000020CC21B0 1 4 n/a 1 4 TEMP (00001,00004) <30> <JMC Temp 1872 ...
TCB Table Stats:
Address TableName Scans UDI PgReorgs NoChgUpdts Reads FscrUpdates Inserts ...
0x0780000020CC0D30 TEMP (00001,00002) 0 0 0 0 0 0 43219 ...
0x0780000020CC14B0 TEMP (00001,00003) 0 0 0 0 0 0 42485 ...
0x0780000020CC21B0 TEMP (00001,00004) 0 0 0 0 0 0 0 ...
이 예에서는 TEMP (TbspaceID, TableID) 이름 지정 규칙을 가진 테이블에 대한 많은 삽입이 있습니다. 이는 내재된 임시 테이블입니다.SchemaNm 컬럼 값에서는 AppHandl 값 이름 지정 규칙이 SchemaNm 값과 병합되므로 작업 수행 중인 응용프로그램을 식별할 수 있습니다.
그런 다음, 해당 정보를 db2pd -tablespaces 출력에 맵핑하여 테이블스페이스 1에 사용한 스페이스를 확인할 수 있습니다. 다음 출력의 테이블스페이스 통계에서 UsedPgs 값과 UsablePgs 값 간의 관계에 주의하십시오.
Tablespace Configuration:
Address Id Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg Name
0x07800000203FB5A0 1 SMS SysTmp 4096 32 Yes 320 1 1 on 10 0 31 TEMPSPACE1
Tablespace Statistics:
Address Id TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM State MinRecTime NQuiescers
0x07800000203FB5A0 1 6516 6516 6516 0 0 0 0x00000000 0 0
Tablespace Autoresize Statistics:
Address Id AS AR InitSize IncSize IIP MaxSize LastResize LRF
0x07800000203FB5A0 1 No No 0 0 No 0 None No
Containers:
...
-tcbstats 출력에서 응용프로그램 핸들 30 및 31을 보았으므로 db2pd -app 명령을 사용하여 이를 식별할 수 있습니다.
Applications:
Address AppHandl [nod-index] NumAgents CoorPid Status C-AnchID C-StmtUID L-AnchID L-StmtUID Appid
0x07800000006FB880 31 [000-00031] 1 4784182 UOW-Waiting 0 0 107 1 *LOCAL.db2inst1.051215214142
0x07800000006F9CE0 30 [000-00030] 1 8966270 UOW-Executing 107 1 107 1 *LOCAL.db2inst1.051215214013
마지막으로, 이전 출력의 정보를 db2pd -dyn 명령을 실행하여 확보한 동적 SQL 출력에 맵핑할 수 있습니다.
Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x0780000020B296C0 107 1 1 1 43 43 select c1, c2 from test group by c1,c2
예 8: 복구 모니터링
db2pd -recovery 명령을 실행하는 경우, 다음 샘플 출력에 표시된 대로 출력은 복구가 진행 중임을 검증하는 데 사용할 수 있는 몇 개의 카운터를 표시합니다. Current Log 및 Current LSN 값은 로그 위치 지정을 제공합니다. CompletedWork 값은 지금까지 완료된 바이트 수입니다.
Recovery:
Recovery Status 0x00000401
Current Log S0000005.LOG
Current LSN 000002551BEA
Job Type ROLLFORWARD RECOVERY
Job ID 7
Job Start Time (1107380474) Wed Feb 2 16:41:14 2005
Job Description Database Rollforward Recovery
Invoker Type User
Total Phases 2
Current Phase 1
Progress:
Address PhaseNum Description StartTime CompletedWork TotalWork
0x0000000200667160 1 Forward Wed Feb 2 16:41:14 2005 2268098 bytes Unknown
0x0000000200667258 2 Backward NotStarted 0 bytes Unknown
예 9: 트랜잭션이 사용 중인 자원 양 판별
db2pd -transactions 명령을 실행하는 경우, 다음 샘플 출력에 표시된 대로 출력은 잠금 수, 첫 번째 로그 시퀀스 번호(LSN), 마지막 LSN, 사용한 로그 스페이스, 예약된 스페이스를 표시합니다. 이는 트랜잭션 동작을 이해하는 데 유용할 수 있습니다.
Transactions:
Address AppHandl [nod-index] TranHdl Locks State Tflag
0x000000022026D980 797 [000-00797] 2 108 WRITE 0x00000000
0x000000022026E600 806 [000-00806] 3 157 WRITE 0x00000000
0x000000022026F280 807 [000-00807] 4 90 WRITE 0x00000000
Tflag2 Firstlsn Lastlsn LogSpace SpaceReserved
0x00000000 0x000001072262 0x0000010B2C8C 4518 95450
0x00000000 0x000001057574 0x0000010B3340 6576 139670
0x00000000 0x00000107CF0C 0x0000010B2FDE 3762 79266
TID AxRegCnt GXID
0x000000000451 1 0
0x0000000003E0 1 0
0x000000000472 1 0
예 10: 로그 사용 모니터링
db2pd -logs 명령은 데이터베이스에 대한 로그 사용 모니터링에 유용합니다. 다음 샘플 출력에 표시된 대로 Pages Written 값을 사용하여 로그 사용이 증가하고 있는지 여부를 판별할 수 있습니다.
Logs:
Current Log Number 0
Pages Written 0
Cur Commit Disk Log Reads 0
Cur Commit Total Log Reads 0
Method 1 Archive Status n/a
Method 1 Next Log to Archive n/a
Method 1 First Failure n/a
Method 2 Archive Status n/a
Method 2 Next Log to Archive n/a
Method 2 First Failure n/a
Log Chain ID 0
Current LSN 0x0000000001F40010
Address StartLSN State Size Pages Filename
0x00002B75E9E3D2D0 0000000001F40010 0x00000000 1000 1000 S0000000.LOG
0x00002B75E9E53D70 0000000002328010 0x00000000 1000 1000 S0000001.LOG
0x00002B75E9E545D0 0000000002710010 0x00000000 1000 1000 S0000002.LOG
- 가장 최근의 로그 아카이브가 실패하면, Archive Status가 Failure 값으로 설정됩니다. 진행 중인 아카이브 실패가 있고 로그가 전혀 아카이브되지 않는다면, Archive Status가 First Failure 값으로 설정됩니다.
- 로그 아카이브가 아주 느린 속도로 진행되는 경우, Next Log to Archive 값이 Current Log Number 값보다 작습니다. 아카이브 속도가 아주 느린 경우, 사용 중인 로그 스페이스가 부족할 수 있으며 이로 인해 데이터 변경이 데이터베이스에서 발생하지 못할 수 있습니다.
예 11: Sysplex 목록 보기
db2pd -sysplex 명령이 다음 샘플 출력을 표시하지 않는 경우, sysplex 목록을 보고하는 다른 유일한 방법은 DB2 추적을 사용하는 것입니다.
Sysplex List:
Alias: HOST
Location Name: HOST1
Count: 1
IP Address Port Priority Connections Status PRDID
1.2.34.56 400 1 0 0
예 12: 스택 추적 작성
Windows 운영 체제의 경우 db2pd -stack all 명령을, 또는 UNIX 운영 체제의 경우 -stack 명령을 사용하여 현재 데이터베이스 파티션의 모든 프로세스에 대한 스택 추적을 생성할 수 있습니다. 프로세스 또는 스레드가 루프 또는 정지 중이라고 예측되는 경우에는 이 명령을 반복적으로 사용할 수 있습니다.
다음 예에 표시된 대로 db2pd -stack eduid 명령을 실행하여 특정 엔진 디스패치 가능 단위(EDU)에 대한 현재 모든 스택을 확보할 수 있습니다.
Attempting to dump stack trace for eduid 137.
See current DIAGPATH for trapfile.
예를 들어, 모든 DB2 프로세스에 대한 호출 스택을 원할 경우 Windows 운영 체제에서는 db2pd -stack all 명령을 사용하십시오.
Attempting to dump all stack traces for instance.
See current DIAGPATH for trapfiles.
실제 노드가 여러 개인 파티션된 데이터베이스 환경을 사용 중인 경우, db2_all "; db2pd -stack all" 명령을 사용하여 모든 파티션에서 정보를 얻을 수 있습니다. 그러나 파티션이 동일한 시스템에서 모두 논리적 파티션인 경우, 보다 빠른 방법은 db2pd -alldbp -stacks를 사용하는 것입니다.
dumpdir 매개변수를 사용하여 특정 디렉토리 경로로 db2pdb -stacks 명령 출력 경로를 재지정하고 timeout 매개변수를 사용하여 특정 지속기간 동안만 출력 경로를 재지정할 수도 있습니다. 예를 들어, 모든 프로세스에 대한 스택 추적 출력의 경로를 30초 동안 /home/waleed/mydir로 재지정하려면 다음 명령을 실행하십시오.
db2pd -alldbp -stack all dumpdir=/home/waleed/mydir timeout=30
예 13: 데이터베이스 파티션에 대한 메모리 통계 보기
db2pd -dbptnmem 명령은 DB2 서버가 현재 사용 중인 메모리 양과 상위 레벨에서 해당 메모리를 사용 중인 서버 영역을 표시합니다.
다음은 AIX® 시스템에서 db2pd -dbptnmem 실행으로 인한 출력 예입니다.
Database Partition Memory Controller Statistics
Controller Automatic: Y
Memory Limit: 122931408KB
Current usage: 651008KB
HWM usage: 651008KB
Cached memory: 231296KB
- Controller Automatic
- 메모리 제어기 설정을 표시합니다. instance_memory 구성 매개변수가 AUTOMATIC으로 설정된 경우 "Y" 값을 표시합니다. 이는 데이터베이스 관리자가 메모리 소비 상한값을 자동으로 판별함을 의미합니다.
- Memory Limit
- 인스턴스 메모리 한계가 강제 실행되는 경우, instance_memory 구성 매개변수의 값은 사용할 수 있는 DB2 서버의 상한값입니다.
- Current usage
- 서버가 현재 소비하고 있는 메모리의 양입니다.
- HWM usage
- db2start 명령이 실행될 때 데이터베이스 파티션이 활성화된 이후로 소비된 상위 워터 마크(HWM) 또는 최대 메모리 사용량입니다.
- Cached memory
- 현재 사용되고 있지 않지만 향후 메모리 요청을 위해 성능상의 이유로 캐시된 현재 사용 양입니다.
다음은 AIX 운영 체제에서 db2pd -dbptnmem 실행으로 인한 샘플 출력의 연속입니다.
Individual Memory Consumers:
Name Mem Used (KB) HWM Used (KB) Cached (KB)
===========================================================
APPL-DBONE 160000 160000 159616
DBMS-name 38528 38528 3776
FMP_RESOURCES 22528 22528 0
PRIVATE 13120 13120 740
FCM_RESOURCES 10048 10048 0
LCL-p606416 128 128 0
DB-DBONE 406656 406656 67200
- 이름
- 메모리 소비자의 짧은 식별 이름. 예를 들면, 다음과 같습니다.
- APPL-dbname
- dbname 데이터베이스용으로 소비된 응용프로그램 메모리
- DBMS-name
- 전역 데이터베이스 관리자 메모리 요구사항
- FMP_RESOURCES
- db2fmps와 통신하는 데 필요한 메모리
- PRIVATE
- 기타 전용 메모리 요구사항
- FCM_RESOURCES
- FCM(Fast Communication Manager) 자원
- LCL-pid
- 로컬 응용프로그램과 통신하는 데 사용된 메모리 세그먼트
- DB-dbname
- dbname 데이터베이스용으로 소비된 데이터베이스 메모리
- Mem Used (KB)
- 소비자에게 현재 할당된 메모리 양
- HWM Used (KB)
- 소비자가 사용한 메모리의 상위 워터 마크(HWM) 또는 최대 메모리
- Cached (KB)
- Mem Used (KB) 중에서, 현재 사용되고 있지 않지만 향후 메모리 할당에 즉시 사용할 수 있는 메모리 양
예 14: 인덱스 재구성 진행 모니터링
- db2pd -reorgs index 명령은 파티션된 인덱스에 대한 인덱스 Reorg 진행을 보고합니다(파티션되지 않은 인덱스에 대한 지원이 도입된 수정팩 1).
- db2pd -reorgs index 명령은 파티션 레벨에서 인덱스 Reorg의 모니터링을 지원합니다(즉, 단일 파티션을 재구성하는 동안).
- 파티션되지 않은 인덱스 및 파티션된 인덱스에 대한 Reorg 진행이 별도의 출력으로 보고됩니다. 하나의 출력에 파티션되지 않은 인덱스에 대한 Reorg 진행이 표시되고 다음 출력에 각 테이블 파티션의 파티션된 인덱스에 대한 Reorg 진행이 표시되며, 각 출력에 하나의 파티션에 대한 인덱스 Reorg 통계만 보고됩니다.
- 파티션되지 않은 인덱스가 먼저 처리된 후 파티션된 인덱스가 순차적으로 처리됩니다.
- db2pd -reorgs index 명령은 출력에 파티션된 인덱스에 대한 다음과 같은 추가 정보 필드를 표시합니다.
- MaxPartition - 처리되는 테이블에 대한 총 파티션 수입니다. 파티션 레벨 Reorg의 경우 단일 파티션만 재구성되므로MaxPartition에 항상 1 값이 사용됩니다.
- PartitionID - 처리되는 파티션에 대한 데이터 파티션 ID입니다.
Index Reorg Stats:
Retrieval Time: 02/08/2010 23:04:21
TbspaceID: -6 TableID: -32768
Schema: ZORAN TableName: BIGRPT
Access: Allow none
Status: Completed
Start Time: 02/08/2010 23:03:55 End Time: 02/08/2010 23:04:04
Total Duration: 00:00:08
Prev Index Duration: -
Cur Index Start: -
Cur Index: 0 Max Index: 2 Index ID: 0
Cur Phase: 0 ( - ) Max Phase: 0
Cur Count: 0 Max Count: 0
Total Row Count: 750000
Retrieval Time: 02/08/2010 23:04:21
TbspaceID: 2 TableID: 5
Schema: ZORAN TableName: BIGRPT
PartitionID: 0 MaxPartition: 2
Access: Allow none
Status: Completed
Start Time: 02/08/2010 23:04:04 End Time: 02/08/2010 23:04:08
Total Duration: 00:00:04
Prev Index Duration: -
Cur Index Start: -
Cur Index: 0 Max Index: 2 Index ID: 0
Cur Phase: 0 ( - ) Max Phase: 0
Cur Count: 0 Max Count: 0
Total Row Count: 375000
Retrieval Time: 02/08/2010 23:04:21
TbspaceID: 2 TableID: 6
Schema: ZORAN TableName: BIGRPT
PartitionID: 1 MaxPartition: 2
Access: Allow none
Status: Completed
Start Time: 02/08/2010 23:04:08 End Time: 02/08/2010 23:04:12
Total Duration: 00:00:04
Prev Index Duration: -
Cur Index Start: -
Cur Index: 0 Max Index: 2 Index ID: 0
Cur Phase: 0 ( - ) Max Phase: 0
Cur Count: 0 Max Count: 0
Total Row Count: 375000
예 15: 프로세서 시간 소모별 상위 EDU 표시 및 EDU 스택 정보 표시
-edus 매개변수 옵션을 사용하여 db2pd 명령을 실행하는 경우 출력에는 모든 EDU(Engine Dispatchable Unit)가 나열됩니다. EDU 출력은 인스턴스 레벨 또는 멤버 레벨과 같이 사용자가 지정하는 단위 레벨로 리턴될 수 있습니다. Linux 및 UNIX 운영 체제에 한하여 모든 EDU의 두 스냅샷이 사용자가 지정한 간격으로 분리되어 작성되도록 interval 매개변수 서브옵션을 지정할 수도 있습니다. interval 매개변수를 지정하는 경우 출력에 있는 2개의 추가 컬럼은 간격에 따라 프로세서 사용자 시간의 델타(USR DELTA 컬럼)와 프로세서 시스템 시간의 델타(SYS DELTA 컬럼)를 표시합니다.
다음 예에서는 5초 간격에 따라 프로세서 사용자 시간과 프로세서 시스템 시간의 델타가 제공됩니다.
$ db2pd -edus interval=5
Database Partition 0 -- Active -- Up 0 days 00:53:29 -- Date 06/04/2010 03:34:59
List of all EDUs for database partition 0
db2sysc PID: 1249522
db2wdog PID: 2068678
EDU ID TID Kernel TID EDU Name USR SYS USR DELTA SYS DELTA
=============================================================================================================================
6957 6957 13889683 db2agntdp (SAMPLE ) 0 58.238506 0.820466 1.160726 0.014721
6700 6700 11542589 db2agent (SAMPLE) 0 52.856696 0.754420 1.114821 0.015007
5675 5675 4559055 db2agntdp (SAMPLE ) 0 60.386779 0.854234 0.609233 0.014304
3088 3088 13951225 db2agntdp (SAMPLE ) 0 80.073489 2.249843 0.499766 0.006247
3615 3615 2887875 db2loggw (SAMPLE) 0 0.939891 0.410493 0.011694 0.004204
4900 4900 6344925 db2pfchr (SAMPLE) 0 1.748413 0.014378 0.014343 0.000103
7986 7986 13701145 db2agntdp (SAMPLE ) 0 1.410225 0.025900 0.003636 0.000074
2571 2571 8503329 db2ipccm 0 0.251349 0.083787 0.002551 0.000857
7729 7729 14168193 db2agntdp (SAMPLE ) 0 1.717323 0.029477 0.000998 0.000038
7472 7472 11853991 db2agnta (SAMPLE) 0 1.860115 0.032926 0.000860 0.000012
3358 3358 2347127 db2loggr (SAMPLE) 0 0.151042 0.184726 0.000387 0.000458
515 515 13820091 db2aiothr 0 0.405538 0.312007 0.000189 0.000178
7215 7215 2539753 db2agntdp (SAMPLE ) 0 1.165350 0.019466 0.000291 0.000008
6185 6185 2322517 db2wlmd (SAMPLE) 0 0.061674 0.034093 0.000169 0.000100
6442 6442 2756793 db2evmli (DB2DETAILDEADLOCK) 0 0.072142 0.052436 0.000092 0.000063
4129 4129 15900799 db2glock (SAMPLE) 0 0.013239 0.000741 0.000064 0.000001
2 2 11739383 db2alarm 0 0.036904 0.028367 0.000009 0.000009
4386 4386 13361367 db2dlock (SAMPLE) 0 0.015653 0.001281 0.000014 0.000003
1029 1029 15040579 db2fcms 0 0.041929 0.016598 0.000010 0.000004
5414 5414 14471309 db2pfchr (SAMPLE) 0 0.000093 0.000002 0.000000 0.000000
258 258 13656311 db2sysc 0 8.369967 0.263539 0.000000 0.000000
5157 5157 7934145 db2pfchr (SAMPLE) 0 0.027598 0.000177 0.000000 0.000000
1543 1543 2670647 db2fcmr 0 0.004191 0.000079 0.000000 0.000000
1286 1286 8417339 db2extev 0 0.000312 0.000043 0.000000 0.000000
2314 2314 14360813 db2licc 0 0.000371 0.000051 0.000000 0.000000
5928 5928 3137537 db2taskd (SAMPLE) 0 0.004903 0.000572 0.000000 0.000000
3872 3872 2310357 db2lfr (SAMPLE) 0 0.000126 0.000007 0.000000 0.000000
4643 4643 11694287 db2pclnr (SAMPLE) 0 0.000094 0.000002 0.000000 0.000000
1800 1800 5800175 db2extev 0 0.001212 0.002137 0.000000 0.000000
772 772 7925817 db2thcln 0 0.000429 0.000072 0.000000 0.000000
2057 2057 6868993 db2pdbc 0 0.002423 0.001603 0.000000 0.000000
2828 2828 10866809 db2resync 0 0.016764 0.003098 0.000000 0.000000
상위 프로세서 시간 소비자에 해당하는 EDU 관련 정보만 제공하고 리턴되는 출력의 양을 줄이려면 top 매개변수 옵션을 추가로 포함할 수 있습니다. 다음 예에서는 5초 간격에 따라 상위 5대 EDU만 리턴합니다. 스택 정보도 리턴되며 DUMPDIR(기본적으로 diagpath로 설정됨)에 지정된 디렉토리 경로에 별도로 저장되어 있음을 확인할 수 있습니다.
$ db2pd -edus interval=5 top=5 stacks
Database Partition 0 -- Active -- Up 0 days 00:54:00 -- Date 06/04/2010 03:35:30
List of all EDUs for database partition 0
db2sysc PID: 1249522
db2wdog PID: 2068678
EDU ID TID Kernel TID EDU Name USR SYS USR DELTA SYS DELTA
===============================================================================================================
3358 3358 2347127 db2loggr (SAMPLE) 0 0.154906 0.189223 0.001087 0.001363
3615 3615 2887875 db2loggw (SAMPLE) 0 0.962744 0.419617 0.001779 0.000481
515 515 13820091 db2aiothr 0 0.408039 0.314045 0.000658 0.000543
258 258 13656311 db2sysc 0 8.371388 0.264812 0.000653 0.000474
6700 6700 11542589 db2agent (SAMPLE) 0 54.814420 0.783323 0.000455 0.000310
$ ls -ltr
total 552
drwxrwxr-t 2 vbmithun build 256 05-31 09:59 events/
drwxrwxr-t 2 vbmithun build 256 06-04 03:17 stmmlog/
-rw-r--r-- 1 vbmithun build 46413 06-04 03:35 1249522.3358.000.stack.txt
-rw-r--r-- 1 vbmithun build 22819 06-04 03:35 1249522.3615.000.stack.txt
-rw-r--r-- 1 vbmithun build 20387 06-04 03:35 1249522.515.000.stack.txt
-rw-r--r-- 1 vbmithun build 50426 06-04 03:35 1249522.258.000.stack.txt
-rw-r--r-- 1 vbmithun build 314596 06-04 03:35 1249522.6700.000.stack.txt
-rw-r--r-- 1 vbmithun build 94913 06-04 03:35 1249522.000.processObj.txt
예 16: 에이전트 이벤트 메트릭 표시
db2pd 명령이 에이전트의 이벤트 메트릭 리턴을 지원합니다. 특정한 기간 동안 에이전트가 상태를 변경했는지 여부를 판별해야 하는 경우, event 옵션을 -agents 매개변수와 함께 사용하십시오. 리턴된 AGENT_STATE_LAST_UPDATE_TIME(틱 값) 컬럼에서는 에이전트에서 처리되는 이벤트가 변경된 마지막 시간을 보여줍니다. AGENT_STATE_LAST_UPDATE_TIME(틱 값)에 대해 이전에 가져온 값을 통해, 에이전트가 새 태스크로 이동했는지 여부나 확장된 기간 동안 동일한 태스크를 계속해서 처리하는지 여부를 판별할 수 있습니다.
db2pd –agents event
Database Partition 0 -- Active -- Up 0 days 03:18:52 -- Date 06/27/2011 11:47:10
Agents:
Current agents: 12
Idle agents: 0
Active coord agents: 10
Active agents total: 10
Pooled coord agents: 2
Pooled agents total: 2
AGENT_STATE_LAST_UPDATE_TIME(Tick Value) EVENT_STATE EVENT_TYPE EVENT_OBJECT EVENT_OBJECT_NAME
2011-06-27-14.44.38.859785(5622972377924968075) IDLE WAIT REQUEST n/a
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.trb.doc/doc/c0054595.html
'Db2 > Db2 reference' 카테고리의 다른 글
아카이브 로그 관리 (0) | 2012.08.24 |
---|---|
Restoring a table space level backup with redirect (0) | 2012.08.12 |
Kernel parameter tuning on HP-UX, Oracle Solaris and Linux (0) | 2012.07.21 |
사용자의 DB접속을 막는 4가지 방법 (0) | 2012.07.21 |
DB2 ODBC CLI driver Installation (0) | 2012.07.04 |