'명령어'에 해당되는 글 2건

  1. 2006.03.20 | DB2 UDB 운용명령어
  2. 2006.03.20 | [본문스크랩] [1]오라클에서 DB2로 바꿀 때_FUNCTION

DB2 UDB 운용명령어

DB2 | 2006. 3. 20. 13:45
Posted by 시반

     

 

 Ø       UDB Start/Stop 명령어

 Ø         Tablespace & Table에 대한 정보

 Ø         Database 백업 & 복구 명령어

 Ø         에러 & 명령어 구문에 대한 도움말

 Ø         Crontab 명령어

 Ø         UDB모니터링 툴

 Ø       REORG & RUNSTATS 

 Ø       DB2  Administration  Tools 

 Ø       DB2 기타 유틸리티 

 Ø       DBM CFG  &  DB CFG  환경 변수

 

 

UDB Start/Stop 명령어

 

 

l       UDB Start

IBM UDB를 운용하려면, 다음과 같은 명령들을 이용하여

데이타베이스, Instance 사용자로 로그인 한 다음,

데이타베이스를 시동시켜야 한다.

  # su    db2inst1

  $ db2start

   $ db2  activate  db  depsdb

 

 

    ( 주 : DB2 ACTIVATE DB명령어는 DB global memory를 미리 메모리에 상주시키는 명령어로

           처음 connect 시의 시간을 단축시키는 효과가 있음,

           단 DB를 stop시킬때  db2 deactivate db 명령어를 이용하여 memory등을

           release시켜주어야 함)

 

l       UDB의 사용

데이타베이스가 시동되면, 사용하고자 하는 데이타베이스로 연결을

한다.  만약 데이타베이스가 없으면 "create database " 명령어를

이용하여 데이타베이스를 생성시킨 후 연결한다.

 

  $ db2  create  db  database명

   $ db2  connect to  database명  user userid using password

 

   데이타베이스가 연결되면, SQL 문을 사용하여 테이블의 생성,조작을  수행할 수 있다.

 

  ex)  select  , insert  , update , delete

 


l       UDB 종료

테이블에 대한 조작이 끝나면,  다음의 명령어를 이용하여 데이터베이스의 연결을 중단하고, 운용중인 데이타베이스의 시동을 끝낸다.  

   $  su    db2inst1

   $  db2  terminate

   $  db2  force  application  all

   $  db2stop

 


참고사항

 

l       db2start시 에러발생 메시지가 나타났을 때

 “DB2START 처리가 성공적이었습니다.그러나 하나 이상의 통신 지원이 성공적이지 못했습니다."라는 메시지가 나오면....

 

  $  cd  /home/db2inst1/sqllib/db2dump

  $  vi  db2diag.log

      파일의 마지막 부분에서 원인을 파악한다.

   ex) TCPIP service port가 등록이 되지 않았다라는 메시지가 나오면

       dbm cfg에 service port를 등록시켜주어야 한다.

     Db2 update dbm cfg using svcename 50000.

 

 


 

Tablespace & Table에 대한 정보

 

 

l       Tablespace의 정보를 보고자 할 경우

 

 

  $ db2  connect  to  depsdb

  $ db2  list  tablespaces |  more

  or

  $db2 list tablespace show detail | more

 

 


l       Table의 list를 보고자 할 경우

  $  db2  connect  to  depsdb

   $  db2  list  tables  for  all  |  more

 

 

  


l       Table의 column 정보를 보고자 할 경우

 $  db2  connect  to  depsdb

 $  db2 “select  tabschema,  tabname,  colname,  typename,

length, scale,  default,  nulls

from  syscat.columns “

또는 제어센타 이용

 

 

  


참고사항

 

l       Tablespace 크기가 부족할 경우

  $ db2 connect  to  depsdb

  $ db2 list  tablespaces  show  detail  |  more

 

 

‘상태’필드가 0x0000으로 나오는지 확인

‘가용 페이지 수’가 충분한지 확인

만약 가용페이지 수가 충분하지 못하면 테이블 스페이스의 크기를 늘려줌

 

       ex) GisaTBS가 부족할 경우

   #  su    root

      smit에서 datavg1에 Logical Volume 64M 짜리를 하나 만듬

   #  cd  /dev

   #  chown  db2inst1:db2iadm1  gisalv2

   $  su    db2inst1

   $  db2  connect  to  depsdb

   $  db2  “alter  tablespace  GisaTBS  add  (device  ‘/dev/rgisalv2’  16000)”

 

 


 

