오라클은 Range, List, Hash 파티션을 지원하고, 이들간의 다양한 조합을 지원합니다.
이중에서 아래는 Range Partition + Range 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 range (sales_no) subpartition template
(
subpartition S1 values less than (3),
subpartition S2 values less than (5),
subpartition S3 values less than (maxvalue)
)
(
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 컬럼을 서브파티션키로 하는 Range 서브파티션으로 만들어 복합파티션을 구성하였습니다.
서브파티션명은 "메인 파티션명 + 지정한 서브파티션명" 과 같이 파티션이름을 붙여서 만들어집니다.
서브파티션 정보를 조회할 때는 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 키워드를 테이블 뒤에 붙여서 사용하면 됩니다.
'IT관련' 카테고리의 다른 글
오라클 Global Partitioned Index (글로벌 파티션 인덱스) (0) | 2019.06.26 |
---|---|
오라클 Local Partitioned Index (로컬 파티션 인덱스) (0) | 2019.06.26 |
오라클 복합파티션(Composite Partition) Range + List 샘플 (9i ~ ) (0) | 2019.06.23 |
오라클 복합파티션(Composite Partition) Range + Hash 샘플 (8i ~ ) (0) | 2019.06.23 |
오라클 Literal SQL 체크하는 방법 (0) | 2019.06.23 |