전역 인덱스를 사용 가능한 상태로 유지하며 파티션 truncate/drop
Oracle파티셔닝명령어
-- Empty a partition / remove a partition (global indexes stay maintained):
ALTER TABLE customer_app.sale_part TRUNCATE PARTITION p2025 UPDATE INDEXES;
ALTER TABLE customer_app.sale_part DROP PARTITION p2025 UPDATE INDEXES;
-- 12c+ asynchronous global index maintenance: index is VALID but carries orphaned entries
SELECT index_name, status, orphaned_entries
FROM dba_indexes
WHERE owner = 'CUSTOMER_APP' AND table_name = 'SALE_PART';
-- Clean orphaned entries now (normally SYS.PMO_DEFERRED_GIDX_MAINT_JOB does it at night):
EXEC DBMS_PART.CLEANUP_GIDX(schema_name_in => 'CUSTOMER_APP', table_name_in => 'SALE_PART');
-- or a single index: ALTER INDEX customer_app.sale_part_id_gidx COALESCE CLEANUP;
-- Target the partition by value instead of name:
-- ALTER TABLE customer_app.sale_part DROP PARTITION FOR (DATE '2025-06-15') UPDATE INDEXES;하는 일
행 단위 DELETE 대신 파티션 수준에서 오래된 데이터를 즉시 제거한다. 12c+에서 UPDATE INDEXES는 모든 항목을 갱신하는 대신 딕셔너리에서 전역 인덱스만 표시한다(비동기 유지보수). 인덱스는 즉시 사용 가능하며 고아 항목은 나중에 정리된다.
사용 시점
데이터 보존 정책에 따라 오래된 기간을 삭제할 때, ILM/purge 작업에서, 대형 테이블에서 DELETE의 undo/redo 부하를 피하기 위해.
주의
Partitioning 옵션(유료 EE)이 필요하다. DROP/TRUNCATE는 되돌릴 수 없다(flashback table로 파티션을 되살릴 수 없음). 먼저 백업하거나 exchange로 아카이브한다. UPDATE INDEXES를 잊으면 전역 인덱스가 UNUSABLE이 되어 쿼리가 ORA-01502를 만날 수 있다. 자식 테이블이 참조(FK)하면 작업이 실패한다. interval 테이블에서는 마지막 range(transition) 파티션을 drop할 수 없다.