레이블이 DB2인 게시물을 표시합니다. 모든 게시물 표시
레이블이 DB2인 게시물을 표시합니다. 모든 게시물 표시

2009년 8월 21일 금요일

ORACLE_003. STATS_PACK - GATHER - PART2

STATS_PACK - GATHER - PART 2                                                       

DBMS_STATS.GATHER_DATABASE_STATS (

   estimate_percent        

   block_sample  

   method_opt      
   degree

   granularity

   cascade  
   stattab          
   statid  

   options        OUT

   objlist        
   gather_sys

   no_invalidate

   gather_temp  

NUMBER

BOOLEAN

VARCHAR2

NUMBER

VARCHAR2          

BOOLEAN

VARCHAR2

VARCHAR2

VARCHAR2

ObjectTab,

VARCHAR2

BOOLEAN

BOOLEAN

BOOLEAN

DEFAULT NULL,

DEFAULT FALSE,

DEFAULT 'FOR ALL COLUMNS SIZE 1',

DEFAULT NULL,

DEFAULT 'DEFAULT',

DEFAULT FALSE,

DEFAULT NULL,

DEFAULT NULL,

DEFAULT 'GATHER',

 

DEFAULT NULL,

DEFAULT FALSE,

DEFAULT FALSE,

DEFAULT FALSE );

 

DBMS_STATS.GATHER_DATABASE_STATS (

   estimate_percent        

   block_sample  

   method_opt      
   degree

   granularity

   cascade  
   stattab          
   statid  

   options       

   statown

   gather_sys

   no_invalidate

   gather_temp  

NUMBER

BOOLEAN

VARCHAR2

NUMBER

VARCHAR2          

BOOLEAN

VARCHAR2

VARCHAR2

VARCHAR2

VARCHAR2

BOOLEAN

BOOLEAN

BOOLEAN

DEFAULT NULL,

DEFAULT FALSE,

DEFAULT 'FOR ALL COLUMNS SIZE 1',

DEFAULT NULL,

DEFAULT 'DEFAULT',

DEFAULT FALSE,

DEFAULT NULL,

DEFAULT NULL,

DEFAULT 'GATHER',

DEFAULT NULL,

DEFAULT FALSE,

DEFAULT FALSE,

DEFAULT FALSE );

 


    

DBMS_STATS.GATHER_SYSTEM_STATS (

   gathering_mod              

   interval

   stattab

   statid

   statown

VARCHAR2        

INTEGER

VARCHAR2

VARCHAR2

VARCHAR2         

 

DEFAULT 'NOWORKLOAD'                         

DEFAULT NULL,

DEFAULT NULL,

DEFAULT NULL

DEFAULT NULL );


           GATHERING_MODE

                GATHERING_MODE 의 값은 다음과 같습니다.

 

                NOWORKLOAD

                     시스템 활동을 캡춰하는데 워크로드가 필요하지 않습니다. 오라클 내부의 기본값을 이용해

                     시스템의 STATISTICS 를 생성합니다. 이 모드는 워크로드를 서브밋 할 수 없는 상황에 딱 알

                     맞는 옵션입니다 (예를들어, 개발 프로세스 중). 실제 작동중인 시스템의 활동에 기반한 시스템

                     STATISTICS 를 위해서는 INTERVAL 혹은 START | STOP 모드를 사용하십시요.

 

                INTERVAL

                     특정한 간격으로 시스템 활동을 캡춰합니다. 이 옵션은 INTERVAL 파라미터와 합쳐져 사용

                     합니다. 간격값은 분 단위 입니다. 시스템 STATISTICS 는 DICTIONARY 혹은 STATAB 에

                     생성됩니다. 정해진 스케쥴보다 일찍 수집활동을 멈추고 싶다면

                     EXEC DBMS_STATS.GATHER_SYSTAM_STATS(GATHERING_MODE=>'STOP') 구문을

                     이용하여 정지할 수 있습니다.

 

                START | STOP

                     원하는 시점에서 시스템 활동을 캡춰하고 DICTIONARY 혹은 STATTAB 에 정보를 업데이트

                     합니다. INTERVAL 값은 무시되어집니다. (당연하겠죠?)

 

          

     

        본문보다 더 쓸모있는 TIP! (본문은 그럼 뭐냐..) >

        전에 설명했던 값들의 설명은 제외하였고,  새로운 설정값에 관해서만 기술했습니다.

      GATHER_TABLE_STATS 의 STATTAB 과 GATHER_INDEX_STATS 의 STATTAB 은 그 사용법이

      동일합니다.

 

        기본적으로 STATS_PACK 을 사용하고 싶으면

 

                 SQL>EXEC DBMS_STATS.GATHER_[ TABLE | INDEX | DATABASE | SYSTEM]_STATS

                           (OWNNAME =>'VALUE', ESTIMATE_PERCENT=>'10', ... ) ;

 

      과 같이 사용하시면 됩니다.

        또한 일일이 REFERENCE 를 찾아볼 필요 없이 DESC[RIBE] 명령문을 통해 사용할 수 있는 방법을

      참고할 수 있습니다. DESC[RIBE]는 VIEW나 TABLE 등의 구성 정보만 보는 것이 아니라 이렇게 패키

      지의 정보도 확인할 수 있습니다.

 

      STATS_PACK.FINISH_GATHER_OPTIONS___________________________________________________

