[DB2] Table(Range) Partition 기본 테스트

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

Designed by JB FACTORY