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 |