반응형
SELECT  SQL
FROM
  (SELECT 'ALTER TABLE '||TABLE_OWNER||'.'||TABLE_NAME||' ENABLE ROW MOVEMENT ;'
         ||CHR(10)
         ||'ALTER TABLE /* '||NUM_ROWS||' */ '||TABLE_OWNER||'.'||TABLE_NAME||' modify partition '||PARTITION_NAME||' SHRINK SPACE CASCADE ;'
         ||CHR(10)
         ||'ALTER TABLE '||TABLE_OWNER||'.'||TABLE_NAME||' DISABLE ROW MOVEMENT ;' SQL
         , ROW_NUMBER() OVER(ORDER BY TABLE_OWNER, TABLE_NAME) NUM
  FROM dba_tab_partitions
  WHERE TABLE_OWNER IN ('유저명')
    AND TABLESPACE_NAME='검색할 테이블스페이스'
  )
;
2번 결과값
--row movement를 enable 시켜준다(enable하지 않고 실행시 에러발생됨)
ALTER TABLE SCOTT.NCT_TABLE  ENABLE ROW MOVEMENT ;
--shrink를 시켜주고 cascade를 하면 index는 따로 rebuild 해주지 않아도 된다
ALTER TABLE /* 0 */ SCOTT.NCT_TABLE modify partition P202203 SHRINK SPACE CASCADE ;
--row movement를 다시 disable 시켜준다
ALTER TABLE SCOTT.NCT_TABLE DISABLE ROW MOVEMENT ;
--온라인중에 사용가능하여 편하지만, 완벽하게 하기 위해서는 rebuild 시켜주는게 좋음

+ Recent posts