2009년 8월 19일 수요일

DB2_012. EXPLAIN

EXPLAIN                                                                                

 EXPLAIN

  EXPLAIN 명령은 Explainable statement 의 접근 경로 선택에 관한 정보를 획득합니다. SELECT 문, INSERT 문, 또는 검색을 수행하게 하는 (즉, 조건문이 있는) UPDATE 문이나 DELETE 문이 Explainable statement 입니다. 이렇게 획득한 정보는 사용자가 만들어 놓은 plan table에 그 정보가 기록됩니다.

 

  선택적으로 EXPLAIN 문은 추가적인 두가지의 정보를 획득하여 각각의 테이블에 기록할 수 있습니다. 사용자가 만든 statement table 은 explainable statement 가 실행하는데 소요된 비용(estimated cost)에 관한 정보를 저장합니다. function table 은 explainable statement 가 참조한 사용자 정의 함수를 어떻게 풀어 나가는지에 대한 정보를 담아둡니다.

 

 SYNTAX

  EXPLAIN  [ PLAN | ALL ] (SET QUERYNO=integer) FOR explainable_sql_statement

 

  PLAN

       plan table에 explainable-sql-statement 가 실행중 각각의 단계에 관한 하나의 행을 집어

      넣습니다. 참조성 제약조건을 수행하는 단계는 포함되지 않습니다.

 

      statement table 이 존재하면 explainable statement 처리의 소요비용을 제공하는 행이

      statement table 에 저장됩니다.

 

      function table 이 존재한다면 explainable statement 에 있는 각각의 사용자 정의 함수에

      관한 행이 삽입됩니다.

 

  ALL

      PLAN 명령과 같은 효과를 냅니다.

 

  SET QUERYNO = integer

      explainable-sql-statement 의 번호를 정합니다. QUERYNO 열(column)은 EXPLAIN 구문

      에 의해 plan table, statement table, 혹은 function table 의 각 행에 주어진 값으로 저장됩

      니다. QUERYNO 가 정의되지 않으면 DB2는 스스로 번호를 할당합니다. EXPLAIN 구문에

      statement 번호는 프리컴파일러와 DBRM에 할당되어 있습니다.

 

  FOR explainable-sql-statement

      EXPLAIN 구문으로 확인하고자 하는 SQL문을 적어줍니다. 어떠한 SQL문도 explainable-

      sql-statement 가 될 수 있습니다. EXPLAIN 구문이 프로그램 내부에 있으면 호스트 변수를

      참조하게 됩니다. 만약 EXPLAIN 이 다이나믹하게 준비되었다면, 구문은 파라미터 마커를

      포함할 수 있습니다. 구문에 있는 호스트 변수는 구문이 있는 프로그램에 반드시 정의되어

      있어야 합니다.

 

 EXAMPLE

  EXPLAIN 문 작성)

  EXPLAIN PLAN SET QUERYNO=100

  FOR SELECT * FROM DB2TL002.TBL00209

            WHERE POLNO                =       ?

                 AND  DATA_FLAG    =       ?

 

  결과 확인)

  SELECT * FROM PLAN_TABLE WHERE QUERYNO = 100;

  SELECT * FROM DSN_STATEMENT_TABLE WHERE QUERYNO = 100;

 

PLAN TABLE

2009년 8월 18일 화요일

DB2_011. UTILITY : EXPORT

