Oracle 12c 데이터베이스와 분할 된 테이블이 있습니다. 전체의 27 % 인 68734MB의 오래된 파티션이 있습니다.
이 파티션을 삭제해야합니다. 이것은 프로덕션 데이터베이스이며 이에 대한 다운 타임 창이 없습니다.
이 파티션을 삭제했는지 알고 싶습니다.이 테이블의 인덱스를 사용할 수 없거나 다시 작성할 수 있습니까? 라이브 트래픽에 미치는 영향을 최소화하면서이 파티션을 삭제하는 가장 좋은 전략은 무엇입니까?
댓글
- 색인에 따라 다릅니다. 전역 색인을 다시 작성해야합니다.
답변
하나 이상의 파티션을 삭제하면 로컬 색인이 또한 떨어졌습니다. UPDATE INDEXES
또는 UPDATE GLOBAL INDEXES
절이 ALTER TABLE DROP PARTITION
에 지정되지 않은 경우 전역 인덱스를 다시 작성해야합니다. 예를 들어, 범위 파티션과 글로벌 인덱스가있는 TBL1
테이블이 있습니다.
SQL> select p.index_name, p.partition_name,p.status from dba_ind_partitions p, dba_indexes i where i.index_name=p.index_name and table_name="TBL1"; INDEX_NAME PARTITION_ STATUS ---------- ---------- -------- T_INDEX GI3 USABLE T_INDEX GI2 USABLE T_INDEX GI1 USABLE SQL> alter table tbl1 drop partition p0 UPDATE GLOBAL INDEXES; Table altered. SQL> select p.index_name, p.partition_name,p.status from dba_ind_partitions p, dba_indexes i where i.index_name=p.index_name and table_name="TBL1"; INDEX_NAME PARTITION_ STATUS ---------- ---------- -------- T_INDEX GI3 USABLE T_INDEX GI2 USABLE T_INDEX GI1 USABLE
보시다시피 UPDATE GLOBAL INDEXES
절을 지정해도 글로벌 인덱스는 사용할 수 없게되지 않습니다.
파티션을 삭제 한 후 인덱스 항목이 속합니다. 해당 파티션에 남아 있습니다. 쿼리에서 이러한 인덱스를 사용하는 경우 해당 항목 (고아)을 무시합니다. 정기 유지 관리 기간에서 이러한 고아 항목을 정리할 수 있습니다. 자세한 내용은 다음 문서에서도 제공됩니다.
파티션 유지 관리 작업 인 DROP PARTITION 및 TRUNCATE PARTITION은 메타 데이터에 대해서만 인덱스 유지 관리를 수행하여 최적화됩니다.
어쨌든 파티션 삭제 또는 자르기 즉시 완료되며 인덱스는 항상 av입니다. 사용할 수 있으며 색인 유지 관리가 연기됩니다.
문서 :
설명
- 매우 유용한 정보입니다. 이 파티션에 가장 많은 양의 데이터가 있다는 점을 감안할 때이 작업의 지속 시간에 대해 알고 있습니까? 몇 시간이 걸리거나 파티션 드롭이 적절한 시간에 발생합니까? (초 또는 분 단위 포함)
- 위에 인용 된 마지막 문장에 따르면 파티션의 실제 삭제는 메타 데이터 작업이므로 소수의 레코드에 대한 업데이트 만 포함됩니다. 기본적으로 빠릅니다.