Skip to the content.

ORA-14511: cannot perform operation on a partitioned object

파티션 테이블의 기본 테이블 스페이스를 변경하지 않음

  1. 해당 테이블의 기본 테이블 스페이스를 변경
     ALTER TABLE owner_name.table_name MODIFY DEFAULT ATTRIBUTES TABLESPACE tablespace_name;
    
  2. 기존 파티션들은 그대로 남아있는 상태이므로 기존 파티션들도 새 테이블 스페이스로 옮겨야 함
     --1. 해당 파티션 테이블 통계 수집
     EXEC DBMS_STATS.gather_table_stats('owner_name', 'table_name', granularity=>'ALL');
    
     --2. 파티션 이동 쿼리 작성
     SELECT
         'ALTER TABLE '||TABLE_OWNER||'.'||TABLE_NAME||' MOVE PARTITION '||PARTITION_NAME||' TABLESPACE tablespace_name;' AS SQL
     FROM DBA_TAB_PARTITIONS
     WHERE TABLE_OWNER = 'owner_name' AND TABLE_NAME = 'table_name';
     /*
     ALTER TABLE owner_name.table_name MOVE PARTITION partition_name TABLESPACE tablespace_name;
     */
    
     --3. 파티션 인덱스 리빌드
     SELECT
         'ALTER INDEX '||I.INDEX_OWNER||'.'||I.INDEX_NAME||' REBUILD PARTITION '||I.PARTITION_NAME||' TABLESPACE tablespace_name;' AS SQL
     FROM DBA_IND_PARTITIONS I, DBA_TAB_PARTITIONS T
     WHERE I.PARTITION_NAME = T.PARTITION_NAME AND T.TABLE_OWNER = 'owner_name' AND T.TABLE_NAME = 'table_name';
     /*
     ALTER INDEX owner_name.index_name REBUILD PARTITION partition_name;
     */