UTILITY : EXPORT                                                              

 지원하는 파일 형식

  DEL(Delimited ASCII) : DB 관리 프로그램 및 FILE관리 프로그램간의 데이터 교환을 위한 컬럼

                           식별자가 존재하는 ASCII형식. 컬럼 값을 구분하기 위해 특수 문자를 사용합니다.

                           (',' , '\',TAB 등) 또한 Text Viewer등을 이용하면 내용을 직접 확인할 수 있습니다.

 

  IXF(Integrated Exchange Format) : 통합 교환 포맷의 PC버전으로, DB 관리 프로그램 내에서

                           데이터 교환을 위한 방법. IXF형식으로 Export 할 경우 Import 혹은 Load 시 테이

                           블을 자동으로 생성시킬 수 있습니다. (Text Viewer로 볼 수 없습니다.)

 

  * NOTICE

  - TABLE 내에 254Byte 이상인 컬럼이 있을시 IXF형식으로 Export 하여야 합니다.

  - ^M과 같은 특수문자가 있다면 IXF 형식으로 Export 하여야 합니다.

  - AutoLoader는 ASC 와 DEL 파일을 파티션할 시만 사용할 수 있습니다. IXF 파일은 파티션 될

                           수 없습니다. 다만 noheader 수정자를 LOAD 조작에 사용하여 단일 DB 파티션 노드

                           그룹으로 로드될 수 있습니다.

  - DBEDW는 DEL 형식으로, DBISW/DBBSS/DBCCS는 IXF 형식으로 Export를 권장합니다.

  - Export받은 데이터를 시각적으로 확인 및 수정하고자 할 시는 반드시 DEL 형식으로 합니다.

 

 SYNTAX

  EXPORT TO filename OF filetype MODIFIED BY filetype-mod

                    MESSAGES message-file

                    select-statement

 

  filename  select-statement를 통해 반환되는 데이터를 저장할 파일명을 지정합니다.

  filetype    DEL 혹은 IXF 형식을 지정

  MESSAGES message-file 메시지를 저장할 파일명을 지정합니다.

 

 

 EXAMPLE

  export to myconsumer.del of del modified by coldel;

                 myconsumer.del 파일에 저장      del 형식                               컬럼 구분자 ;

                 messages myconsumer_export.msg

                                                   메시지 저장할 파일명

                 select * from db20.consumer

DB2_010. UTILITY : LOAD

UTILITY : LOAD                                                                    

 LOAD

  대량의 데이터를 쉽게 테이블에 등록할 수 있는 UTILITY 입니다. 이 유틸리티를 실행하기 위해서는 다음 권한이 요구되어 집니다.

 

SYSADM    DBADM    LOAD

 

 자주 사용하는 파일유형 수정자

  identityignore 

  입력 데이터 파일에 식별 칼럼에 대한 데이터가 들어 있을지라도 데이터를 무시하고 각 행에 대해 식별값을 생성하도록 가져오기 유틸리티(LOAD)에 지정합니다.

 

  ex) 목표 테이블의 레이아웃(LAYOUT)

           번호(INT)  :  GENERATED ALWAYS로 정의된 식별 컬럼

           이름(CHAR(10))

           점수(DECIMAL(4,1))

           클래스(CHAR(1))

 

        소스 데이터

           2,Robert,45.2,J

           1,Mike,76.9,K

           3,Leo,23.4,I

 

  일련번호로 자동 생성된 번호 (1,2,3)를 제외하고 load 하고자 할 경우 identityignore 수정자를 사용 합니다.

         입력후

           1,Robert,45.2,J

           2,Mike,76.9,K

           3,Leo,23.4,I

 

  usedefault

  목표 테이블 칼럼에 대한 소스 칼럼이 지정되어 있지만, 하나 이상의 행 인스턴스에 대한 데이터가 들어 있지 않으면, 기본값이 입력됩니다.

 

          소스데이터

            2,Robert,45.2,J

            1,,76.9,K

            3,Leo,23.4,I

 

           입력후

             2,Robert,45.2,J

             1,<공백1칸>, 76.9,K

             3,Leo,23.4,I

 

  keepblanks

  CHAR, VARCHAR, LONG VARCHAR 또는 CLOB유형의 각 필드에 앞공백 및 뒷공백을 보존합니다. 이 옵션이 없으면 문자 분리문자 내부에 있지 않는 모든 앞공백 및 뒷공백들은 제거되며 모든 공백필드에 대해 NULL이 삽입됩니다.

 

            소스데이터

              2,Robert,45.2,J

              1,<공백4칸>, 76.9,K

              3,Leo,23.4,I

 

            입력후

              2,Robert,45.2,J

              1,<공백4칸>,76.9,K

              3,Leo,23.4,I

 

  identityoverwrite

  GENERATED ALWAYS로 정의된 식별 칼럼이 로드될 테이블에 존재할 때, Source Data에 있는 값을 그대로 유지하기 위할 경우에 이 수정자를 사용합니다. 이 경우 식별 칼럼에 대한 데이터가 없는 행들은 거부됩니다. (SQL3116W)

 

  dumpfile = path/filename

  거부된 행이 기록될 예외 파일의 경로를 포함한 완전한 이름을 적습니다.

 

 SYNTAX

  LOAD (CLIENT) FROM filename OF filetype MODIFIED BY filetype-mod

               METHOD L(column-start column-end) | N (column-name) | P (column-position)

               SAVEPOINT n                                 //일관성 지점 설정

               ROWCOUNT n                                // DEL 파일에서 n건만 LOAD

               WARNINGCOUNT n                     // n건 이상 에러 경고가 발생시 LOAD 중지

               MESSAGES message-file              // MESSAGE 파일이름

               TEMPFILES PATH temp-path     // Temporary file 생성 위치

               [ INSERT | REPLACE | RESTART | TERMINATE ] INTO table-name (insert-column)

               FOR EXCEPTION table_name     // 예외 발생한 행을 저장할 테이블명

               STATISTICS [YES | NO ]               // RUNSTATS 수행여부

               COPY [ YES | NO ]                           // COPY를 기본적으로 받을 것인지의 여부

               NONRECOVERABLE                      // 이 옵션이 존재하면 LOGGING을 하지 않음

 

  FILETYPE

              ASC    구분자 없는 ASCII 형식

              DEL    구분자 있는 ASCII 형식

              IXF     통합교환 포맷, PCVERSION

 

  INSERT               기존의 데이터를 변경하지 않고, 로드한 데이터를 테이블에 추가

  REPLACE            테이블 내의 기존의 모든 데이터를 삭제하고 난 후 데이터를 테이블에 추가

  TERMINATE     이전에 할당된 로드조작을 종료하고 로드조작이 개시된 시점에서 조작을 롤백

  RESTART           이전에 할당된 로드 조작을 재개시

 

  회사에서 실재 사용했던 LOAD문 예제_____________________________________________________

  LOAD CLIENT FROM jayung01.txt    OF ASC   METHOD L (1 5,7 19,21 58,60 71,73 84,86 90,92 111,113 113)

                              SAVECOUNT 10000  MESSAGES jayung01.MSG REPLACE  INTO TP_TBP00103        nonrecoverable;

