Oracle Range, Hash 파티션의 경우, 파티션키 컬럼을 여러개의 컬럼으로 구성할 수 있습니다.
아래는 Range 파티션 샘플 ...
create table SALES (
sales_no number,
sale_year number,
sale_month number,
sale_day number,
customer_name varchar2(30),
birth_date date,
price number
)
partition by range (sale_year, sale_month, sale_day)
(
partition SALES_P1 values less than (2005, 01, 01),
partition SALES_P2 values less than (2006, 01, 01),
partition SALES_P3 values less than (2007, 02, 02)
);
sale_year, sale_month, sale_day 3개의 컬럼을 합쳐서 파티션키로 사용하였습니다.
아래는 Hash 파티션 샘플 ...
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, customer_name)
partitions 4;
birth_date 와 customer_name 컬럼을 합쳐서 Hash 파티션의 파티션키로 사용하였습니다.
Hash 파티션의 경우, 해쉬함수에 의해 알아서 데이타가 들어가기 때문에, 어떤 데이터가 어느 파티션에 들어갈지에 대해일반적으로 관심이 없습니다.
하지만, Range 파티션의 경우는 관심이 가죠.
Range 파티션에서 파티션범위가 less than 으로 되어 있기 때문에, 원래 작은 값만 들어올 수 있고, 값이 같은 경우는 해당 파티션으로 들어갈 수 없었습니다.
하지만, 파티션키 컬럼이 여러개인 경우는 먼저 첫번째 컬럼을 비교해서 값이 크면 당연히 못들어가겠지만, 같은 경우는 다음 컬럼을 비교합니다.
위에서는
첫번째로 2007 을 비교하고 SALES_P3 파티션의 조건값과 같기 때문에,
두번째 값인 02 를 비교하고 이것도 같으니까
세번째 값인 01 를 비교해서 작으니까 해당 파티션으로 데이타가 Insert 될 수 있었습니다.
세번째 값이 만약 02 였다면 값이 조건값과 같아지기 때문에 ORA-14400 에러가 발생합니다.
'IT관련' 카테고리의 다른 글
오라클 복합파티션(Composite Partition) List + List 샘플 (11g ~ ) (0) | 2019.06.29 |
---|---|
오라클 복합파티션(Composite Partition) List + Hash 샘플 (11g ~ ) (0) | 2019.06.29 |
오라클 Reference Partitioning (참조 파티션, 레퍼런스 파티션) (0) | 2019.06.29 |
오라클 파티션 Auto List Partitioning 기능 사용 방법 (자동 리스트 파티셔닝) (0) | 2019.06.29 |
오라클 파티션 Auto Interval Partitioning 기능 사용 방법 (0) | 2019.06.28 |