728x90

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: 잠금 대기 진단

db2pd -db databasename -locks -transactions -applications -dynamic을 실행하는 경우, 결과는 다음과 유사합니다.
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 매개변수를 사용하여 대기 중인 잠금 모두 캡처

db2pd -wlocks -db pdtest를 실행하는 경우, 다음과 유사한 결과가 생성됩니다. 첫 번째 응용프로그램(AppHandl 47)은 테이블에서 삽입을 수행 중이고 두 번째 응용프로그램(AppHandl 46)은 해당 테이블에서 선택을 수행 중임을 표시합니다.
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 매개변수를 사용하여 잠금 소유자 및 잠금 대기자에 대한 자세한 런타임 정보 캡처

예 2와 동일한 조건에서 다음 샘플 출력이 생성되었습니다.
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: 잠금 문제점 고려 시 콜라웃 스크립트 사용

콜아웃 스크립트를 사용하려면 db2cos 출력 파일을 찾으십시오. 데이터베이스 관리자 구성 매개변수 diagpath가 파일 위치를 제어합니다. 출력 파일의 컨텐츠는 db2cos 스크립트 파일에 입력하는 명령에 따라 다릅니다. db2cos 스크립트 파일에 db2pd -db sample -locks 명령이 포함된 경우 제공된 출력 예는 다음과 같습니다.
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 실행 결과를 사용하십시오.

db2pd -agent 출력은 응용프로그램이 읽은 행 수를 Rowsread 컬럼에, 기록한 행 수를 Rowswrtn 컬럼에 표시합니다. 다음 샘플 출력에 표시된 대로 이러한 값을 통해 응용프로그램이 완료한 것과 응용프로그램이 여전히 완료해야 하는 것을 알 수 있습니다.
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
DB2 서버 내 등록된 모든 메모리 "소비자"가 소비 중인 전체 메모리 양과 함께 나열됩니다. 컬럼 설명은 다음과 같습니다.
이름
메모리 소비자의 짧은 식별 이름. 예를 들면, 다음과 같습니다.
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: 인덱스 재구성 진행 모니터링

DB2 버전 9.7 Fixpack 2 이상의 Fixpack에서는 인덱스 재구성에 대한 진행 보고서에 다음과 같은 특성이 포함됩니다.
  • 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: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

728x90

+ Recent posts