2009년 8월 17일 월요일

DB2_009. MANAGEMENT STORAGE GROUP

MANAGEMENT STORAGE GROUP                                            

 CREATE STOGROUP

  CREATE STOGROUP stogroup_name VOLUMES (volume-id1, volume-id2 ...)

                     VCAT   catalog-name

 

  VCAT   Identifies the integrated catalog facility catalog for the storage group.

             You must specify the catalog name in the form of a short identifier. Thus, you must

             specify an alias if the name of the integrated catalog facility catalog is longer
             than 8 characters.

 

  EXAMPLE)

   CREATE STOGROUP DB2TLSG

   VOLUMES (DB2033, DB2034, DB2035)

   VCAT PLONGDB2;

 

 VOLUME ADD

  ALTER STOGROUP stogroup_name ADD VOLUMES (volume-id1, volume-id2, ...)

  기 존재하던 스토리지 그룹에 볼륨을 추가합니다.

 

  EXAMPLE) 

   ALTER STOGROUP DB2TLSG ADD VOLUMES (DB2154, DB2155)

 

 VOLUME REMOVE

  ALTER STOGROUP stogroup_name REMOVE VOLUMES (volume-id1, volume-id2, ...)

  기 존재하던 스토리지 그룹에서 볼륨을 제거합니다.

 

  EXAMPLE)

   ALTER STOGROUP DB2TLSG REMOVE VOLUMES (DB2154,DB2155)

 

  * 하나의 스토리지 그룹엔 볼륨이 최대 133개까지만 허용이 됩니다. *

DB2_008. UTILITY : DB2TOP - Release lock -

