DB2 명령어 모음

서버 구성 파일 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

SQL파일 실행하기

db2 -svtf 파일명.sql

참조. http://database.sarang.net

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

[DB2] DB2에서 JDBC 연결하기  (0) 2008.09.20
[DB2] DB2 - SQL state [54048]; error code [-1585];  (0) 2008.09.20
[ORACLE] 파티션테이블  (0) 2008.09.19
[ORACLE] ERROR 관련  (0) 2008.09.19
[MSSQL] 날짜 형식 변환  (0) 2007.06.29

+ Recent posts