본문 바로가기

IT관련

오라클 복합파티션(Composite Partition) Range + Hash 샘플 (8i ~ )

오라클은 Range, List, Hash 파티션을 지원하고, 이들간의 다양한 조합을 지원합니다.

이중에서 아래는 Range Partition + Hash Sub Partition 샘플입니다.

 


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 range (birth_date)
subpartition by hash (sales_no) subpartition template
(
  subpartition S1, 
  subpartition S2,
  subpartition S3,
  subpartition S4
)
(
  partition SALES_P1 values less than (to_date('1975/01/01','yyyy/mm/dd')),
  partition SALES_P2 values less than (to_date('1978/01/01','yyyy/mm/dd')),
  partition SALES_P3 values less than (maxvalue)
);

 

위 스크립트에서는 birth_date 컬럼을 파티션키로 하는 Range 파티션을 메인 파티션으로 만들고,

그 파티션들을 다시 sales_no 컬럼을 서브파티션키로 하는 Hash 서브파티션으로 만들어 복합파티션을 구성하였습니다.

 

서브파티션명은 "메인 파티션명 + 지정한 서브파티션명" 과 같이 파티션이름을 붙여서 만들어집니다.

 

 

서브파티션 정보를 조회할 때는 ALL_TAB_SUBPARTITIONS 딕셔너리뷰에서 조회하면 됩니다.

 


set linesize 200
col table_owner for a20
col table_name for a25
col partition_name for a25
col subpartition_name for a25
break on table_owner on table_name on partition_name
  
select table_owner, table_name, partition_name, subpartition_name, num_rows, tablespace_name
from ALL_TAB_SUBPARTITIONS
where table_name = 'SALES'
order by 1,2,3,4;

 

위 샘플에서는 각 파티션에 Tablespace 를 따로 지정하지 않아서 디폴트 테이블스페이스인 USERS 에 만들어졌습니다.

Tablespace 를 파티션별로 따로 지정할 수도 있습니다. 

 

특정 파티션만 조회하고자하는 경우에는 partion 또는 subpartition 키워드를 테이블 뒤에 붙여서 사용하면 됩니다.

 

 

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