UTILITY : DB2TOP - Release lock -                                    

 LOCK 확인

  DB2TOP을 실행하고 'l (소문자 L)'키를 누르면 현재 락이 걸린 세션을 확인 할 수 있다.

 

  락이 되는 Agent 에 대한 상세한 정보를 얻고 싶으면 a 를 누르고 Agent 번호를 입력하면 해당 Agent 에 관한 정보가 보여진다.

 

 어떠한 세션이 블락을 하는지 확인해 본다.

  U를 누르면 현제 어떤 에이전트가 블락을 하고 있는지 확인 할 수 있다.

  495 Agent 가 556 Agent 를 블럭(Block) 하고 있음을 알 수 있다.  U화면에서 L을 입력하면 아래 그림처럼 좀더 자세하게 블럭을 주는 관계를 가시적으로 파악할 수 있다. 이제 495락을 풀어주자.

  이제 495 Agent를 Release 해 주자. U화면에서 f를 눌러주자. 그러면 아래와 같이 Agent 를 죽일것인지를 물어본다.

  여기서 'y'를 입력하게 되면 락을 잡고 있는 agent는 죽게 된다. (TRX는 Roll back 된다.)

 

 

  참고)

  http://cafe.naver.com/goodhint.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1540

DB2_007. UTILITY : DB2TOP

UTILITY : DB2TOP                                                               

 DB2TOP

  DPF 환경에서 DB2 UDB를 모니터링 할 수 있게 특별히 제작된 모니터 툴 입니다.

 

 SYNTAX

  $db2top   [-d dbname] [-n nodename] [-u username] [-p password] [-V schema]

                [-i interval] [-P <partition>] [-b option] [-a] [-B] [-k] [-R] [-x]

                [-f file </HH:MM:SS> <+offset>]

   $db2top  [-H host] [-N port] [-h]

 

 COMMAND OPTIONS

  -n  붙일 node를 지정합니다.

  -d  모니터링 할 특정 데이타 베이스를 지정합니다.

  -u  데이타베이스에 접속할 DB2 사용자를 지정합니다.

  -p  DB2 패스워드를 지정합니다.

  -V  기본 스키마로 사용할 것을 지정합니다.

  -i   화면을 업데이트하는 시간 간격을 정의합니다.

  -k  Actual 혹은 Delta 값을 표시할지 여부를 정합니다.

  -R  시작할때 스넵샷을 리셋합니다.

  -P  <number>. 현재 혹은 파티션 넘버의 스냅샷을 찍습니다.

<다른 옵션을 보기 위해서는 첨부된 메뉴얼을 다운받아 보십시요.>

 

 Interactive Commands

 

  d     데이터베이스 화면

  l      세션 화면

  a     에이전트의 상세한 어플리케이션 화면.

  G     현제 파티션과 모든 파티션화면 사이를 토글

  P     스냅샷을 찍은 db 파티션 선택

  t      테이블 스페이스 화면

  T     테이블 화면

  b     버퍼풀 화면

  D     동적 SQL (Dynamic SQL) 화면

  m     메모리 풀 화면

  s     statements 화면

  U     lock 화면

  p     파티션 화면

  u     유틸리티 화면

  A     HADR 화면

  F     Federation 화면

  B     병목 분석(Bottleneck analysis) 화면

  H     History 화면

  f      화면 멈춤

  W     agent_id, os_user, db_user, applicaton 혹은 netname 보기. 세션 스냅션(option l)에 의해 리턴

         된 statement는 agent.sql, os_user-agent.sql에 작성됩니다. 동적SQL 화면에서 내린 명령은

         (option D) db2advis과 호환되는 형식인 db2adv.sql에 작성됩니다.

  /      데이터를 필터링할 표현식을 입력합니다. 표현식은 반드시 정규표현식을 따라야 합니다.

         각각의 펑션(화면)은 다르게 필터링 됩니다.

 <|>   화면을 왼쪽 혹은 오른쪽으로 이동합니다.

  z/Z  오름차순 및 내림차순으로 정렬합니다.

  c     화면에 표시되는 컬럼의 순서를 조정할 수 있습니다.

  S     native DB2 스냅샷을 실행합니다.

  L     SQL 화면(option D)에서 완료된 질의문을 보여줍니다. 정규 DB2표현은 e 또는 X명령을 이용하여

         실행할 수 있습니다.

  R     스냅샷 데이터를 리셋합니다.

  i      유휴 세션을 on/off 합니다.

  I      새로고침 간격을 리셋합니다.

  k     Actual 과 delta 값을 번갈아 가며 토글합니다.

  g     그래프를 on/off 합니다.

  X     확장 모드를 켜거나 끕니다.

  C     스냅샷 콜렉터를 on/off 합니다.

  V     Set default explains schema.

  O     세션 설정값을 보여줍니다.

  w    세션 설정값을 .db2toprc에 기록합니다.

  q     db2top을 종료합니다.

 

 

 Interactive Commands (Applications Screen Only - Option a)

  r      그전 펑션으로 돌아갑니다.

  R     자동 새로고침을 켜거나 끕니다.

  g     그래프를 켜거나 끕니다.

  X     확장모드를 켜거나 끕니다.

  d     에이전트를 보여줍니다.

 

