본문 바로가기

IT/Oracle

오라클 파티션 리빌드(Rebuild) 쿼리

300x250

Oracle에서 파티션 리빌드(Rebuild)는 인덱스 파티션 또는 하위 파티션을 재구성할 때 사용됩니다. 데이터의 재정렬, 공간 최적화, 파티션 데이터 변경 후 성능을 개선하기 위해 리빌드가 필요할 수 있습니다.

다음은 파티션 리빌드에 대한 주요 쿼리와 방법입니다


인덱스 파티션 리빌드


1. 특정 파티션 리빌드

ALTER INDEX 인덱스명 REBUILD PARTITION 파티션명;

• 예제

ALTER INDEX sales_idx REBUILD PARTITION sales_q1_2023;


• 설명
sales_idx 인덱스의 sales_q1_2023 파티션을 리빌드합니다.
리빌드는 해당 인덱스 파티션을 다시 생성하여 데이터 정렬 및 성능을 최적화합니다.


2. 병렬 처리로 리빌드

ALTER INDEX 인덱스명 REBUILD PARTITION 파티션명 PARALLEL N;

• 예제:
ALTER INDEX sales_idx REBUILD PARTITION sales_q1_2023 PARALLEL 4;


• 설명:
병렬도(PARALLEL)를 설정하여 리빌드 작업 속도를 높일 수 있습니다.


3. 모든 파티션 리빌드

ALTER INDEX 인덱스명 REBUILD;

• 예제

ALTER INDEX sales_idx REBUILD;


• 설명
인덱스의 모든 파티션을 순차적으로 리빌드합니다.

테이블 파티션 리빌드

1. 파티션 데이터 이동 및 리빌드
   • Oracle에서는 직접 테이블 파티션을 리빌드하는 명령이 없음, 파티션을 재정의하거나 데이터 이동을 통해 유사한 작업을 수행합니다.
   • 특정 파티션 데이터 이동

ALTER TABLE 테이블명 MOVE PARTITION 파티션명;

• 예제:
ALTER TABLE sales MOVE PARTITION sales_q1_2023;

• 설명:
테이블의 sales_q1_2023 파티션 데이터를 재정렬합니다.
파티션 데이터가 새로운 세그먼트로 이동하며, 이로 인해 조각화가 줄어듭니다.


2.  파티션 데이터 압축 후 이동

ALTER TABLE 테이블명 MOVE PARTITION 파티션명 COMPRESS FOR OLTP;

• 예제:
ALTER TABLE sales MOVE PARTITION sales_q1_2023 COMPRESS FOR OLTP;


• 설명:
데이터를 압축한 뒤 이동하여 스토리지 사용량을 최적화합니다.

서브파티션 리빌드

1. 특정 서브파티션 리빌드

ALTER TABLE 테이블명 MOVE SUBPARTITION 서브파티션명;

• 예제:

ALTER TABLE sales MOVE SUBPARTITION sales_q1_2023_asia;


2. 서브파티션 리빌드 후 인덱스 재생성

테이블 서브파티션을 리빌드하면 관련된 인덱스가 유효하지 않게 될 수 있습니다. 이 경우 인덱스를 다시 생성해야 합니다.

ALTER INDEX 인덱스명 REBUILD SUBPARTITION 서브파티션명;

• 예제:

ALTER INDEX sales_idx REBUILD SUBPARTITION sales_q1_2023_asia;

파티션 인덱스 리빌드 시 주의사항
1. 병렬도 조정
   • 병렬 리빌드는 시스템 리소스를 많이 사용하므로, 적절한 병렬도를 설정해야 합니다.

2. 테이블 잠금
   • 파티션 데이터 이동(MOVE)은 테이블 잠금을 유발할 수 있으므로, 낮은 사용량 시간에 실행하는 것이 좋습니다.

3. UNDO/REDO 사용량
   • 리빌드 작업은 많은 UNDO 및 REDO 로그를 생성할 수 있으므로, 테이블스페이스와 로그 공간을 확인하십시오.

4. 휴지통으로 데이터 이동 방지
   • 리빌드 중 데이터가 휴지통으로 이동하지 않게 하려면 NOPURGE 옵션을 사용할 수 있습니다

ALTER TABLE 테이블명 MOVE PARTITION 파티션명 NOPURGE;

관련 블로그

 

오라클 특정 파티션 내 데이터 조회

오라클에서 특정 파티션(partition) 내 데이터를 조회하려면 PARTITION 키워드를 사용하여 원하는 파티션만 지정할 수 있습니다. 이는 대량 데이터 처리 시 성능을 최적화하는 데 유용합니다.기본 구

make2t.tistory.com

 

BETWEEN으로 존재하지 않는 파티션 데이터 조회

BETWEEN으로 존재하지 않는 파티션까지 포함하여 조회할 경우 성능 저하가 발생할 수 있습니다. 이유는 다음과 같습니다:1. 존재하지 않는 파티션 탐색 시도DB 엔진은 BETWEEN 범위에 포함된 모든 파

make2t.tistory.com

 

300x250