DB/DB2

DB2 운영 명령어 모음

나이트로 2011. 8. 10. 11:17

DB2 운영 명령어 모음 - 01

서버 구성 파일             db2 get dbm cfg
인스턴스 이름을 변경하거나, service name, port 등을 변경             winntsystem32driversetcservices 파일수정
인스턴스 레벨의 변수를 수정             db2 update dbm cfg using [파라미터] [값]
DB2 Start             db2start
DB2 Stop             db2stop
                          db2 deactivate db (db2 activate db 로 메모리 상주시)
                          db2 force application all
                          db2stop
DB 연결끊기             db2 terminate
DB2 확인                          시작프로그램>IBM DB2>일반관리도구>제어센터
db 생성              db2  create  db  database명
db 연결              db2  connect to  database명  user userid using password
Tablespace의 정보       db2  list  tablespaces |  more
                                       db2 list tablespace show detail | more
Table의 list                          db2  list  tables  for  all  |  more
Table의 column 정보             db2 “select  tabschema,  tabname,  colname,  typename,
                                       length, scale,  default,  nulls from  syscat.columns “
                                       제어센터 이용
db 목록            db2 list db directory
 
tablespace(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)”
TableSpace가 Backup Pending 상태에 빠졌을 경우           
             $  db2 list tablespaces | more
             $  db2 backup database depsdb tablespace GisaTBS ( ex. GisaTBS가 백업 보류 )
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
에러 메세지 발생시             $HOME/sqllib/db2dump 디렉토리내의 db2diag.log 파일을 조사
                                       db2   “ ?   Sql0805 ”             ex. db2  " ?  list "
갑자기 느려졌을 경우- LOCK 상태확인                          db2 get snapshot for locks on depsdb
                            - Index 설정 여부             dynexpln ?d depsdb “select …..” -o explain.out  
손상된 데이터베이스의 강제 삭제
$HOME/instance_name$  rm   -r   SQL0000x  디렉토리 삭제 0000x는 디비 생성 순서, 손상된 디비의 물리적 디렉토리
 
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  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
DB Application 관리                           $  db2  list  applications  show  detail
                                                                 $  db2  force  application  ( agent-id ); agent-id는 숫자5자리
Db2batch - SQL 조회에 대한 BMT용 유틸러티       $  db2batch  “SQL 조회문”
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
             
             제어센터를 실행시킨 후 해당 데이터베이스에서 오른쪽 마우스버튼을 클릭 
 
limt 쿼리                                 select * from staff fetch first 5 rows only
select empno, lastname, yyt 
from ( select empno, lastname, firstnme, 
                          rownumber() over (order by empno) as yyt 
             from employee
      ) as t 
where yyt between 20 and 30
 
ex.         select empno, row_number() over() as n from employee ;
             select empno, row_number() over(order by empno desc) as n from employee ;
             select job, years, row_number() over(partition by job order by years) as n from staff ;
 
autoincrement 쿼리 
CREATE TABLE TESTTB 
             (TEST INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE ) 
             ,NAME VARCHAR (15) 
             ,YEAR INTEGER ) ;
 
A. Sequence 생성 
① db2 connect to sample 
② db2 “create sequence s1 start with 2 increment by 3 maxvalue 20 cycle” 
B. NEXTVAL 
① db2 “values NEXTVAL FOR s1” 
② db2 “insert into myempl values (NEXTVAL FOR s1, ‘JOHN’, 50000) 
C. Sequence 변경 
① db2 “alter sequence s1 minvalue 1” 
D. Sequence 삭제 
① db2 “drop sequence s1 restrict” 
 
auto commit 설정
db2cli.ini 파일에서 설정 또는 odbc connect 에서 설정.
명령센터>자동확약 체크
 
heap 크기 바꾸기 - 바꾸고난후 db2stop ; db2start;
db2 update db cfg for db이름 using APPLHEAPSZ 크기 ; 
db2 update db cfg for db이름 using dbheap 크기
db2 update db cfg for db이름 using catalogcache_sz 크기
 
제어센타에서 칼럼을 변경하거나 삭제, 데이타 삽입
             데이터 삽입은 제어센터의 아이콘들중 명령센터 프로그램을 실행 .
             삭제 버튼은 처음에 테이블을 만들때만 쓰입니다. 즉 만들어진 후엔 기능을 사용할 수 없음.
 
현재날짜 char로 변환
SUBSTR(CHAR(CURRENT DATE,ISO),1,4) CONCAT SUBSTR(CHAR(CURRENT DATE,ISO),6,2) CONCAT SUBSTR(CHAR(CURRENT DATE, ISO),9,2)
 
dual 테이블사용
SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1
 
insert into문
insert into aaa (TDM_ID, FEM_NO, ST_Dimension, ST_Spring_Rate )
select '2010', FEM_NO, ST_Dimension, ST_Spring_Rate from aaa where tdm_id = '1000'
또는 
insert into aaa (TDM_ID, FEM_NO, ST_Dimension, ST_Spring_Rate )
= (select '2010', FEM_NO, ST_Dimension, ST_Spring_Rate from aaa where tdm_id = '1000')
 
CLP바로실행하기
db2cmd -c -i -w db2



<포인트>

비정상적인 쿼리문 종료로 lock이 걸렸을때

1.

db2 get snapshot for locks on alm

이 명령을 이용하여 락이 걸린 넘버를 찾아냄

만약 락 걸린 내용이 좀 많으면

db2 get snapshot for locks on alm > 파일명.txt

이 명령을 이용해서, 파일을 view하면 됨


2.

db2 "force application (넘버)"

이 명령을 이용하여 해당 넘버의 lock을 종료시킴

 출처 - 
http://www.starhost.co.kr

'DB > DB2' 카테고리의 다른 글

DB2 check list  (0) 2011.08.10
DB2관련 Processor 들 정리  (0) 2011.08.10
DB2 기초  (0) 2011.07.15
DB2 SQLSTATE 메시지  (0) 2010.03.16