l       TableSpace가 Backup Pending 상태에 빠졌을 경우

#  su   -  db2inst1

$  db2 connect to depsdb

$  db2 list tablespaces | more

 

 

   ex) GisaTBS가 백업 보류

   $  db2 backup database depsdb tablespace GisaTBS

 

 


l       TableSpace가 Check Pending 상태에 빠졌을 경우

 

다음은 테이블의 점검보류 상태를 조회하는 것이다.

 

SUBSTR은 SYSCAT.TABLES의 CONST_CHECKED 컬럼에 있는 처음

 

2바이트를 추출하는데 사용된다.

 

첫번째 바이트는 외부 키 의무 규정을 나타내고,

 

두번째 바이트는 점검 의무 규정을 나타낸다.

 

 $  db2  “ SELECT  TABNAME,  SUBSTR( CONST_CHECKED, 1, 1 ) 

        AS  FK_CHECKED,  SUBSTR( CONST_CHECKED, 2, 1 )

        AS  CC_CHECKED   FROM  SYSCAT.TABLES

        WHERE STATUS = 'C' “

 

 

 

      그 다음  T1과 T2 테이블을 점검 보류 상태로 설정합니다.

 

    $  db2  SET  CONSTRAINTS  FOR  T1,  T2  OFF

  


      다음과 같이 수행하여 T1에 대한 제한 조건을 점검하고 첫번째 위반만을 얻습니다.

 

   $  db2  SET  CONSTRAINTS  FOR  T1  IMMEDIATE  CHECKED

 

  


      T1 및 T2에 대한 제한 조건을 점검하고, 예외 테이블 E1과 E2로 위반 행을 기입한다.

 

 $  db2  SET  CONSTRAINTS  FOR  T1,  T2  IMMEDIATE  CHECKED

          FOR EXCEPTION IN T1 USE E1,  IN T2 USE E2

 

 

 


      IMMEDIATE CHECKED 옵션으로 T1의 FOREIGN KEY 제한 조건 점검과 T2의 Check

 

      제한 조건 점검이 무시되도록 합니다

     

  $  db2  SET  CONSTRAINTS  FOR  T1  FOREIGN  KEY, T2  CHECK  IMMEDIATE  UNCHECKED

 

 

 


 

Database 백업 & 복구 명령어

 

 

데이타베이스의 안전성을  높이려면  주기적인  backup 과 데이타베이스 손상시 restore 해 주어야 한다.

 

l       Database 백업

  #  su    db2inst1

   $  db2  list  applications

사용자가 있으면,

$  db2  force  applications  all

    $  db2  backup  db  depsdb  to  /dev/rmt0

 

 


l       AIX 에서 backup image 의 형태는 다음과 같다.

Edi. 0. dsna . NODE0000 . CATN0000 . 1996.12.16121212  . 001

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

 |   |    |      |                             |

 |   |  instance | backup image의 순차번호

 |   |  name     | backup한 날짜,시간(분,초 포함)     

 |   |           |         

 |   |           +-------> UDB EEE가 사용하기 위한 필드

 |   +--------->  사용된 backup 유형

 |                0 : 전체 데이터 베이스의 backup

 |                3 : tablespace 의 backup

 |                4 : 테이블 적재의 복사

 |

 +--------> 데이터베이스 별명

 

 

 

  


l       Database 복구

  #  su –db2inst1

$  db2 restore db depsdb  from  /dev/rmt0

  taken  at date_time  to  target_directory]

 

   (여기서 * date_time은 backup  image  file에 포함된 timestamp임)


 

l       데이터베이스가 archive logging일 경우에는 rollforward 명령어를 사용한다.

$  db2 rollforward db database_alias to end of logs ans stop

   overflow  log  path   Log_Directory

 

      만일 특정 시점까지만 복원하려면,  다음과 같습니다.

  $  db2  rollforward  db  database명  to  isotime and  stop

 

 


에러 & 명령어 구문에 대한 도움말

 

 l       에러 메세지 발생시

만약 데이터베이스 운용시 문제가 생기면, vi에디터를 이용하여   

$HOME/sqllib/db2dump 디렉토리내의 db2diag.log 파일을 조사한다.

만약 SQL Error Code가 발생하였으면,

다음과 같이 해당 메시지를 찾아본다.

   $  su      db2inst1

   $  db2   “ ?   Sql0805 ”

   에러메세지 원인과 조치를 보고 실행

 

 

  이 메시지에는 에러의 원인과 해결을 위한 조치가 포함되어 있으므로 이를 통하여 문제점을

 

  해결할 수 있다.

 

