오라클은 Range, List, Hash 파티션을 지원하고, 이들간의 다양한 조합을 지원합니다.
이중에서 아래는 Hash 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 hash (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,
partition SALES_P2,
partition SALES_P3,
partition SALES_P4
);
위 스크립트에서는 birth_date 컬럼을 파티션키로 하는 Hash 파티션을 메인 파티션으로 만들고,
그 파티션들을 다시 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 키워드를 테이블 뒤에 붙여서 사용하면 됩니다.
Hash 파티션에서 이름지정을 생략하면 더 간단하게 생성 SQL문을 만들 수도 있습니다.
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 hash (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)
)
partitions 4;
Hash-Range 파티션의 경우 서브파티션명을 지정했더라도, 파티션명과 서브파티션명 모두 Oracle DBMS 에의해 자동으로 정해집니다.
'IT관련' 카테고리의 다른 글
오라클 병렬처리 Parallel DOP (Degree of Parallelism) (0) | 2019.06.30 |
---|---|
오라클 파티션테이블 기본개념 정리 (Oracle Partition Table Basics) (0) | 2019.06.29 |
오라클 복합파티션(Composite Partition) Hash + List 샘플 (11g ~ ) (0) | 2019.06.29 |
오라클 복합파티션(Composite Partition) Hash + Hash 샘플 (11g ~ ) (0) | 2019.06.29 |
오라클 복합파티션(Composite Partition) List + Range 샘플 (11g ~ ) (0) | 2019.06.29 |