<첨부 : db2top Manual>

2009년 8월 14일 금요일

DB2_006. MONITORING DATABASE 2

MONITORING DATABASE 2                                              

  EVENT MONITOR

   스냅샷 모니터는 "get snapshot"명령이 실행된 시점에서 데이터베이스의 활동을 기록하려는

  것에 대해 이벤트 모니터는 어떤 시간의 범위 안에서 발생한 이벤트 정보를 기록합니다.

 

   이벤트 모니터를 작설할 때에는 감시할 이벤트 형식을 지정해야 합니다. 다음과 같은 형식이

  있습니다.

 

       DATABASE      최후의 응용프로그램이 데이터베이스에서 종료된 시점에 한 개의 이벤트

                            레코드를 기록합니다.

       TABLES          최후의 응용프로그램이 데이터베이스에서 종료된 시점에 활동 중의 각 테

                            이블에 대해 이벤트 레코드를 기록합니다.

       DEADLOCKS   각 데드락 이벤트에 대해 한 개의 이벤트 레코드를 기록합니다.

       TABLESPACES 최후의 응용프로그램이 데이터베이스에서 종료된 시점에 활동중의 각 테

                            이블 스페이스에 대해 한 개의 이벤트 레코드를 기록합니다.

       BUFFERPOOLS 최후의 응용프로그램이 데이터베이스에서 종료된 시점에 활동중의 각 버

                            퍼풀에 대한 한개의 이벤트 레코드를 기록합니다.

       CONNECTIONS 응용프로그램이 데이터베이스에서 종료된 시점에 각 테이블 스페이스 연

                            결 이벤트에 대해 한 개의 이벤트 레코드를 기록합니다.

       STATEMENTS   응용프로그램에 의해 출력된 각 SQL 문에 대한 한개의 이벤트 레코드를

                            기록합니다.

       TRANSACTIONS 트랜잭션이 완료된 시점에서 각 트랜잭션에 대해 한 개의 이벤트 레코드

                            를 기록합니다.

 

 

  이벤트 모니터 작성

   EV1 이라는 이름의 데드락 이벤트 모니터를 작성하고 이벤트 레코드를

   /event/deadlock/ev1 이라는 디렉토리에 보관하는 방법입니다.

 

    db2 => create event monitor ev1 for statements write to file '/event/statement/ev1'

            maxfiles 3 maxfilesize 1000

 

     4MB의 파일을 최대 3개까지 할당하도록 하고 있습니다. 주의할 것은 ev1파일이 생성될

    디렉토리가 반드시 미리 존재해야 합니다. 그렇지 않으면 I/O 에러를 유발하게 됩니다.

 

   이벤트 모니터의 개시와 정지

    이벤트 모니터의 시작

 

        db2 => set event monitor ev1 state = 1

 

    이벤트 모니터의 정지

 

        db2 => set event monitor ev1 state = 0

 

   이벤트 모니터 출력의 해석

    이벤트 모니터를 통해 출력된 로그를 확인하기 위해 db2evmon 이라는 유틸리티를 사용합

    니다.

 

         $db2evmon -path /event/statement/ev1

2009년 8월 13일 목요일

DB2_005. MONITORING DATABASE 1

MONITORING DATABASE  1                                   

  SNAPSHOT MORNITOR  

 

그룹

정보

모니터 스위치

DBM 구성매개변수

소트

힙 수
오버플로우
소트 성능

SORT

DFT_MON_SORT

로직

보유 로직 수
데드락의 수

LOCK

DFT_MON_LOCK

테이블

판독된 행수
기록된 행수

TABLE

DFT_MON_BUFPOOL