l       명령어 구문 확인

 

   $  su    db2inst1

   $  db2  “ ?  list ”

 

 

  


참고사항

 

 

l       갑자기 느려졌을 경우

 

 ü       LOCK 상태 확인

   $  su    db2inst1

   $  db2 get snapshot for locks on depsdb

  유지되는 잠금, 현재 잠금대기중인 에이전트, 응용프로그램명,

  응용프로그램 상태, 총대기시간, 모드상태 등을 확인

 

 ü       Index 설정 여부

$  su    db2inst1

$  dynexpln –d depsdb “select …..” –o explain.out 

 

 

l       손상된 데이터베이스의 강제 삭제

 

 만약 데이타베이스의 손상으로 데이타베이스의 삭제가 제대로

 되지 않을 경우에는 다음의 디렉토리를 삭제해야 한다.

   $HOME/instance_name$  rm   -r   SQL0000x

 

 (여기서 0000x는  숫자로  데이타베이스가 생성된  순서를 나타낸다.

    , 손상된 데이타베이스의 물리적 디렉토리임)


 

 

Crontab  명령어

 

l       Crontab 명령어

crontab  [ -e | -l | -r | -v | File ]

 

 

 

  Crontab  [ -e / -l / -r / -v / File]

   -l    crontab file을 리스트

      - r        crontab directory에서crontab file 삭제

     -v      cron jobs 상태 보기

 

 

l       crontab의 사용법

 

root 로 login 한 다음 ,

#  crontab  -e

      

# COMPONENT_NAME:(CMDCNTL)commands needed for basic system needs

#

# FUNCTIONS:

# (C) COPYRIGHT International Business Machines Corp. 1989,1994

# All Rights Reserved

# Licensed Materials - Property of IBM

# US Government Users Restricted Rights - Use, duplication or

# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

  0 11 * * * /usr/bin/errclear -d S,O 30

 0 12 * * * /usr/bin/errclear -d H 90

  0 0 * * * /tmp/lsh/rmscript

  53 17 * * 2,4,6  /home/udbinst/myjob

 

  다음에서 논의할  crontab  file entry Format 으로  편집합니다.

 끝부분의 실행파일에서는 다음과 같이 편집해야 합니다.

#  vi  myjob

     su - db2inst1 “–c db2  backup  db  dbalias  to  /db2/”

 

ü       crontab File Entry Format

 

   crontab  file은  각각의cron job을 위해 다음의 Entry를 포함한다.그 형태는 다음과 같다.

  minute  hour  day_of_month  month  weekday  command

 

  각각의 fields 는  다음의 값을 수용합니다.

      minute        0 through 59

      hour          0 through 23

      day_of_month  1 through 31

      month         1 through 12

      weekday       0 through 6 for Sunday through Saturday

      command       a shell command

 

 

 ü       crontab 의 사용예

 .  /var/adm/cron/crontabs 디렉토리에 mycronjobs 파일을 상기의 형식으로 만든 다음,

     다음의 명령을 수행한다.

     #  crontab mycronjobs

 .  mycronjobs 파일을 상기의 형식의 예는 다음과 같다.

① 매시간마다 console에 시간을 출력하는 예

   0  *  *  *  *        echo The hour is `date` . >/dev/console

② 월,수,금요일 오전6시 30분마다 calendar 명령을 수행

   30  6  *  *  1, 3, 5    /usr/bin/calendar

③ 매일 6:30마다 calendar 명령을 수행

   30  6  *  *  *        /usr/bin/calendar

8월 한밤중마다 maintenance의 script를 수행

   0  23  *  8  *       /u/harry/bin/maintenance

 


 

UDB모니터링 툴

 

 

l       EVENT MONITOR

$ db2 create  event  monitor  testmon  for  statements

  write  to  file  --------- -------------

 (event monitor 이름) (database,transactions, tables,...)

   '/home/rdb/int1hqd1/SQL00001/db2event'  maxfiles 24

    maxfilesize  1024  nonblocked  append “

$ db2  “set  event  monitor  testmon  state  1”  

$ db2  “select  evmonname , event_mon_state(evmonname)

        from syscat.eventmonitors “

$ db2evmon  -db  sample  -evm   testmon 

$ db2evmon  -path  /home/rdb/int1hqd1/SQL00001/db2event

 (이전 작업의 대체용)

 

 

 


