Oracle Database
테이블 파티셔닝
수색…
소개
비고
파티셔닝은 추가 비용 옵션이며 Enterprise Edition에서만 사용할 수 있습니다.
해시 파티셔닝
이 예제에서는 저장소 ID에 해시로 분할 된 테이블을 만듭니다.
CREATE TABLE orders (
order_nr NUMBER(15),
user_id VARCHAR2(2),
order_value NUMBER(15),
store_id NUMBER(5)
)
PARTITION BY HASH(store_id) PARTITIONS 8;
해시 파티션 수를 2로 설정하면 파티션 크기가 균등하게 분배됩니다.
범위 파티셔닝
이 예제에서는 범위 값에 따라 분할 된 테이블을 만듭니다.
CREATE TABLE orders (
order_nr NUMBER(15),
user_id VARCHAR2(2),
order_value NUMBER(15),
store_id NUMBER(5)
)
PARTITION BY RANGE(order_value) (
PARTITION p1 VALUES LESS THAN(10),
PARTITION p2 VALUES LESS THAN(40),
PARTITION p3 VALUES LESS THAN(100),
PARTITION p4 VALUES LESS THAN(MAXVALUE)
);
기존 파티션 선택
스키마의 기존 파티션 확인
SELECT * FROM user_tab_partitions;
목록 분할
이 예제에서는 저장소 ID에 대해 목록별로 분할 된 테이블을 만듭니다.
CREATE TABLE orders (
order_nr NUMBER(15),
user_id VARCHAR2(2),
order_value NUMBER(15),
store_id NUMBER(5)
)
PARTITION BY LIST(store_id) (
PARTITION p1 VALUES (1,2,3),
PARTITION p2 VALUES(4,5,6),
PARTITION p3 VALUES(7,8,9),
PARTITION p4 VALUES(10,11)
);
드롭 파티션
ALTER TABLE table_name DROP PARTITION partition_name;
파티션에서 데이터 선택
파티션에서 데이터 선택
SELECT * FROM orders PARTITION(partition_name);
파티션 잘라 내기
ALTER TABLE table_name TRUNCATE PARTITION partition_name;
파티션 이름 바꾸기
ALTER TABLE table_name RENAME PARTITION p3 TO p6;
다른 테이블 공간으로 파티션 이동
ALTER TABLE table_name
MOVE PARTITION partition_name TABLESPACE tablespace_name;
새 파티션 추가
ALTER TABLE table_name
ADD PARTITION new_partition VALUES LESS THAN(400);
분할 분할
일부 파티션을 다른 상한선이있는 두 개의 파티션으로 분할합니다.
ALTER TABLE table_name SPLIT PARTITION old_partition
AT (new_high_bound) INTO (PARTITION new_partition TABLESPACE new_tablespace,
PARTITION old_partition)
분할 영역 병합
두 개의 파티션을 하나의 파티션으로 병합
ALTER TABLE table_name
MERGE PARTITIONS first_partition, second_partition
INTO PARTITION splitted_partition TABLESPACE new_tablespace
파티션 교환
파티션을 파티션되지 않은 테이블로 변환하거나 변환 할 수 있습니다. 이것은 작업이 DDL이기 때문에 데이터 세그먼트 ( "insert ... select"또는 "create table ... as select"와 같은 작업을 수행하는 것과 반대) 사이에서 데이터의 빠른 "이동"을 용이하게합니다 (파티션 교환 작업은 데이터 DML (큰 실행 취소 / 재실행 오버 헤드)이 아닌 실제 데이터를 이동하지 않고 사전을 업데이트합니다.
가장 기본적인 예 :
- 파티션되지 않은 테이블 (테이블 "B")을 파티션 (테이블 "A")으로 변환 :
테이블 "A"는 파티션 "OLD_VALUES"에 데이터를 포함하지 않고 테이블 "B"는 데이터를 포함합니다
ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";
결과 : 데이터는 테이블 "B"(작업 후 데이터가 없음)에서 "OLD_VALUES"파티션으로 "이동"됩니다.
- 파티션을 파티션되지 않은 테이블로 변환 :
테이블 "A"는 파티션 "OLD_VALUES"의 데이터를 포함하고 테이블 "B"는 데이터를 포함하지 않습니다
ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";
결과 : 데이터가 파티션 "OLD_VALUES"(작업 후 데이터가 없음)에서 테이블 "B"로 "이동"됩니다.
참고 :이 작업에는 몇 가지 추가 옵션, 기능 및 제한 사항이 있습니다.
자세한 정보는이 링크에서 확인할 수 있습니다. ---> " https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 "( "파티션 교환"섹션)