안녕하세요
매일 눈팅만 하다 처음 글을 쓰게 되네요
파티션을 공부하다 막힌 부분이 있어 질문 드립니다.
예를들어
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월로 파티션 나누는 방법이 궁금합니다.
긴글 읽어주셔서 감사합니다.
-- 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) );