오라클 파티션 질문드립니다 1 2 3,301

by 시정잡배 파티션 Partition List Range [2014.09.22 20:12:07]


안녕하세요

매일 눈팅만 하다 처음 글을 쓰게 되네요

파티션을 공부하다 막힌 부분이 있어 질문 드립니다.

예를들어

CREATE TABLE testTable
(
    . . .
    JOIN_DATE DATE NOT NULL,
    . . .
)
PARTITION BY RANGE( JOIN_DATE )
INTERVAL( NUMTOYMINTERVAL(1,'MONTH'))
(
    PARTITION P0 VALUES LESS THAN (TO_DATE(' 2014-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
);

이런식으로 테이블을 만들게되면 14년도의 해당 월에 대한 파티션들이 값이 들어올때 생길텐데요

그런데 여기서 문제가 생겼습니다.

2015년이 된다면 새로운 파티션이 생길텐데 저는 12개의 파티션만으로 데이터를 관리하고 싶습니다.

년도에 상관없이 1월달 파티션에는 1월달 값들만 들어가게 말이죠

리스트 파티션도 고민해보았는데 제 머리로는 DATE형식을 이용해서 1~12월의 값을 넣는 파티션을

만드는 방법을 모르겠습니다.

테이블 구조를 변경하지 않고 1~12월로 파티션 나누는 방법이 궁금합니다.

긴글 읽어주셔서 감사합니다.

by 비주류 [2014.09.22 21:43:04]
-- 11g 이상 virtual column 이용
CREATE TABLE testTable (
    join_date DATE,
    mm NUMBER(2) -- GENERATED ALWAYS
    AS ( EXTRACT(MONTH FROM join_date) ) -- VIRTUAL    
)
PARTITION BY RANGE(mm)
(
    PARTITION P01 VALUES LESS THAN (2),
    PARTITION P02 VALUES LESS THAN (3),
    PARTITION P03 VALUES LESS THAN (4),
    PARTITION P04 VALUES LESS THAN (5),
    PARTITION P05 VALUES LESS THAN (6),
    PARTITION P06 VALUES LESS THAN (7),
    PARTITION P07 VALUES LESS THAN (8),
    PARTITION P08 VALUES LESS THAN (9),
    PARTITION P09 VALUES LESS THAN (10),
    PARTITION P10 VALUES LESS THAN (11),
    PARTITION P11 VALUES LESS THAN (12),
    PARTITION P12 VALUES LESS THAN (13)
);

by 시정잡배 [2014.09.22 23:18:01]

Virtual Column 이라는 새로운 기술도 배워갑니다.

감사합니다.

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