l       SNAPSHOT MONITOR

$ db2  “ get   monitor   switches” 

$ db2   “update   monitor  switches  using  bufferpool  on

  uow  on “

$ db2   “ get  snapshot for  all  on  db명 “ | more

$ db2   “ get  snapshot for  locks on  db명 “ | more

$ db2   “ get  snapshot for  application agentid # “ |more

    ( # 은 application handle ID임)

 

 

 


l       EXPLAIN TOOL

db2expln 툴은 시스템 카탈로그  테이블에  저장되어 있는 

패키지의 정적 SQL에 대한 선택된 액세스 플랜을 기술합니다.

db2expln   -d   (db 명)  -c  (user명)  -p  (package명)

  -s  (section 번호) -o   (outfile 이름)

 

 


   * Interactive SQL에 대해서는

export DYNEXPLN_OPTIONS='blocking all isolation ur queryopt 3’

dynexpln   <dbname>  "<SQL statement>”

 

  


l       explain 문

EXPLAIN문은  제공된  설명 가능한  명령문에  선택된  액세스  

플랜에 관한 정보를 보관하고, 이 정보를 Explain테이블에 둔다.

설명가능 명령문은  DELETE, INSERT,  SELECT,  SELECT INTO,  

UPDATE, VALUES 또는 VALUES INTO SQL문이다.

이 명령문은 적용 업무 프로그램에 포함되거나  

대화식으로  발행될 수 있다.

 명령문은 동적으로 준비될 수 있는 실행 가능한 명령문이다.

      ex1> 간단한 SELECT문을 설명하고

           QUERYNO = 13이라는 태그를 표시한다.

EXPLAIN  PLAN  SET  QUERYNO = 13  FOR  SELECT  C1  FROM  T1

 


      ex2> 간단한 SELECT문을 설명하고

           QUERYTAG = 'TEST13' 표시를 합니다.

EXPLAIN  PLAN  SELECTION  SET  QUERYTAG = 'TEST13'

  FOR  SELECT  C1  FROM  T1

 

 


     ex3> 간단한 SELECT문을 설명하고 QUERYNO = 13과

QUERYTAG = 'TEST13'으로 태그를 붙인다.

EXPLAIN  PLAN  SELECTION  SET QUERYNO = 13 SET QUERYTAG =

  'TEST13’  FOR  SELECT  C1  FROM  T1

 

  


   ex4>  Explain 테이블이 존재하지 않으면

         Explain 정보를 확보한다.

EXPLAIN  ALL  FOR  SELECT  C1  FROM  T1

 

 


l       Visual Explain

   Visual Explain을 실행하기 위해 다음과 같이 explain 정보를

저장할 테이블을 생성해야 한다.

 /$HOME/sqllib/misc> db2   connect   to   sample

 /$HOME/sqllib/misc> db2   -tf   EXPLAIN.DDL

 

 ü       현재의 explain snapshot을 변경

   db2   set   current   explain   snapshot   yes

 

 ü       bindfile 내의 source 를 보기 위해 다음을 수행합니다.

   db2bfd   bindfile_name

 

 


REORG & RUNSTATS

 

 

l       reorgchk 수행

db2 -r out_file reorgchk current statistics on table tbl_name

  또는

  db2  reorgchk  update  statistics  on  table  system

 


 

      위의 명령을 수행하면  다음과  같은 결과를 얻을 수 있습니다.

Table statistics:

 F1: 100*OVERFLOW/CARD < 5

 F2: 100*TSIZE / ((FPAGES-1) * 4020) > 70

 F3: 100*NPAGES/FPAGES > 80

CREATOR NAME  CARD OV NP FP TSIZE F1 F2 F3 REORG

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

SYSIBM SYSCHECKS      -   -  -  -    -    -   -   -   ---

SYSIBM SYSDATATYPES  13  0  1  1  1027  0   -  100  ---

SYSIBM SYSFUNCTIONS 104  0  8  8   728  0  2   100  -*-

SYSIBM SYSINDEXES    57  17  3  5  9063  29  56  60 ***

 

Index statistics:

 F4: CLUSTERRATIO or normalized CLUSTERFACTOR > 80

 F5: 100*(KEYS*(ISIZE+10)+(CARD-KEYS)*4) / (NLEAF*4096) > 50

 F6: 90*(4000/(ISIZE+10)**(NLEVELS-2))*4096/ (KEYS*(ISIZE+10)+(CARD-  

    KEYS)*4)<100

CREATOR  NAME CARD  LEAF  LVLS ISIZE  KEYS  F4  F5  F6 REORG

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

Table: SYSIBM.SYSCHECKS

SYSIBM  IBM37            -     -     -     -      -    -    -    - ---

 

 

 위의 결과에서 REORG컬럼의 내용이 별표(*) 이면 그 테이블은 reorg가

 필요하고 하이폰(-)이면 정상이므로 reorg를 할 필요가 없습니다.

 

 

l       reorg 명령

db2 reorg table 테이블명 [INDEX 색인명] [USE 테이블공간명]

db2 reorg table tbl_name index idx_name use tempspace1 

 

  reorg명령은 해당 테이블의 데이터를 Physical 하게 재정렬하여

  조회의 Performance를 향상시킨다.

 

l       runstats 명령

db2  runstats on table 테이블명 [WITH DISTRIBUTION

        [AND [DETAILED] {INDEXES ALL | INDEX 색인명}] |

        {AND | FOR} [DETAILED] {INDEXES ALL | INDEX 색인명}]

        [SHRLEVEL {CHANGE | REFERENCE}]

db2  runstats  on  table  inst.albums  with  distribution

and  detailed  indexes all

 

 

 

  


DB2  Administration  Tools

 

 

l       Instance 작업

Instance란 데이터베이스가 운영되는 환경으로, 한 Instance

내에서는 유일한 데이터베이스 별명과  Authentication  type를

가져야 한다. 이러한 Instance는 여러 개 생성할 수 있으며

, 데이터베이스가 운영되는 환경을 복수로 가질수 있다.

Instance를 달리 표현하면 데이터베이스 관리자(dbm) 라고도

하는 데, 다른 데이터베이스 운영환경을 다루려면,

Instance 별로 데이터베이스 매니저를 시동해야 한다.

 

     root 로 login하여  다음의 디렉토리로 이동합니다.

    #  cd /usr/lpp/db2_05_00/instance

 

     Instance를 생성하기 위해  다음의 명령어를 사용합니다.

    #  db2icrt  -u  fenceid  dsna(instance 명)

   

    여기서 fenceid는 UDF(User Defined Function)의 owner로써  

    instance생성시 필요하다.

    Instance 의 삭제하는 명령은 다음과 같다.

    #  db2idrop  (instance 명)

 

     이미 생성된 Instance 의 리스트를 보려면

     다음의 명령어를 사용한다.

    #  db2ilist

 


 

l       권한

새로이 사용자를 추가 생성하여 Instance를 시동할 수 있게 하려면,

다음과 같이 그 사용자의 .profile을 변경 및 적용시키고,

dsna 사용자가 속한 cics group의 member이면 된다.

이러한 사용자들은 sysadm권한을 갖는 instance owner들로

데이터베이스 관리자 내의 어떠한 일도 수행할 수 있게 된다.

이보다 낮은 dbadm 권한을 데이터베이스별로 줄 수 있는데,

마찬가지로 새로운 사용자의 .profile을 변경및 적용시키고

grant 명령을 이용하여 권한을 부여한다.

물론 먼저  dbadm 권한을 부여할 데이터베이스에

먼저 연결되어 있어야 한다. 

.profile의 변경 및 grant 명령은 다음과 같다.

(여기서 dsna사용자는 cics group의 한  member라고 가정한다.)

#  vi  .profile

  .  /home/dsna/sqllib/db2profile

#  .  .profile

$  db2 connect  to  edi

$  db2 grant dbadm  on  database to (사용자 id  또는 group id)

 

 다음의  system table을  조회하여  해당 사용자가 어떤 권한을

 갖는지를  알 수 있다.

    $  db2  connect  to eddb  user  userid  using  password ;

    $  db2  “ select  *  from  syscat.dbauth “

    $  db2  “ select  *  from  syscat.tabauth “

    $  db2  “ select  *  from  syscat.colauth “

    $  db2  “ select  *  from  syscat.packageauth “

    $  db2  “ select  *  from  syscat.schemaauth “

  


      Ex) Public 권한 가진 사람

    $  db2  connect  to  eddb  user  userid  using  password

    $  db2 “ select * from syscat.dbauth where grantee='PUBLIC'“

 

 

