시스템을 관리하다가 오류가 발생해서, 아니면 갑작스럽게 DB 시스템이 느려지거나 heavy한 SQL이 있나 해서 수행 중인 SQL모을 확인해 보고자 하는 경우가 있을 것이다.

IBM에서 무료로 제공하는 모니터링 도구 중 잘 사용되는 것이 db2pd와 db2top 2가지가 있다.

db2pd는 informix의 onstat 의 메커니즘을 적용한 도구로 DB2가 사용하는 메모리에서 정보를 수집하게 해주는 도구이다. 장점은 DB 접속 절차가 없어서 db가 hang이 발생하는 순간에도 DB의 정보 수집이 가능하다는 점일 것이다. 단점은 많은 정보가 추출되고, Text 기반으로 출력 형식이 정해져 있어서 보고자 하는 정보를 찾거나 보기가 불편하다는 점일 것이다.

반면, db2top은 (v9.5부터 제품 설치 시 제공되어짐, 하위 버전의 경우는 최신 fixpack에 포함되어제공됨)  snapshot 함수를 이용한 방식으로 telnet 등의 서버 레벨에서 정보를 보기 편하게 제공한다. (linux의 top이나 aix의 topas 같은 Text 기반 GUI ?)

단점은 DB 서버에 부하가 심하거나 하는 경우 수집이 잘 되어지지 않는다. DB에  접속을 해서 정보를 수집하기에 “성능 부하” 문제로 정보를 모니터링 하기에는 조금 힘든 면이 있다. Text 기반으로 정보를 보여주어도 보기 편하게 제공을 하기 때문에 편의성은 좋다고 할 수 있겠다.

이 중 db2top을 이용하여 실행 중인 SQL을 확인해 보는 방법을 살펴보고자 한다.

DB2 서버에 telnet 으로 접속(db2 사용자 계정) 을 하여 수행한다. (DB명: sample)

명령어
> db2top –d sample

대문자 D키를 누르고,

대문자 L 키를 눌러 보고자 하는 SQL의 Hash Value 입력

실행 중인 SQL 전체 구문을 얻을 수 있다. Dynamic SQL 경우에는 (jsp 등에서 ? 처리해서 동적 변수가 실행되는 SQL) 변수 값이 ?로 처리되서 들어오는 문제점은 있다.

db2pd를 통해서 SQL을 확인한다면

> db2pd –d sample –dynamic

Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:06:46 -- Date 03/12/2012 13:17:07

Dynamic Cache:
Current Memory Used           912084
Total Heap Size               1271398
Cache Overflow Flag           0
Number of References          184
Number of Statement Inserts   26
Number of Statement Deletes   8
Number of Variation Inserts   18
Number of Statements          18

Dynamic SQL Statements:
Address            AnchID StmtUID    NumEnv     NumVar     NumRef     NumExe     Text
0x00002B8015F1FD60 111    1          1          1          1          1          SELECT POLICY FROM
    SYSTOOLS.POLICY WHERE MED='DB2TableMaintenanceMED' AND DECISION='TableRunstatsDecision' AND NAME='TableRunstatsPolicy'
0x00002B8015E4F440 164    1          1          1          3          3          SELECT COLNAME, TYPENAME FROM
     SYSCAT.COLUMNS WHERE TABNAME='POLICY' AND TABSCHEMA='SYSTOOLS'
0x00002B8015F2CB80 167    1          1          1          1          1          SELECT IBM.TID, IBM.FID FROM
    SYSIBM.SYSTABLES AS IBM, SYSTOOLS.HMON_ATM_INFO AS ATM WHERE ATM.STATS_FLAG <> 'Y' AND IBM.TYPE IN ( 'S', 'T' ) AND
    ATM.CREATE_TIME = IBM.CTIME AND ATM.SCHEMA = IBM.CREATOR AND ATM.NAME = IBM.NAME ORDER BY IBM.FID, IBM.TID WITH UR
0x00002B8015E423C0 185    1          1          1          1          1          select * from emp
0x00002B8015F279A0 332    1          1          1          1          1          UPDATE SYSTOOLS.HMON_ATM_INFO
    AS ATM SET STATS_FLAG = 'N', REORG_FLAG = 'N' WHERE (ATM.SCHEMA, ATM.NAME) IN   (SELECT IBM.CREATOR,           IBM.NAME
    FROM SYSIBM.SYSTABLES AS IBM    WHERE IBM.TYPE = 'N' )
