MS-SQL 테이블 파티셔닝 시 동적으로 계속 파티션을 생성해 주어야 하는 관계로 슬라이딩 윈도우등의 기법을 사용해본
경험이 있지만.. Oracle에서는 Interval Partition이 이러한 수고스러움을 덜어준다.
말 그대로 특정 텀으로 자동 파티션을 구성해 주는 기능인데 한가지 문제점이라면 date나 정수형 등의 타입만을 지원한다는 점이다.
Mart와 같은 데이터를 구현할 때 Range 키 필드가 varchar 형태로 구현된 경우(YYYYMM등의 월 기준)가 이 경우 Interval Partition을 적용할 수 없다.
때문에 우회적으로 구현하기 위해서는 아래와 같이 가상 컬럼을 생성한 후 해당 컬럼으로 파티션을 구성하게 된다.
물론 이로 인해 발생할 수 있는 문제는…
1: CREATE TABLE MART.VVIP_ZZiZim
2: ( 3: REG_DT VARCHAR2(6), 4: MEMBER_NUM NUMBER(11), 5: PRICE NUMBER, 6: SALE NUMBER,7: REG_DT_DATE DATE AS (TO_DATE(TO_CHAR(REG_DT), 'YYYYMM')) VIRTUAL
8: )9: PARTITION BY RANGE(REG_DT_DATE)
10: INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
11: (12: PARTITION SYS_P10401 VALUES LESS THAN (TO_DATE('201207', 'YYYYMM')),
13: PARTITION SYS_P10402 VALUES LESS THAN (TO_DATE('201208', 'YYYYMM'))
14: ) 15: TABLESPACE MART_DATA 16: STORAGE 17: ( 18: INITIAL 80K19: NEXT 1M
20: ) 21: NOCOMPRESS;











덧글