이번 포스팅은 테이블 파티션에 대한 기능을 정리한 글입니다.
아래의 블로그의 글을 완전 많이 참고하여 테스트해본 결과를 정리한 것입니다.
출처 : https://jack-of-all-trades.tistory.com/82
1.테이블 파티션 Split
파티션 테이블을 다시 여러개의 파티션 테이블로 나눠주는 명령어입니다.
명령어
ALTER TABLE [테이블명] SPLIT PARTITION [파티션명] INTO
(PARTITION [새 파티션명1] VALUES ('값'),
PARTITION [새 파티션명2] VALUES ('값')
...
PARTITION [새 파티션명n]
);
1.테스트 테이블 생성 (리스트 파티션)
create table PART_TEST (
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)
(
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')
);
2.확인
TABLE_OWNER TABLE_NAME PARTITION_NAME HIGH_VALUE
--------------------------------------------------------------------------------------------------------------------------------
TEST PART_TEST P_CENTRAL 'OH', 'ND', 'SD', 'MO', 'IL', 'MI', 'IA'
TEST PART_TEST P_EAST 'MA', 'NY', 'CT', 'NH', 'ME', 'MD', 'VA', 'PA', 'NJ'
TEST PART_TEST P_SOUTH 'TX', 'KY', 'TN', 'LA', 'MS', 'AR', 'AL', 'GA'
TEST PART_TEST P_WEST 'CA', 'AZ', 'NM', 'OR', 'WA', 'UT', 'NV', 'CO'
3.스플릿 실행
alter table PART_TEST split partition P_EAST into
(partition P_EAST_1 values ('MA','NY','CT'),
partition P_EAST_2 values ('NH','ME','MD'),
partition P_EAST_3
);
4.확인
TABLE_OWNER TABLE_NAME PARTITION_NAME HIGH_VALUE
--------------------------------------------------------------------------------------------------------------------------------
TEST PART_TEST P_CENTRAL 'OH', 'ND', 'SD', 'MO', 'IL', 'MI', 'IA'
TEST PART_TEST P_EAST_1 'MA', 'NY', 'CT'
TEST PART_TEST P_EAST_2 'NH', 'ME', 'MD'
TEST PART_TEST P_EAST_3 'VA', 'PA', 'NJ'
TEST PART_TEST P_SOUTH 'TX', 'KY', 'TN', 'LA', 'MS', 'AR', 'AL', 'GA'
TEST PART_TEST P_WEST 'CA', 'AZ', 'NM', 'OR', 'WA', 'UT', 'NV', 'CO'
2.파티션 테이블 MERGE
파티션 테이블들을 하나의 파티션 테이블로 합치는 명령어입니다.
명령어
ALTER TABLE [파티션명] MERGE PARTITIONS [기존 파티션명1],[기존 파티션명2]...,[기존 파티션명n] into [새 파티션명];
기존에 Split으로 나눴던 파티션테이블을 다시 원래의 파티션인 P_EAST로 합쳐보겠습니다.
1.명령어 수행
alter table PART_TEST merge partitions P_EAST_1, P_EAST_2, P_EAST_3 into partition P_EAST;
2.확인
TABLE_OWNER TABLE_NAME PARTITION_NAME HIGH_VALUE
--------------------------------------------------------------------------------------------------------------------------------
TEST PART_TEST P_CENTRAL 'OH', 'ND', 'SD', 'MO', 'IL', 'MI', 'IA'
TEST PART_TEST P_EAST 'MA', 'NY', 'CT', 'NH', 'ME', 'MD', 'VA', 'PA', 'NJ'
TEST PART_TEST P_SOUTH 'TX', 'KY', 'TN', 'LA', 'MS', 'AR', 'AL', 'GA'
TEST PART_TEST P_WEST 'CA', 'AZ', 'NM', 'OR', 'WA', 'UT', 'NV', 'CO'
3.파티션 테이블 Coalesce
해당 명령어는 Hash 테이블에서만 가능한 기능이며, 파티션을 합쳐주는 명령어입니다.
명령어
alter table [파티션 테이블 명] coalesce partition;
1.Hash 파티션 테이블 생성
create table PART_TEST2 (
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)
partitions 4
;
2.확인
TABLE_OWNE TABLE_NAME PARTITION_HIGH_VALUE
---------- ---------- ----------
TEST PART_TEST2 SYS_P1621
TEST PART_TEST2 SYS_P1622
TEST PART_TEST2 SYS_P1623
TEST PART_TEST2 SYS_P1624
3.명령어 수행
alter table PART_TEST2 coalesce partition;
4.확인
TABLE_OWNE TABLE_NAME PARTITION_HIGH_VALUE
---------- ---------- ----------
TEST PART_TEST2 SYS_P1621
TEST PART_TEST2 SYS_P1622
TEST PART_TEST2 SYS_P1623
4개 였던 파티션테이블이 3개로 줄어들었습니다.
테스트한 블로그와 결과가 다른것은 테스트블로그는 hash 파티션 테이블이 3개로 바뀔 시 파티션 테이블이 새로운 파티션테이블로 이름이 변경되었지만 제가 테스트를 했을 때에는 이름이 그대로고 하나만 줄어들었습니다.
(저의 테스트 환경은 Oracle 12cR2)
이상입니다.
'Oracle > 운영' 카테고리의 다른 글
BULK INSERT (대량 INSERT 작업) 일반INSERT 작업과 비교 (0) | 2021.11.18 |
---|---|
통계정보 관련 딕셔너리 뷰 (0) | 2021.11.11 |
대용량 테이블 컬럼 순서 변경 테스트(12c new feature column visiable 기능 사용) (0) | 2021.11.03 |
다른 스키마(유저) Database link 삭제하기 (0) | 2021.10.27 |
Unusable Index를 Skip하고 scan하는 파라미터 skip_ususable_indexes (0) | 2021.10.26 |
댓글