Oracle] varchar 타입 컬럼에 Interval 파티션 구현 Oracle

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 80K
  19:     NEXT 1M
  20: )
  21: NOCOMPRESS;


덧글

댓글 입력 영역

Google Analytics