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입니다. 사용할 수 있으며 색인 유지 관리가 연기됩니다.

문서 :

  • 파티션 삭제 및 자르기를위한 비동기 전역 인덱스 유지 관리
  • Oracle Database 12c

    설명

    • 매우 유용한 정보입니다. 이 파티션에 가장 많은 양의 데이터가 있다는 점을 감안할 때이 작업의 지속 시간에 대해 알고 있습니까? 몇 시간이 걸리거나 파티션 드롭이 적절한 시간에 발생합니까? (초 또는 분 단위 포함)
    • 위에 인용 된 마지막 문장에 따르면 파티션의 실제 삭제는 메타 데이터 작업이므로 소수의 레코드에 대한 업데이트 만 포함됩니다. 기본적으로 빠릅니다.
  • 답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다