[DB2] Table(Range) Partition 기본 테스트
- Databases/DB2
- 2020. 7. 29.
1. Range Key를 정한 후 테이블을 만든다.
create table t1(c1 int) in ts_table1
partition by range(c1)
(partition rp1 starting from 1 ending 10 in ts_att1,
partition rp2 starting from 11 ending 20 in ts_att2,
partition rp3 starting from 21 ending 30 in ts_att3);
2. 각 테이블에 데이터를 저장한다.
insert into t1 values(5);
insert into t1 values(15);
insert into t1 values(25);
3. select 문법으로 데이터를 조회한다.
C1
-----------
5
15
25
4. Range Partition Detach
alter table t1
detach partition rp1 into t1_old;
5. Select 로 Detach 여부 확인
C1
-----------
15
25
6. 새로운 Range Parition Attach
alter table t1
add partition rp4
starting (31) ending (40) in ts_att4;
7. 새로운 Data insert
insert into t1 values(35)
8. select로 조회
C1
-----------
15
25
35
9. 기존 Tablespace Attach
alter table t1
attach partition rp1
starting (1) inclusive ending (10) inclusive from t1_old;
-> SQL3601W The statement caused one or more tables to automatically be placed
in the Set Integrity Pending state. SQLSTATE=01586
Integrity Pending에 빠지게 된다.
10. Integrity Pending 해제
주의 - Integrity Pending 해제하기전 Exception 데이터를 넣어줄 테이블을 하나 생성해둔다.
db2 set integrity for t1 immediate checked for exception in t1 use t1_exp;
11. Select로 데이터 존재여부 확인
C1
-----------
5
15
25
35
주의)
1. 범위가 벗어난 데이터는 다음과 같은 에러를 뿌리며 입력이 않된다.
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0327N The row cannot be inserted into table "JHLSLE.T1" because it is
outside the bounds of the defined data partition ranges. SQLSTATE=22525
참고)
1. 새로운 Tablespace를 Attach할경우 데이터의 무결성 조사가 필요없기 때문에 바로 적용이 가능하지만
기존 데이터의 경우 참조무결성등 제약사항들을 검사해야 하기 때문에 Integrity Pending에 빠지게 된다.
2. 맨처음 테이블을 생성할때 Tablespace를 정해주는 이유는 테이블 껍데기가 저장되기 위한
Tablespace가 필요하기 때문이다. 물론 테이블 정보는 Catalog에 저장이 된다.
3. Partition Table인 경우 Tablespace ID는 -6, Table ID 는 -32768,-32765로 나타나게 된다.
4. Data Partition 확인 SQL
SELECT CHAR(tabschema, 10)tabschema, CHAR(tabname,15)tabname
FROM SYSCAT.TABLES
WHERE tbspaceid = -6 AND tableid in (-32768,-32765)
옵션)
inclusive : 값 포함
exclusive : 값 제외
특정한 옵션이 없다면 기본적으로 inclusive
※도움이 되셨다면 광고클릭 한번 부탁드립니다.※
'Databases > DB2' 카테고리의 다른 글
[DB2] DB2 - DB2 Federation 서버 구성 (0) | 2020.08.04 |
---|---|
[DB2] Federation 서버 구성 (0) | 2020.08.02 |
[DB2] DB2 로그들 (0) | 2020.07.31 |
[DB2] Backup & Restore(Single DB) (0) | 2020.07.30 |
[DB2] 9.7버전 FixPack 적용방법 (0) | 2020.07.27 |