본문 바로가기

IT관련

오라클 파티션 Split/Merge/Coalesce 샘플

오라클은 파티션테이블(Partition Table)에 대해 다양한 관리작업을 지원합니다.

이 페이지에서는 파티션을 분할하고, 합치는 작업을 해보겠습니다.

 

 

아래와 같은 List 파티션테이블에서 ..


create table SALES (
  sales_no       number,
  sale_year      number,
  sale_month     number,
  sale_day       number,
  customer_name  varchar2(30),
  birth_date     date,
  price          number,
  state          varchar2(2)
)
partition by list (state)
(
  partition P_EAST    values ('MA','NY','CT','NH','ME','MD','VA','PA','NJ'),
  partition P_WEST    values ('CA','AZ','NM','OR','WA','UT','NV','CO'),
  partition P_SOUTH   values ('TX','KY','TN','LA','MS','AR','AL','GA'),
  partition P_CENTRAL values ('OH','ND','SD','MO','IL','MI','IA')
);

 

 

1) 파티션 Split

 

기존 파티션을 여러개의 파티션으로 분할하는 명령어 입니다.

 

 

위 리스트 파티션에서 P_EAST 파티션을 3개로 분할해보겠습니다.

 


alter table SALES split partition P_EAST into 
  (partition P_EAST_1 values ('MA','NY','CT'),
   partition P_EAST_2 values ('NH','ME','MD'),
   partition P_EAST_3
  );

 

위 샘플에서는 P_EAST 파티션을 P_EAST_1, P_EAST_2, P_EAST_3 파티션으로 분할했습니다.

P_EAST1, P_EAST_2 파티션에 지정된 항목들이 들어가고, 나머지는 P_EAST_3 파티션으로 들어갑니다.

 

 

이때 주의할 게, Split 할 때 마지막 파티션에 values() 를 지정하면 ORA-14805 에러가 발생합니다.

 

 

Range 파티션의 경우도 마찬가지입니다.

Split 되는 마지막 파티션에는 values () 항목을 지정하지 않습니다.

 

 

 

2) 파티션 Merge

 

아래 샘플은 P_EAST_1, P_EAST_2, P_EAST_3 로 분할된 파티션을 다시 P_EAST 파티션으로 합치는 예제입니다.

 


alter table SALES merge partitions P_EAST_1, P_EAST_2, P_EAST_3 into partition P_EAST;

 

 

3) 파티션 Coalesce

 

Coalesce 커맨드는 Hash 파티션에서만 사용합니다.

Hash 파티션의 갯수를 줄일때 사용합니다.  Coalesce 커맨드를 실행하면, 파티션 갯수를 하나줄이고, 데이터를 다시 줄어든 갯수에 맞추어 균등하게 분할해줍니다.

 

위 Hash 테이블 생성 스크립트는 아래와 같이 4개의 해쉬 파티션을 만듭니다.

 

 

아래와 같이 Coalesce 커맨드를 실행합니다.


alter table SALES coalesce partition;

 

위 커맨드로 아래와 같이 파티션이 하나 줄어들었습니다.

 

 

근데, 잘 보면 단순히 하나의 파티션이 삭제된 게 아닙니다. 시스템에서 자동으로 부여한 파티션명이 다 바껴있는 것을 확인할 수 있습니다. 파티션 갯수가 4 -> 3 으로 줄어들면서 데이터를 다시 균등분할해서 파티션을 새로 만든 것입니다.

 

 

파티션 Add/Drop/Modify/Truncate/Rename 샘플 보기

▶ 오라클 파티션 종합 페이지 바로가기