PUBLIC는 해당 DB에 대해 connect, create table,

add new packages의 권한을 가지고 있다.

SYSIBM 의 grantor는  인증부여가   데이타베이스 관리자(DBM)에

의해 부여되고, 이 특별한 부여는 데이타베이스 생성 중에 만들

어진다.

NOFENCEAUTH 컬럼의 'N' 값은 PUBLIC가  NOT FENCED UDF

생성을 허용하지 않음을 나타낸다.

NOT FENCED Function은 함수Code와 데이터베이스에이젼트 코드

Firewall의 Protection없이 instance내에서 수행할 수 있다. 

Connect Authority를 갖는 어떤 User도 Fenced UDF를 정의할 수

있다. 위의 예에서처럼  Connect To PUBLIC는 Fenced UDF를 허용

하지 않는다.

데이터베이스 사용자가 가지고 있는 권한을 삭제하려면 다음과

같은 명령을 사용한다.

$  db2  revoke  connect, bindadd, createtab  on  database

  from  public

 


 

l       Data  Moving  Utility

 

ü       Export

 $  db2  export  to  educ.exp  of  ixf  messages  msg

  select  *  from  org

 

    table의 데이터 내용을  DEL,  IXF, WSF 형태로 반출할 수 있다.

    반출된 내용은 import 나  load  유틸리티를 사용하여 테이블로

    다시 반입할 수 있다.

  

   ü       Import

    일단 export 명령으로 반출된  파일이나 이미 DEL,ASC,IXF,WSF

    형태로 존재하는 파일은 LOAD 명령(WSF유형만 지원 안됨)이나

    IMPORT 명령으로DB의 TABLE로 데이타를 이동시킬 수 있다.

