본문 바로가기

IT관련

오라클 복합파티션(Composite Partition) List + List 샘플 (11g ~ )

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

이중에서 아래는 List Partition + List 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 list (state)
subpartition by list (sale_year) subpartition template
(
  subpartition S1 values (2004, 2005),
  subpartition S2 values (2006, 2007),
  subpartition S3 values (2008, 2009)
)
(
  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')
);

 

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

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

 

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

 

서브파티션 정보를 조회할 때는 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 키워드를 테이블 뒤에 붙여서 사용하면 됩니다.

 

 

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