1. Range 파티셔닝을 이용할 때, 정의되지 않은 파티션에 대해서 insert시 에러가 발생합니다.

 
 

create table sales6

(

sales_id number,

sales_dt date

)

partition by range (sales_dt)

(

partition p0701 values less than (to_date(‘2014-02-01′,’yyyy-mm-dd’)),

partition p0702 values less than (to_date(‘2014-03-01′,’yyyy-mm-dd’))

);

 
 

아래와 같은 에러가 발생합니다.


 
 

이런 상황을 방지 하기 위해서는 Range 파티션의 경우 insert 하기 전에 미리 파티션을 정의 하여야 합니다.

   2. Interval 파티셔닝의 경우 미리 파티셔닝을 정의하지 않아도 정해진 조건에 의해 해당 레코드 insert시 파티션이 자동생성 됩니다.(11g NewFeature)  

create table sales7

(

sales_id number,

sales_dt date

)

partition by range (sales_dt)

interval (numtoyminterval(1,’MONTH’))

(

partition p0701 values less than (to_date(‘2014-02-01′,’yyyy-mm-dd’))

);

 
 

현재 파티션 정의 내용


 
 

2014-03-01으로 insert 해보겠습니다.

SQL> insert into sales7 values(1,to_date(‘2014-03-01′,’yyyy-mm-dd’));

 
 

자동으로 파티션네임이 지정되고 파티션 정의가 된 것을 확인할 수 있습니다.


 
 

 
 

insert되는 레코드에 따라 자동으로 파티션이 만들어지기 때문에 파티션이 없어 에러가 나는 상황을 미연에 방지할 수 있습니다.

 
 

  1. Tablespace 지정.

    파티셔닝 생성 구문 중 interval 다음에 아래 구문을 넣어줍니다.

     
     

    interval (numtoyminterval(1,’MONTH’))

    store in (TS1,TS2,TS3)

     
     

    TS1, TS2, TS3 테이블스페이스에 대해 round-robin방식으로 저장됩니다.

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다