$  db2  import  from  educ.exp  of  ixf   messages

  msg.imp  create  into  userid.orgg  in  tablespace_name

 

     method  n ( column 명) 옵션을 부여할 수도 있습니다.

     그 옵션은 export된 table과 다른 column을  주는 경우의

     option 입니다.

 

    ü       Load

$  db2  load  from  educ.exp  of  ixf   messages

 msg.load  remote  file  educ.

replace  into  userid.orgg  for  exception  userid.exp11

 

 

     LOAD 는 IMPORT 보다  속도가 빠릅니다.

     왜냐하면, INDEX 가  생성되는 방법에 있어서,

     IMPORT는  IMPORT 되는 레코드 단위로 한번에 하나의 INDEX를

     만들지만, LOAD는 데이타의  LOAD 단계가 모두 끝난 이후에 BUILD

     단계에서 한꺼번에 INDEX를 만드는 특징을 갖고 있기 때문이다.

     특기할 만한 옵션은 다음과 같은 것들이 있다.

            method  (   L :   컬럼의 위치 (start,end)

                        N :   컬럼의 이름

                        P :   컬럼의 순서      )

            restart (   B :   index creation

                        D :   error 인 레코드 제거

                        N :   N 번째 레코드 부터 시작  )

 

  


l       테이블스페이스 및 테이블 생성,관리 및 삭제를 위한 명령

ü       테이블스페이스  및 테이블의 생성

  $  db2  connect  to  db_name  user  userid  using  password 

$  db2  create  regular  tablespace  dms04

 managed by database using

  (file '/dms/dms04'  1000) extentsize 2;

$  db2  create  table  test1

  (partno  integer,  subpart  integer)  in DMS04

 

  


ü       테이블스페이스  및 테이블의 상태

  $  db2  list  tablespaces 

  $  db2  list  tablespaces   show  detail  

  $  db2  list  tablespace  containers  for   tblspace_id  

$  db2  list  tablespace  containers  for   tblspace_id

   show   detail 

  $  db2  list   tables  for  all 

$  db2  "select  tbspace , definer , tbspaceid,  tbspacetype,

datatype  from syscat.tablespaces "   

$  db2  "select  tabname , tbspaceid,  tbspace,

index_tbspace ,  long_tbspace

        from  syscat.tables   where  tabname = 'SYSTABLES' "

$  du  -k

 

  


ü       테이블스페이스 및 테이블을 삭제

  $  db2  drop  tablespace  test1space

  $  db2  drop  table  userid.test1

 

  


l       DB Application 관리

DB  Application들의  상태를  보거나 강제로 DB Application을

kill하려고  할 때 다음의 명령을 이용한다.

  $  db2  list  applications  show  detail

  $  db2  force  application  ( agent-id );

                             --------

                           숫자 5자리

 

  


DB2 기타 유틸리티

 

 

l       Db2batch

SQL 조회에 대한 BMT용 유틸러티로써, 다음과  같이 사용합니다.

  $  db2batch  “SQL 조회문”

 

 