0x00002B8015EF7400 340    1          1          1          2          2          SELECT TABNAME FROM
    SYSCAT.TABLES  WHERE TABNAME='HMON_ATM_INFO' AND  TABSCHEMA='SYSTOOLS'
0x00002B8015E8CFE0 450    1          1          1          3          3          SELECT TRIGNAME FROM
    SYSCAT.TRIGGERS WHERE TABNAME='POLICY' AND TABSCHEMA='SYSTOOLS'
0x00002B8015F01E80 462    1          1          1          156        156        SELECT CREATE_TIME FROM
    SYSTOOLS.HMON_ATM_INFO WHERE SCHEMA = ? AND NAME = ? FOR UPDATE
0x00002B8015E469A0 513    1          1          1          1          1          select * from staff
0x00002B8015E4B640 580    1          1          1          3          3          CALL
    SYSPROC.SYSINSTALLOBJECTS('POLICY','V','','')
0x00002B8015F1B4E0 639    1          1          1          1          1          DELETE FROM
    SYSTOOLS.HMON_ATM_INFO AS ATM WHERE NOT EXISTS ( SELECT * FROM SYSIBM.SYSTABLES AS IBM WHERE ATM.NAME = IBM.NAME AND
    ATM.SCHEMA = IBM.CREATOR AND ATM.CREATE_TIME = IBM.CTIME ) WITH UR
0x00002B8015F23D80 734    1          1          1          1          1          UPDATE SYSTOOLS.HMON_ATM_INFO
    AS ATM SET ATM.STATS_FLAG = 'Y'
0x00002B8015E91DC0 735    1          1          1          2          2          CALL SYSINSTALLOBJECTS(
    'DB2AC', 'V', NULL, NULL )
0x00002B8015F016E0 766    1          1          1          1          1          SELECT CREATOR, NAME, CTIME
    FROM SYSIBM.SYSTABLES WHERE TYPE='T' OR TYPE='S' OR TYPE='N' WITH UR
0x00002B8015E91160 809    1          1          1          3          3          SET CURRENT LOCK TIMEOUT 5
0x00002B8015EFF380 876    1          1          1          1          1          UPDATE SYSTOOLS.HMON_ATM_INFO
    SET STATS_LOCK = 'N', REORG_LOCK = 'N'
0x00002B8015EFB680 886    1          1          1          2          2          SELECT TABNAME FROM
    SYSCAT.TABLES  WHERE TABNAME='HMON_COLLECTION' AND  TABSCHEMA='SYSTOOLS'
0x00002B8015F2EF00 1014   1          1          1          1          1          SELECT POLICY FROM
    SYSTOOLS.POLICY WHERE MED='DB2CommonMED' AND DECISION='NOP' AND NAME='CommonPolicy'

Dynamic SQL Environments:
Address            AnchID StmtUID    EnvID      Iso QOpt Blk
0x00002B8015F1FF20 111    1          1          CS  5    B
0x00002B8015E4F5C0 164    1          1          CS  5    B
0x00002B8015F2CDA0 167    1          1          CS  5    B
0x00002B8015E42500 185    1          1          CS  5    B
0x00002B8015F27BA0 332    1          1          CS  5    B
0x00002B8015EF7580 340    1          1          CS  5    B
0x00002B8015E8D160 450    1          1          CS  5    B
0x00002B8015F174A0 462    1          1          CS  5    B
0x00002B8015E46AE0 513    1          1          CS  5    B
0x00002B8015E4B7A0 580    1          1          CS  5    B
0x00002B8015F1B6C0 639    1          1          CS  5    B
0x00002B8015F23EE0 734    1          1          CS  5    B
0x00002B8015EF3CA0 735    1          1          CS  5    B
0x00002B8015F01860 766    1          1          CS  5    B
0x00002B8015E912A0 809    1          1          CS  5    B
0x00002B8015EFF4E0 876    1          1          CS  5    B
0x00002B8015EFB800 886    1          1          CS  5    B
0x00002B8015F2F080 1014   1          1          CS  5    B

Dynamic SQL Variations:
Address            AnchID StmtUID    EnvID      VarID      NumRef     Typ Lockname                   Val Insert Time                Sect Size

+ Recent posts