해시파티션(Hash Partition) 에서 Add / Drop 같은 게 가능할까요? 아니 필요할까요??
뜬금없이 그런 생각이 들었는데, 얼핏 생각했을때는 당연히 필요없을 것으로 생각했었습니다.
Range 파티션처럼 년도가 늘어나는 경우가 있는 것도 아니니 말입니다.
그런데, 4개로 해시파티션되어 있는 것을 5개, 6개... 로 늘릴 수도 있는거 아닐까요??
이렇게 늘려주면 Disk I/O 분산도 더 좋아지고... 맞습니다..^^ 늘릴 수 있습니다. Add 커맨드 잘 동작합니다.
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 (sales_no)
(
partition SALES_P1,
partition SALES_P2,
partition SALES_P3,
partition SALES_P4
);
insert into SALES values (1, 2004, 05, 02, 'Sophia', to_date('19740502','yyyymmdd'), 65000, 'WA');
insert into SALES values (2, 2005, 03, 02, 'Emily', to_date('19750302','yyyymmdd'), 23000, 'OR');
insert into SALES values (3, 2006, 08, 02, 'Olivia', to_date('19760802','yyyymmdd'), 34000, 'TX');
insert into SALES values (4, 2007, 02, 02, 'Amelia', to_date('19770202','yyyymmdd'), 12000, 'CA');
insert into SALES values (5, 2008, 04, 02, 'Chloe', to_date('19780402','yyyymmdd'), 55000, 'FL');
위와 같이 테스트할 Hash Paritition 테이블을 만들고,
아래와 같이 파티션 Add 를 해보면 잘 동작하는 것을 확인할 수 있습니다.
근데, drop 은 안됩니다.
drop 을 하면 ORA-14255 에러가 발생합니다. Range, List 파티션에서만 가능하다고 나옵니다.
Hash 파티션에서는 drop 대신 coalesce 커맨드를 사용하면 됩니다.
coalesce 커맨드를 사용하면 파티션 갯수를 하나 줄여주고, 데이터를 재분배하기 때문에 drop 한 효과를 줍니다.
해시파티션에서 특정파티션을 Truncate 하거나 특정 파티션명을 Raname 하는 작업도 잘 동작합니다.
해시파티션에서 Merge 나 Split 은 안됩니다.
하지만, Merge 의 경우는 해시파티션에서는 Coalesce 와 결국 같은 개념이기 때문에, Coalesce 를 사용하면 되겠습니다.
'IT관련' 카테고리의 다른 글
워드(MS-Word)에서 디폴트 패러그래프(Paragraph) 세팅 - 영구적으로, 모든 워드 파일에 적용하는 방법 (0) | 2019.09.05 |
---|---|
오라클 해시파티션(Hash Partition)에서 Split 가능한가? (0) | 2019.09.05 |
Exadata SmartScan 확인 방법 - Realtime SQL Monitor 활용 (0) | 2019.08.10 |
오라클 통계정보 생성 방법 (analyze, dbms_utility, dbms_stats) (1) | 2019.08.10 |
오라클 통계정보의 중요성 (Importance of Oracle Statistics) (0) | 2019.08.10 |