l       Db2look

DB2 통계 추출 툴로써, 다음과  같이 사용합니다.

  $  db2look  -d  db_name  -u  user_id   -p   -o   파일명

  


l       Db2exfmt

Explain 테이블 항목을 형식화한다.

데이타베이스명과 다른 규정화 정보가 제공되면,

이 툴은 정보에 대한 Explain 테이블을 조회하고 

그 결과를 형식화한다.(sqllib/misc에 위치)

 

l       Db2tbst

16진의 상태 값을 취하고("list tablespaces" 명령에서 제공됨)

그 상태를 해석한다.

  $  db2tbst 0x000c

        State = Quiesced Exclusive

               + Load Pending

 


l       Db2gov

적용업무에서 사용중인  데이타베이스가 어떤 것인지  알기 위해

주기적으로 DB2 스냅샷 모니터를 호출해서 어떤 적용업무가

Governor 구성 파일에서 지정한 한계를 초과하는 것으로 발견

되면, 이 적용업무가 종료되거나  (FORCEd) 또는 그 우선 순위가

변경된다.

 $  db2gov  start  <Database>  [nodenum <NodeNum>] 

                   <ConfigFile>  <LogFile>

 $  db2gov  stop  <Database>  [nodenum <NodeNum>]

 


 

   여기서 <ConfigFile>은 Governor configuration의 파일명을 말한다.

 

l       Lstaltsm

스냅샷 모니터에 대한 심각한 오류(alert)를 검색하기 위한

샘플 DDL(sqllib/samples/mon에 위치)

 

l       Sample.pv

스냅샷 모니터를 위한 샘플 성능 변수 프로파일

(sqllib/samples/mon에 위치)

 

l       Vesampl.ddl 

Visual Explain을 위한 스냅샷을 반출(export)하기 위한

샘플 DDL(sqllib/samples/ve에 위치)

 

l       Dynexpln

동적 SQL에 대하여 db2expln을 수행한다.

 $  dynexpln  [[-d <database>]  [-e <statement terminator>]

  [-f <input file>] [-g]  [-i]  [-t|

 -o  <output file> ]  [-s  <SQL statement>]

      [-u  <userid>  <password> ] ] [ -h | -?]

 


상기의 명령의 옵션은 다음과 같습니다.

 -e  <statement terminator>  =  SQL 구분자

(default 값은 no terminator)

 -g                         =  show optimizer plan graphs

 -h 또는 -?                  =  도움말

 -i                         =   show operator ID numbers

 -s <SQL statement>          =   보고자 하는 SQL 문

 -t                         =   terminal output desired

 

 


l       Db2ipxad

직접주소 지정모드를 사용하여 IPX/SPX 노드를 카탈로그화하는

원격클라이언트 시스템의 사용자를 위해 서버의 IPX/SPX**

인터네트워크주소를 리턴합니다.

 

l       Db2untag

sysadm이 "소유한" 데이타베이스의 컨테이너태그 정보를 삭제.

 

l       DB2/VM 과 관련된 사항

  ü       isql :

       ISQL을 사용하여 DB2/VM로부터의  액세스를 허용하기

위하여  더미(Dummy) 테이블을  작성합니다.

ü       sqldbsu :

     SQLDBSU를  사용하여  DB2/VM으로부터의  액세스를

     허용하기 위하여  더미 테이블을 작성한다.

 

l       저장 프로시듀어와 관련된 사항

  ü       storproc.ddl  :

      저장프로시듀어 pseudo_catalog DB2CLI.PROCEDURES

      생성하기 위한  샘플 DDL

ü       storproc.dml :

    저장 프로시듀어  pseudo_catalog DB2CLI.PROCEDURES

    로의 항목 삽입을  위한  샘플 DML

 

l       Rebind

기존의 bind 된 package를 다시 bind하고자 할 때 다음의 명령을

이용한다.

   $  db2  rebind package  inst.myapp(package 명)

 

 


 

DBM  CFG &  DB CFG  환경 변수

 

l       DBM CFG 환경 변수 수정

데이터베이스 Instance 환경을 구성합니다.

ü       query_heap_sz  :

       대부분 생략시 값으로 충분하고 ,  

       최소값으로는 aslheapsz의 최소 5배의 값으로 설정한다.

ü       rqrioblk :

       블로킹이 안된 커서의 경우 ,단일 sql 문으로

       전송되는 자료가 너무 커서 생략시 값으로 충분하지

       않은 경우가 있다.

