Oracle 10g 강좌
Composite Range-List Partitioning 3 0 99,999+

by 구루비 COMPOSITE PARTITION PARTITION TABLE RANGE-LIST PARTITION 파티션 [2006.06.18]


Composite Range-List Partitioning

  - Range방식을 사용하여 데이터를 Partitioning하고 각각의 파티션 내에서 List 방식을 이용하여 Sub-Partitioning을 하는 방법 입니다.

  - Composite Range-Hash method와는 달리 이 방법은 각 row가 어느 서브파티션에 속하게 될지를 조절할 수 있습니다.

  - 그러나, multiple subpartition keys는 지원하지 않습니다. 이는 List 파티션이 지원하지 않기 때문이며, 오직 하나의 column만 key partition으로 가능합니다.

① 파티션 테이블 생성

  deptno를 Range Partition을 하고, 2차로 job 컬럼 값을 List Partition에 의해 분리하여 데이터를 저장 합니다

 
SQL> CREATE TABLE emp_range_list
       (EMPNO NUMBER NOT NULL,
        ENAME VARCHAR2(10),
        JOB VARCHAR2(9),
        MGR NUMBER(4),
        HIREDATE DATE,
        SAL NUMBER(7, 2),
        COMM NUMBER(7, 2),
        DEPTNO NUMBER(2))
     PARTITION BY RANGE (deptno)
     SUBPARTITION BY LIST (job)
    (PARTITION emp_p1 VALUES LESS THAN (11)
       (SUBPARTITION sub1_job_p1 VALUES ('MANAGER') TABLESPACE ASSM_TBS1,
        SUBPARTITION sub1_job_p2 VALUES ('SALESMAN') TABLESPACE ASSM_TBS2,
        SUBPARTITION sub1_job_p3 VALUES ('ANALYST') TABLESPACE ASSM_TBS3,
        SUBPARTITION sub1_job_p4 VALUES ('PRESIDENT', 'CLERK') TABLESPACE ASSM_TBS4),
     PARTITION emp_p2 VALUES LESS THAN (21)
       (SUBPARTITION sub2_job_p1 VALUES ('MANAGER') TABLESPACE ASSM_TBS1,
        SUBPARTITION sub2_job_p2 VALUES ('SALESMAN') TABLESPACE ASSM_TBS2,
        SUBPARTITION sub2_job_p3 VALUES ('ANALYST') TABLESPACE ASSM_TBS3,
        SUBPARTITION sub2_job_p4 VALUES ('PRESIDENT', 'CLERK') TABLESPACE ASSM_TBS4),
     PARTITION emp_p3 VALUES LESS THAN (31)
       (SUBPARTITION sub3_job_p1 VALUES ('MANAGER') TABLESPACE ASSM_TBS1,
        SUBPARTITION sub3_job_p2 VALUES ('SALESMAN') TABLESPACE ASSM_TBS2,
        SUBPARTITION sub3_job_p3 VALUES ('ANALYST') TABLESPACE ASSM_TBS3,
        SUBPARTITION sub3_job_p4 VALUES ('PRESIDENT', 'CLERK') TABLESPACE ASSM_TBS4) ,
     PARTITION emp_p4 VALUES LESS THAN (41)
       (SUBPARTITION sub4_job_p1 VALUES ('MANAGER') TABLESPACE ASSM_TBS1,
        SUBPARTITION sub4_job_p2 VALUES ('SALESMAN') TABLESPACE ASSM_TBS2,
        SUBPARTITION sub4_job_p3 VALUES ('ANALYST') TABLESPACE ASSM_TBS3,
        SUBPARTITION sub4_job_p4 VALUES ('PRESIDENT', 'CLERK') TABLESPACE ASSM_TBS4) );
    

② 데이터 조작

  아래와 같이 데이터를 INSERT 하고 저장된 데이터를 확인해 봅니다. 데이터를 확인해 보면 메인 파티션은 deptno를 기준으로 서브파티션은 job을 기준으로 데이터가 조회 됩니다.

 
INSERT INTO emp_range_list VALUES(1, 'SMITH',  'CLERK',     7902, SYSDATE,  800, NULL, 20);
INSERT INTO emp_range_list VALUES(2, 'ALLEN',  'SALESMAN',  7698, SYSDATE, 1600,  300, 30);
INSERT INTO emp_range_list VALUES(3, 'WARD',   'SALESMAN',  7698, SYSDATE, 1250,  500, 30);
INSERT INTO emp_range_list VALUES(4, 'JONES',  'MANAGER',   7839, SYSDATE,  2975, NULL, 20);
INSERT INTO emp_range_list VALUES(5, 'MARTIN', 'SALESMAN',  7698, SYSDATE, 1250, 1400, 30);
INSERT INTO emp_range_list VALUES(6, 'BLAKE',  'MANAGER',   7839, SYSDATE,  2850, NULL, 30);
INSERT INTO emp_range_list VALUES(7, 'CLARK',  'MANAGER',   7839, SYSDATE,  2450, NULL, 10);
INSERT INTO emp_range_list VALUES(8, 'SCOTT',  'ANALYST',   7566, SYSDATE, 3000, NULL, 20);
INSERT INTO emp_range_list VALUES(9, 'KING',   'PRESIDENT', NULL, SYSDATE, 5000, NULL, 10);
INSERT INTO emp_range_list VALUES(10, 'TURNER', 'SALESMAN',  7698,SYSDATE,  1500,    0, 30);
INSERT INTO emp_range_list VALUES(11, 'ADAMS', 'CLERK', 7788,SYSDATE,1100,NULL,20);
INSERT INTO emp_range_list VALUES(12, 'JAMES',  'CLERK',     7698, SYSDATE,   950, NULL, 30);
INSERT INTO emp_range_list VALUES(13, 'FORD',   'ANALYST',   7566, SYSDATE,  3000, NULL, 20);
INSERT INTO emp_range_list VALUES(14, 'MILLER', 'CLERK',     7782,  SYSDATE, 1300, NULL, 10);  
COMMIT;


SELECT empno FROM emp_range_list PARTITION (emp_p1); --> 7, 9, 14
SELECT empno FROM emp_range_list SUBPARTITION (sub1_job_p1); --> 7
    

③ 파티션 추가
 
SQL> ALTER TABLE emp_range_list
     ADD PARTITION emp_p5 VALUES LESS THAN (51)
       (SUBPARTITION sub5_job_p1 VALUES ('MANAGER') TABLESPACE ASSM_TBS1,
        SUBPARTITION sub5_job_p2 VALUES ('SALESMAN') TABLESPACE ASSM_TBS2,
        SUBPARTITION sub5_job_p3 VALUES ('ANALYST') TABLESPACE ASSM_TBS3,
        SUBPARTITION sub5_job_p4 VALUES ('PRESIDENT', 'CLERK') TABLESPACE ASSM_TBS4)
    

- 강좌 URL : http://www.gurubee.net/lecture/1913

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입