트랜잭션

개시 시각
종료 시각
완료 상황

UOW

DFT_MON_UOW

SQL 문

개시 시각
정지 시각

STATEMENT

DFT_MON_STMT

 

  모니터 스위치의 전환

    모니터 스위치의 ON/OFF의 전환은 인스턴스(DBM 구성 매개변수) 레벨 또는 으용프로

   그램 레벨로 실행할 수 있습니다.모니터 스위치 설정은 그 인스턴스 내에 존재하는 모든

   데이터 베이스에 영향을 줍니다.

 

    예를 들어 버퍼풀 정보를 입수하기 위해선 명령행 프로세서에서 다음과 같은 명령을 실

   행 합니다.

 

           db2 => update dbm cfg using dft_mon_bufpool on

 

     이것에 대해 다음 명령은 스위치를 기동한 응용프로그램만의 데이터 베이스 버퍼풀 활

    동 정보가 수집됩니다.

 

           db2 => update monitor switches using bufferpool on

 

     모니터 스위치를 ON 으로 하면 감시 데이터의 수집이 개시됩니다. 시간이 적당히 지나

    고 목적 정보가 수집되었다고 판단될 즈음에 스냅샷 명령을 실행하면 그 시점에서의 감

    시 데이터를 얻을 수 있습니다.

 

           db2 => get snapshot for bufferpool on <database_name>

DB2_004. CREATE TABLESPACE

CREATE TABLESPACE                                           

  테이블 스페이스 만들기

    CREATE TABLESPACE <TABLESPACE_NAME> IN <DATABASE_NAME>

                 USING STOGROUP <STOREGROUP_NAME>

                    PRIQTY    number

                    SECQTY  number

                    ERASE     NO

                 LOCKSIZE  PAGE

                 BUFFERPOOL  BP1

                 CLOSE YES;

 

     CREATE TABLESPACE 구문은 굉장히 많은 옵션을 가지고 있습니다. 그중에서

    주로 쓰는 옵션 몇개를 알아보겠습니다.

 

       PRIQTY    처음 테이블 스페이스를 만들때 DB2가 관리하는 데이타 셋의 크기

                      를 설정합니다.

       SECQTY  처음 설정한 데이타 셋의 크기가 가득 찼을 경우 데이타 셋을 확장

                      시킬시 확장될 용량을 지정하는 옵션 입니다.

       ERASE     테이블 스페이스를 DROP하는 유틸리티나 SQL 명령을 수행할때

                      테이블 스페이스나 파티션이 들어있는 데이타 셋을 어떻게 할지를

                      결정합니다.

                      NO 데이타 셋을 남겨둡니다. ERASE YES보다 수행 시간은 짧지만,

                            DB2를 통하지 않는 다른 방법으로 데이타에 접근이 가능합니다.

                    YES 데이타 셋을 지웁니다. 보안의 측면에서 DB2는 데이타 셋을

                            지워지기 전에 '0'으로 가득 채웁니다.

 

        LOCKSIZE  Lock의 범위를 지정합니다. Work file database나 TEMP database

                       에 사용해서는 안됩니다.

                     ANY DB2가 어떠한 락도 사용할 수 있게 합니다.

                     TABLESPACE

                 TABLE

                 ROW

                 LOB

 

       CLOSE 데이타 셋이 한계치에 다다를 만큼 열렸을때 데이타 셋이 닫히도록

                     순위를 정할 수 있습니다.

                     YES CLOSE NO 데이타 셋 전에 닫히게 합니다. 기본값 입니다.

                     NO   ClOSE YES로 설정한 데이타 셋이 전부 닫히면 닫힙니다.

 

DB2_003. SET DATABASE PARAMETERS

SET DATABASE PARAMETERS                              

  DB2 UDB의 관리시스템의 구성 매개변수에는 두 종류가 있습니다.

 

      - 데이터베이스 매니저(DBMS) 구성 매개변수

               인스턴스에 대한 설정입니다. 데이터베이스 메니저 구성 매개변수를 변경

             한 후에는 그 값을 유효하게 하기 위해, 데이터베이스 관리 시스템을 일단

             종료시킨후 재시작 하여야 합니다. 콘솔에서 DBMS의 매개변수를 확인하려

             면 다음과 같이 입력합니다.

 

                    db2 get dbm cfg

 

               특정한 값을 수정하기 위해서는 다음의 예제와 같이 입력합니다.

 

                    db2 update dbm cfg using diaglevel 4

 

      - 데이터베이스(DB) 구성 매개변수

               데이터베이스 구성 매개변수는 데이터베이스에 대한 설정 입니다. 다양한

             값이 있으나 변경이 가능한 것과 불가능한 것들이 있습니다. 성능조정에 관

             한 중요한 값들은 추후 서술하도록 하겠습니다. 콘솔에서 DB의 매개변수를

             확인하려면 다음 명령을 입력합니다.

 

                db2 get db cfg for <database_name>

 

            특정한 값을 수정하기 위해서는 다음의 예제와 같이 입력합니다.

 

                    db2 update db cfg for <db_name> using sortheap 500

 