ü       maxagents :  

       데이터베이스 연결시 마다  Agent가 부여되고,

       이 Agents의 최대수

ü       maxcagents   

       동시적인 데이터베이스 Coordinating Agent들의 최대 수

ü       tm_database  :

       데이터베이스 인스턴스가   트랜잭션 매니저 역할을

        경우에 그 제어 정보를 갖고 있는 데이터베이스 이름

ü       udf_mem_sz  : 

       Fenced UDF에 대한  공유 메모리 할당 크기

ü       numdb  :  동시에 활동 가능한 국지 데이터베이스의 수

ü       aslheapsz  :  Application 계층에서 사용할 Heap Size

 

l       DB CFG 환경 변수 변경

각 데이터베이스 별 환경을 구성합니다.

ü       maxappls   

       해당 데이터베이스에서 연결될 수 있는  클라이언트  

       업무의 개수를 나타낸다.

ü       avg_appls  :

       해당 데이터베이스에서 사용될 수 있는  클라이언트

       평균업무의 개수를 나타낸다.

 

제가 오라클을 DB2로 바꿀 때 고생했던 함수들 입니다. DB2 가 어찌나 예민하던지 조금만 자기 형식대로 안맞으면 에러 막내버리고 흑흑..

그냥 주로 썻던 함수들 정리해 봅니다.

 

1. NVL() => COALESCE()

2. DECODE() => CASE .. WHEN .. THEN .. END

 : 이함수는 converting 했을 때 열받았던 함수 이죠.. 다른 함수들은 앞에만 바꿔주면 되는데, 이함수는 일일이 when 절 then 절을 잘 구분해서 하나하나 써줘야 하니 ㅠㅠ 암튼 db2는 이런거는 좀 번거럽습니다.

3. ROWNUM => rowid

 : DB2 에서는 ROWNUM 이 없고 대체되는 것이 FETCH FIRST 1 ROW ONLY 라고 나오는데 아무리 써봐도 이거때메 에러 나더라구요~ 그래서 찾은게

FROM 절에 (SELECT ROWNUM() OVER() AS rowid, column1, column2, ... FROM 원래 테이블명 ) as temp 이렇게 써야 하더라구요~

예시) select rowid,b  from (select rownumber() over() as rowid, b from test) temp;

4. SYSDATE와 DUAL => CURRENT TIME 과 SYSIBM.SYSDUMMY1

 : 오라클에서의 시간알아볼때나 테이블이 없는경우로 테스트로 쓸 때 DUAL 을 쓰는데요~ DB2에서는 SYSIBM.SYSDUMMY1 으로 쓰죠~

 * SELECT SYSDATE FROM DUAL; => SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1; 으로 바뀔 수 있죠~

5. TO_DATE()

 : 그냥 DATE로 바꾸는 함수는 DB2에서 제공하는 함수로는 DATE() 라는 함수가 있는데요, 오라클처럼 쓰고 싶으면 UDF를 만들어서 사용하면 비슷하게 사용할 수 있습니다.(참조 : UDF첨부파일) 그런데 DATE는 TIMESTAMP를 많이 사용하는데요, TIMESTAMP_ISO(DATE | TIME | TIMESTAMP | VARCHAR) 로 TIMESTAMP로 바꿀 수 있습니다.

6. TO_CHAR()

 : CHAR() 라는 함수로 CHAR로 바꿀 수 있으며, 오라클 처럼 쓰려면 참조된 UDF로 추가하여 TO_CHAR를 쓸 수 있습니다.

7. UPPER() => UCASE()

8. 추가해야할 함수들[UDF함수 추가]

 1) LPAD()

 2) MONTHS_BETWEEN()

 3) LASTDAY()

 4) ADD_MONTHS()

9. 이건 함수 아니지만, OUTER JOIN 의 (+)은 안먹으니 LEFT OUTER JOIN, RIGHT OUTER JOIN 으로 다 바꿔야 합니다.

이 함수들은 주로 썼던 함수들이고요, 이거보다 더 많은 정보를 원하시는 분은 http://www.redbooks.ibm.com/abstracts/SG247048.html?Open 에서 PDF 파일을 받으셔서 참조하세요~

또한 오라클에서는 제공되나 DB2에서는 제공되지 않거나 좀 다르게 제공되는 함수들은 첨부파일로 올리니 참고하셈~



출처 : 뱌뱌 공부방 | 뱌뱌

 

 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)