14511

===

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

  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;
    */