5.5.2 Composite Range-List Partitioning

 
 - Range방식을 사용하여 데이터를 Partitioning하고 각각의 파티션 내에서 List 방식을 이용하여 Sub-Partitioning을 하는 방법 입니다.
 
 - Composite Range-Hash method와는 달리 이 방법은 각 row가 어느 서브파티션에 속하게 될지를 조절할 수 있습니다.
 
 - 그러나, multiple subpartition keys는 지원하지 않습니다. 이는 List 파티션이 지원하지 않기 때문이며, 오직 하나의 column만 key partition으로 가능합니다.


 
파티션 테이블 생성


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)   
);
  



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


 
데이터 조작
 
아래와 같이 데이터를 INSERT 하고 저장된 데이터를 확인해 봅니다.


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;

 


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


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


DBA_PART_TABLES, USER_TAB_PARTITIONS, USER_TAB_SUBPARTITIONS 데이터 사전을 통하여 파티션 테이블 정보를 조회 할 수 있습니다.


 
파티션 추가


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)



좀 더 자세한 파티션 관리는 오라클 문서의 파티션 관리 표를 참고 하시기 바랍니다.
http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10739/partiti.htm#i1007638



  ================================================
    * 데이터베이스 정보공유 커뮤니티 oracleclub.com
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================

'DB > Oracle 10g 강좌' 카테고리의 다른 글

RAC(Real Application Cluster)  (0) 2009.10.31
Partition Index  (0) 2009.10.31
Composite Range-Hash Partitioning  (0) 2009.10.31
List Partition  (0) 2009.10.31
Hash Partition  (0) 2009.10.31
Posted by 야동우
,