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에 대해 이벤트 모니터가 데이터를 기록하는 목표에 대한 정보와 통계를
리턴합니다.
다음은 db2pd 명령을
사용하여 문제점 해결을 촉진할 수 있는 예 콜렉션입니다.
db2pd -db databasename -locks
-transactions -applications -dynamic을
실행하는 경우, 결과는 다음과 유사합니다.
Locks:Address TranHdl Lockname
Type Mode Sts Owner Dur
HldCnt Att
ReleaseFlg0x07800000202E5238 3
00020002000000040000000052
Row ..X
G 3 1
0 0x0000
0x400000000x07800000202E4668 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 GXID0x0780000020251B80
11
[000-00011] 2 4 READ
0x00000000 0x00000000 0x000000000000 0x000000000000 0 0 0x0000000000B7 1 00x0780000020252900 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
Appid0x07800000006879E0 12
[000-00012] 1 1073336
UOW-Waiting 0 0 17 1
*LOCAL.burford.0603032256020x0780000000685E80 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
Text0x07800000209FD800 17
1 1 1
2 2 update pdtest set c1 =
50x07800000209FCCC0 94 1 1
1 2 2
set lock mode to wait
1
|
텍스트 컬럼이 잠금 시간종료와 연관된
SQL문을 표시함을 알 수 있습니다.
예제
2: -wlocks 매개변수를 사용하여 대기 중인 잠금 모두 캡처
db2pd -wlocks -db pdtest를 실행하는 경우, 다음과 유사한 결과가
생성됩니다. 첫 번째 응용프로그램(AppHandl 47)은
테이블에서 삽입을 수행 중이고 두 번째 응용프로그램(AppHandl 46)은 해당 테이블에서 선택을
수행 중임을 표시합니다.
venus@boson:/home/venus
=>db2pd -wlocks -db pdtestDatabase Partition 0 -- Database PDTEST -- Active
-- Up 0 days 00:01:22Locks being waited on :AppHandl [nod-index] TranHdl Lockname Type Mode Conv Sts CoorEDU AppName
AuthID AppID47 [000-00047] 8 00020004000000000840000652 Row ..X
G 5160 db2bp
VENUS
*LOCAL.venus.07120721373046
[000-00046] 2
00020004000000000840000652 Row
.NS W 5913
db2bp VENUS
*LOCAL.venus.071207213658
|
예제
3: -apinfo 매개변수를 사용하여 잠금 소유자 및 잠금 대기자에 대한 자세한 런타임
정보 캡처
예 2와 동일한 조건에서
다음 샘플 출력이 생성되었습니다.
venus@boson:/home/venus
=>db2pd -apinfo 47 -db pdtestDatabase Partition 0 -- Database PDTEST --
Active -- Up 0 days 00:01:30Application :
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
99venus@boson:/home/venus
=>db2pd -apinfo 46 -db pdtestDatabase Partition 0 -- Database PDTEST --
Active -- Up 0 days 00:01:39Application :
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: 잠금 문제점 고려 시 콜라웃 스크립트 사용
콜아웃 스크립트를 사용하려면
db2cos 출력 파일을 찾으십시오. 데이터베이스 관리 프로그램 구성 매개변수 diagpath가 파일 위치를 제어합니다. 출력 파일의
컨텐츠는 db2cos 스크립트 파일에 입력하는 명령에 따라 다릅니다.
db2cos 스크립트 파일에 db2pd -db sample -locks 명령이 포함된
경우 제공된 출력 예는 다음과 같습니다.
Lock Timeout CaughtThu Feb
17 01:40:04 EST 2006Instance DB2Datbase: SAMPLEPartition Number: 0PID: 940TID:
2136Function: sqlplnfdComponent: lock managerProbe: 999Timestamp:
2006-02-17-01.40.04.106000AppID: *LOCAL.DB2...AppHdl:...Database Partition 0 --
Database SAMPLE -- Active -- Up 0 days 00:06:53Locks:Address TranHdl Lockname Type Mode Sts Owner Dur
HldCnt Att Rlse0x402C6B30 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
Status0x00000002006D2120 780
[000-00780] 1 10615 UOW-ExecutingC-AnchID C-StmtUID L-AnchID L-StmtUID Appid163
1 110 1 *LOCAL.burford.050202200412Dynamic
SQL Statements:Address AnchID
StmtUID NumEnv NumVar NumRef NumExe Text0x0000000220A02760 163 1
2 2 2
1 CREATE VIEW
MYVIEW0x0000000220A0B460 110 1 2
2 2 1
CREATE VIEW
YOURVIEW
|
다음 샘플 출력에 표시된 대로 메모리 사용을 이해하려면 db2pd -memblock 명령이 유용할 수 있습니다.
All memory
blocks in DBMS set.Address
PoolID PoolName BlockAge
Size(Bytes) I LOC
File0x0780000000740068 62
resynch 2 112 1 1746 15838164850x0780000000725688 62 resynch 1
108864 1 127 15991273460x07800000001F4348 57 ostrack 6
5160048 1 3047 6981307160x07800000001B5608 57 ostrack 5
240048 1 3034 6981307160x07800000001A0068 57 ostrack 1
80 1 2970 6981307160x07800000001A00E8 57 ostrack 2
240 1 2983 6981307160x07800000001A0208 57 ostrack 3
80 1 2999 6981307160x07800000001A0288 57 ostrack 4
80 1 3009 6981307160x0780000000700068 70 apmh 1 360 1 1024 38788790320x07800000007001E8 70 apmh 2 48 1 914 19376741390x0780000000700248 70 apmh 3
32 1 1000
1937674139...
|
이 다음에는 정렬된
'풀별' 출력이 옵니다.
Memory blocks sorted by
size for ostrack pool:PoolID
PoolName TotalSize(Bytes) TotalCount LOC File57 ostrack 5160048 1 3047
69813071657 ostrack 240048 1 3034
69813071657 ostrack 240 1 2983
69813071657 ostrack 80 1 2999
69813071657 ostrack 80 1 2970
69813071657 ostrack 80
1 3009
698130716Total size for ostrack pool: 5400576 bytesMemory blocks sorted
by size for apmh pool:PoolID
PoolName TotalSize(Bytes) TotalCount LOC File70 apmh 40200 2 121
298629823670 apmh 10016 1 308
158682988970 apmh 6096 2 4014
131247349070 apmh 2516 1 294
158682988970 apmh 496 1 2192
195379343970 apmh 360 1 1024
387887903270 apmh 176 1 1608
195379343970 apmh 152 1 2623
158381648570 apmh 48 1 914
193767413970 apmh 32 1 1000
1937674139Total size for apmh pool: 60092
bytes...
|
출력의 최종 섹션은 전체 메모리 세트에 대해 메모리 소비자를
정렬합니다.
All memory consumers in
DBMS memory set:PoolID PoolName TotalSize(Bytes) %Bytes TotalCount %Count LOC File57 ostrack 5160048 71.90 1
0.07 3047 69813071650 sqlch 778496 10.85 1
0.07 202 257646755550 sqlch 271784 3.79 1
0.07 260 257646755557 ostrack 240048 3.34 1
0.07 3034 69813071650 sqlch 144464 2.01 1
0.07 217 257646755562 resynch 108864
1.52 1
0.07 127 159912734672 eduah 108048 1.51 1
0.07 174 421008159269 krcbh 73640 1.03 5
0.36 547 421008159250 sqlch 43752 0.61
1 0.07 274
257646755570 apmh 40200 0.56 2
0.14 121 298629823669 krcbh 32992 0.46 1
0.07 838 69813071650 sqlch 31000 0.43
31 2.20 633
396622453750 sqlch 25456 0.35 31
2.20 930 396622453752 kerh 15376 0.21 1
0.07 157 119335276350 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
42839930580x0000000110469A48 88
private 2 1608 1 172
42839930580x000000011046A0A8 88
private 3 4928 1 172
42839930580x000000011046B408 88
private 4
7336 1 172 42839930580x000000011046D0C8 88 private 5 32 1 172 42839930580x000000011046D108 88 private 6 6728 1 172
42839930580x000000011046EB68 88
private 7 168 1 172 42839930580x000000011046EC28 88 private 8 24 1 172 42839930580x000000011046EC68 88 private 9 408 1 172 42839930580x000000011046EE28 88 private 10
1072 1 172
42839930580x000000011046F288 88
private 11 3464 1 172
42839930580x0000000110470028 88
private 12 80 1 172 42839930580x00000001104700A8 88 private 13
480 1 1534 862348285 0x00000001104702A8 88 private 14 480 1 1939 862348285 0x0000000110499FA8 88 private 80 65551 1 1779
4231792244Total set size: 94847 bytesMemory blocks sorted by
size:PoolID PoolName TotalSize(Bytes) TotalCount LOC File
88 private 65551 1 1779
423179224488 private 28336 12 172
428399305888 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 XMLSize0x0780000020B62AB0 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
Name0x0780000020B1B5A0 DMS UsrTmp 4096
32 Yes 32
1 1 On
1 0 31 TEMPSPACE2Tablespace 3
Statistics:Address
TotalPgs UsablePgs UsedPgs
PndFreePgs FreePgs
HWM State MinRecTime NQuiescers0x0780000020B1B5A0
5000 4960 1088 0 3872 1088 0x00000000 0 0 Tablespace 3 Autoresize
Statistics:Address AS AR
InitSize IncSize IIP MaxSize LastResize LRF0x0780000020B1B5A0 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:06Dynamic Cache:Current Memory
Used 1022197Total Heap
Size 1271398Cache Overflow
Flag 0Number of References 237Number of Statement Inserts 32Number of Statement Deletes 13Number of Variation Inserts 21Number of Statements 19Dynamic SQL Statements:Address AnchID StmtUID NumEnv
NumVar NumRef NumExe
Text0x0000000220A08C40 78
1 2 2
3 2 declare global temporary table temp1 (c1
char(6)) not logged0x0000000220A8D960 253 1
1 1 24
24 insert into session.temp1
values('TEST')
|
마지막으로, db2pd -db
sample -app를 실행하여 이전 출력의 정보를 응용프로그램 출력에 맵핑하여 응용프로그램을 식별할 수 있습니다.
Applications:Address AppHandl [nod-index] NumAgents CoorPid Status0x0000000200661840
501 [000-00501] 1 11246 UOW-WaitingC-AnchID C-StmtUID L-AnchID L-StmtUID Appid0
0 253 1
*LOCAL.db2inst1.050202160426
|
동적 SQL문을 식별한
앵커 ID(AnchID) 값을 사용하여 연관된 응용프로그램을 식별할 수 있습니다. 결과는 마지막 앵커 ID(L-AnchID) 값이 앵커 ID(AnchID) 값과 동일함을 표시합니다. 다음 번에 db2pd를 실행할 때 db2pd 실행 결과를 사용하십시오.
db2pd -agent 출력은 응용프로그램이 읽은 행 수를 Rowsread
컬럼에, 기록한 행 수를 Rowswrtn
컬럼에 표시합니다. 다음 샘플 출력에 표시된 대로 이러한 값을 통해 응용프로그램이 완료한
것과 응용프로그램이 여전히 완료해야 하는 것을 알 수 있습니다.
Address AppHandl [nod-index]
AgentPid Priority Type
DBName0x0000000200698080 501
[000-00501] 11246
0 Coord SAMPLEState ClientPid Userid
ClientNm Rowsread
Rowswrtn
LkTmOtInst-Active 26377
db2inst1 db2bp 22 9588
NotSet
|
db2pd -agent 명령 실행으로 생기는 AppHandl 및 AgentPid 값을 db2pd -app 명령 실행으로 생기는
해당 AppHandl 및 CoorPiid 값에 맵핑할 수
있습니다.
내부 임시 테이블이 테이블 스페이스를 채우고 있다고 예측되는 경우에는
단계가 약간 다릅니다. 그러나 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 Name0x07800000203FB5A0
1 SMS SysTmp
4096 32 Yes 320
1 1 On
10 0 31 TEMPSPACE1Tablespace
Statistics:Address Id TotalPgs
UsablePgs UsedPgs PndFreePgs FreePgs HWM
State MinRecTime
NQuiescers0x07800000203FB5A0 1
6516 6516 6516
0 0 0 0x00000000 0 0Tablespace Autoresize
Statistics:Address Id AS
AR InitSize IncSize
IIP MaxSize LastResize LRF0x07800000203FB5A0 1 No
No 0 0 No
0 None
NoContainers:...
|
-tcbstats 출력에서 응용프로그램 핸들 30 및 31을 보았으므로 db2pd -app 명령을 사용하여 이를 식별할
수 있습니다.
Applications:Address AppHandl [nod-index] NumAgents CoorPid
Status C-AnchID
C-StmtUID L-AnchID L-StmtUID
Appid0x07800000006FB880 31
[000-00031] 1
4784182 UOW-Waiting 0
0 107 1
*LOCAL.db2inst1.0512152141420x07800000006F9CE0 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 Text0x0780000020B296C0 107 1
1 1 43 43 select c1, c2 from test group by
c1,c2
|
db2pd -recovery 명령을 실행하는 경우, 다음 샘플 출력에 표시된
대로 출력은 복구가 진행 중임을 검증하는 데 사용할 수 있는 몇 개의 카운터를 표시합니다. Current Log
및 Current LSN 값은 로그 위치 지정을 제공합니다. CompletedWork 값은 지금까지 완료된 바이트 수입니다.
Recovery:Recovery
Status 0x00000401Current Log S0000005.LOGCurrent LSN 000002551BEAJob Type ROLLFORWARD RECOVERYJob ID 7Job Start Time (1107380474) Wed Feb 2 16:41:14 2005Job Description Database Rollforward RecoveryInvoker Type
UserTotal Phases 2Current Phase 1Progress:Address PhaseNum Description StartTime CompletedWork TotalWork0x0000000200667160 1 Forward Wed Feb
2 16:41:14 2005 2268098 bytes
Unknown0x0000000200667258 2
Backward NotStarted 0 bytes
Unknown
|
예제
9: 트랜잭션이 사용 중인 자원 양 판별
db2pd -transactions 명령을 실행하는 경우, 다음 샘플 출력에 표시된
대로 출력은 잠금 수, 첫 번째 로그 시퀀스 번호(LSN),
마지막 LSN, 사용한 로그 스페이스, 예약된
스페이스를 표시합니다. 이는 트랜잭션 동작을 이해하는 데 유용할 수 있습니다.
Transactions:Address AppHandl [nod-index] TranHdl Locks
State Tflag0x000000022026D980
797 [000-00797] 2 108
WRITE
0x000000000x000000022026E600 806
[000-00806] 3 157 WRITE
0x000000000x000000022026F280 807
[000-00807] 4 90 WRITE
0x00000000Tflag2 Firstlsn Lastlsn LogSpace SpaceReserved0x00000000 0x000001072262
0x0000010B2C8C 4518 954500x00000000
0x000001057574 0x0000010B3340 6576
1396700x00000000 0x00000107CF0C 0x0000010B2FDE 3762 79266TID AxRegCnt GXID0x000000000451 1 00x0000000003E0 1 00x000000000472 1
0
|
db2pd -logs 명령은 데이터베이스에 대한 로그 사용 모니터링에 유용합니다.
다음 샘플 출력에 표시된 대로 Pages Written 값을 사용하여 로그 사용이
증가하고 있는지 여부를 판별할 수 있습니다.
Logs:Current Log
Number 0Pages Written 0Cur Commit Disk Log
Reads 0Cur Commit Total Log
Reads 0Method 1 Archive Status n/aMethod 1 Next Log to Archive n/aMethod 1 First Failure n/aMethod 2 Archive Status n/aMethod 2 Next Log to Archive n/aMethod 2 First Failure n/aLog Chain ID 0Current LSN
0x0000000001F40010Address
StartLSN State Size
Pages Filename0x00002B75E9E3D2D0
0000000001F40010 0x00000000 1000
1000
S0000000.LOG0x00002B75E9E53D70 0000000002328010 0x00000000 1000 1000
S0000001.LOG0x00002B75E9E545D0 0000000002710010 0x00000000 1000 1000
S0000002.LOG
|
이 출력을 사용하여 다음 두 가지 유형의 문제점을 식별할 수
있습니다.
- 가장 최근의 로그 아카이브가
실패하면, Archive Status가 Failure
값으로 설정됩니다. 진행 중인 아카이브 실패가 있고 로그가 전혀 아카이브되지
않는다면, Archive Status가 First Failure
값으로 설정됩니다.
- 로그 아카이브가 아주 느린
속도로 진행되는 경우, Next Log to Archive 값이
Current Log Number 값보다 작습니다. 아카이브 속도가 아주 느린
경우, 사용 중인 로그 스페이스가 부족할 수 있으며 이로 인해 데이터 변경이 데이터베이스에서 발생하지
못할 수 있습니다.
db2pd -sysplex 명령이 다음 샘플 출력을 표시하지 않는 경우, sysplex
목록을 보고하는 다른 유일한 방법은 DB2 추적을 사용하는 것입니다.
Sysplex List:Alias: HOSTLocation Name: HOST1Count: 1IP Address Port Priority Connections Status PRDID 1.2.34.56 400 1 0
0
|
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를
사용하는 것입니다.
예제
13: 데이터베이스 파티션에 대한 메모리 통계 보기
db2pd -dbptnmem 명령은 DB2 서버가 현재 사용 중인 메모리 양과
상위 레벨에서 해당 메모리를 사용 중인 서버 영역을 표시합니다.
다음은 AIX®
시스템에서 db2pd -dbptnmem 실행으로 인한 출력 예입니다.
Database Partition Memory
Controller StatisticsController Automatic: YMemory Limit: 122931408KBCurrent usage: 651008KBHWM usage: 651008KBCached memory:
231296KB
|
이러한 데이터 필드 및 컬럼에 대한 설명은 다음과 같습니다.
메모리 제어기 설정을 표시합니다.
instance_memory 구성 매개변수가 AUTOMATIC으로 설정된 경우 "Y" 값을 표시합니다. 이는 데이터베이스 관리 프로그램이 메모리
소비 상한값을 자동으로 판별함을 의미합니다.
인스턴스 메모리 한계가 강제 실행되는 경우, instance_memory 구성 매개변수의 값은 사용할 수 있는 DB2
서버의 상한값입니다.
서버가 현재 소비하고 있는 메모리의 양입니다.
db2start 명령이 실행될 때 데이터베이스 파티션이 활성화된 이후로 소비된 상위 워터 마크(HWM) 또는 최대 메모리 사용량입니다.
현재 사용되고 있지 않지만 향후 메모리 요청을 위해 성능상의 이유로
캐시된 현재 사용 양입니다.
다음은 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
|
DB2 서버 내 등록된 모든 메모리 "소비자"가 소비 중인 전체 메모리 양과 함께 나열됩니다. 컬럼 설명은
다음과 같습니다.
이름
메모리 소비자의 짧은 식별 이름.
예를 들면, 다음과 같습니다.
dbname 데이터베이스용으로 소비된 응용프로그램 메모리
전역 데이터베이스 관리 프로그램 메모리 요구사항
db2fmps와 통신하는 데 필요한 메모리
기타 전용 메모리 요구사항
FCM(Fast Communication Manager)
자원
로컬 응용프로그램과 통신하는 데 사용된 메모리 세그먼트
dbname 데이터베이스용으로 소비된 데이터베이스 메모리
소비자에게 현재 할당된 메모리 양
소비자가 사용한 메모리의 상위 워터 마크(HWM) 또는 최대 메모리
Mem Used (KB) 중에서, 현재 사용되고 있지 않지만 향후 메모리
할당에 즉시 사용할 수 있는 메모리 양
DB2 버전 9.7 수정팩
2 이상 수정팩에서 인덱스 재구성에 대한 진행 보고서에 다음과 같은 특성이 포함됩니다.
- db2pd
-reorgs index 명령은 파티션된 인덱스에 대한
인덱스 Reorg 진행을 보고합니다(파티션되지 않은
인덱스에 대한 지원이 도입된 수정팩 1).
- db2pd
-reorgs index 명령은 파티션 레벨에서 인덱스 Reorg의 모니터링을 지원합니다(즉, 단일 파티션을 재구성하는 동안).
- 파티션되지 않은 인덱스 및
파티션된 인덱스에 대한 Reorg 진행이 별도의 출력으로 보고됩니다.
하나의 출력에 파티션되지 않은 인덱스에 대한 Reorg 진행이 표시되고 다음 출력에 각
테이블 파티션의 파티션된 인덱스에 대한 Reorg 진행이 표시되며,
각 출력에 하나의 파티션에 대한 인덱스 Reorg 통계만 보고됩니다.
- 파티션되지 않은 인덱스가 먼저
처리된 후 파티션된 인덱스가 순차적으로 처리됩니다.
- db2pd
-reorgs index 명령은 출력에 파티션된 인덱스에 대한 다음과
같은 추가 정보 필드를 표시합니다.
- MaxPartition - 처리되는 테이블에 대한 총 파티션 수입니다.
파티션 레벨 Reorg의 경우 단일 파티션만 재구성되므로
MaxPartition에 항상 1 값이 사용됩니다.
- PartitionID - 처리되는 파티션에 대한 데이터 파티션
ID입니다.
다음은 파티션 2와 함께
범위에 따라 파티션된 테이블에 대한 인덱스 Reorg 진행을 보고하는
db2pd -reorgs index 명령을 사용하여 획득한 출력의 예입니다.
주: 첫 번째 출력은
파티션되지 않은 인덱스의 인덱스 Reorg 상태를 보고합니다.
다음 출력은 각 파티션에서 파티션된 인덱스의 인덱스 Reorg 상태를 보고합니다.
Index Reorg Stats:Retrieval
Time: 02/08/2010 23:04:21TbspaceID: -6
TableID: -32768Schema: ZORAN
TableName: BIGRPTAccess: Allow noneStatus: CompletedStart Time:
02/08/2010 23:03:55 End Time:
02/08/2010 23:04:04Total Duration: 00:00:08Prev Index Duration: -Cur Index Start: -Cur Index: 0 Max Index: 2 Index ID: 0Cur Phase: 0 ( - )
Max Phase: 0Cur Count: 0 Max Count: 0Total Row
Count: 750000
Retrieval Time: 02/08/2010
23:04:21TbspaceID: 2 TableID:
5Schema: ZORAN TableName:
BIGRPTPartitionID: 0 MaxPartition:
2Access: Allow noneStatus: CompletedStart Time: 02/08/2010 23:04:04 End Time: 02/08/2010 23:04:08Total Duration:
00:00:04Prev Index Duration: -Cur Index
Start: -Cur Index: 0 Max
Index: 2 Index ID: 0Cur Phase:
0 ( - )
Max Phase: 0Cur Count: 0
Max Count: 0Total Row
Count: 375000
Retrieval Time: 02/08/2010
23:04:21TbspaceID: 2 TableID:
6Schema: ZORAN TableName:
BIGRPTPartitionID: 1 MaxPartition:
2Access: Allow noneStatus: CompletedStart Time: 02/08/2010 23:04:08 End Time: 02/08/2010 23:04:12Total Duration:
00:00:04Prev Index Duration: -Cur Index
Start: -Cur Index: 0 Max
Index: 2 Index ID: 0Cur Phase:
0 ( - )
Max Phase: 0Cur Count: 0 Max Count: 0Total Row
Count: 375000
|
* 하늘소님께서 작성하신 글을 조금
편집하여 다시 올립니다.
|
댓글 없음:
댓글 쓰기