DB2_002. DATABASE INFORMATION

 DATABASE INFORMATION                                      

  데이터베이스 접속

     db2 connect to test user db2inst1 using imbdb2

 

 

  접속한 데이터베이스의 테이블 스페이스 정보 얻기

     db2 list tablespace show detail

 

 

  한국어 데이터베이스 작성하기

    DB2CODEPAGE 환경변수를 설정합니다.

     $export DB2CODEPAGE=970

     $db2 create db eudDB

 

    SQL 문을 명시적으로 지정

     $db2 create db eucDB using codeset IBM=eucKR territory KR

 

    LANG 환경변수 설정

     $export LANG=ko_KR

     $db2 create db eucDB

 

    참고) db2set db2codepage = 970

 

   작성된 데이터베이스 코드 페이지는 데이터 베이스 구성 매개변수를 보는 것으로

  확인할 수 있습니다. 다음의 명령을 실행하여 확인하십시요.

 

     db2 get db cfg for <dbname>

 

DB2_001. CREATE DATABASE

CREATE DATABASE                                                              

    데이터 베이스를 작성

 

   --------------------------------------------------------------------------------------------------------------------- 

   CREATE DATABASE database_name BUFFERPOOL bpname

                                                                      INDEXBP         bpname

                                                                      AS (WORKFILE, TEMP FOR member_name)

                                                                      STOGROUP (SYSDEFLT, stogroup-name)

                                                                      CCSID  (ASCII, EBCDIC, UNICODE)

    ---------------------------------------------------------------------------------------------------------------------

     BUFFERPOOL bpname

         데이터베이스 내에 작성된 테이블 스페이스가 사용할 버퍼풀을 지정합니다.

        만약 데이터베이스가 WORK FILE DATABASE라면 8KB와 16KB 버퍼풀은 사용할 수

        없습니다.

 

     INDEXBP bpname

         데이터베이스 내에 작성된 인덱스들이 사용할 버퍼풀을 지정합니다.

       데이터베이스가 WORK FILE DATABASE 라면 INDEXBP 는 정의할 수 없습니다.

 

     AS WORKFILE or AS TEMP

        WORK FILE DATABASE 인지 TEMPORARY TABLES을 위한 데이터베이스 인지를

       정합니다.

            AS WORKFILE

               데이터베이스를 WORK FILE DATABASE로 정의합니다. AS WORKFILE 은 오직

             Data sharing environment 환경에서만 정의됩니다. 각각의 DB2 멤버들에게 WORK

             FILE DATABASE는 오직 하나만 생성됩니다.

           AS TEMP

              Temporary tables로만 이루어진 데이타베이스를 정의합니다. 각각의 DB2 서브시스

             템 하에서 오직 하나의 TEMP Database를 만들 수 있습니다. TEMP Database는 DB2

             서브시스템 혹은 Data sharing 멤버들과 공유할 수 없습니다.

 

      STOGROUP stogrup-name

         사용할 스토리지 그룹을 설정합니다. 기본값은 SYSDEFLT 입니다.

 

      CCSID encoding-schema

          데이터베이스에 저장될 데이타의 엔코딩 스키마를 정의합니다.

              ASCII

                 데이타가 ASCII CCSIDs 형식으로 저장되게 정의합니다.

              EBCDIC

                 EBCDIC CCSIDs 형식으로 저장되게 정의합니다.

              UNICODE

                UNICODE CCSIDs로 저장되게 합니다.

 

 예제1) CREATE DATABASE DSN8D71P

                  STOGROUP DSN8G710

                  BUFFERPOOL BP8K1

                  INDEXBP  BP2;

 

 예제2) CREATE DATABASE DSN8TEMP

                  CCSID ASCII;