Oracle 10g 를 사용하시면 Online Segment Shrink 기능을 이용하셔서
HWM 의 조정이 가능하여 Table Size를 줄이실 수 있습니다.
대량의 데이터를 삭제하는 것 보다는 새롭게 테이블을 Reorg 하는 작업이 더 빠르지만,
이미 오래된 데이터를 delete 로 삭제하신 것 같네요...^^
먼저 확인해야 할 사항은
Init.ora 파라미터인 'Compatible' 값이 10.0 이상이여야 하며,
Shrinking 하려는 대상 Segment 는 ASSM(Auto Segment Space Managed) Tablespace 내에
존재해야 합니다.
실제 실행 방법은
1. 테이블의 row movement 기능을 활성화
SQL> ALTER TABLE scott.emp ENABLE ROW MOVEMENT;
2. 테이블과 HWM 를 shrink
SQL> ALTER TABLE scott.emp SHRINK SPACE;
cf) 테이블 및 관련된 인덱스를 모두 shrink
SQL > ALTER TABLE scott.emp SHRINK SPACE CASCADE;
Online Segment Shrink 적용 대상 세그먼트는
Normal Table, Index, Lob, IOT, MView 이며,
Segment Shrink 할 때의 Online 처리는 DML-Shared Lock 을 사용하기 때문에
Shrink 를 처리하는 동안에도 DML 작업이 가능하지만, parallel DML 은 수행될 수 없습니다.
또한, space-relase/HWM 조정을 하는 단계에서는 exclusive 모드로 lock 이 걸립니다.
하지만, 이 단계는 매우 짧은 시간이 소요되므로, 객체에 대한 가용성에 미치는 영향은 최소화 됩니다.
기타 자세한 사항이나 제약 사항들은 관련 메뉴얼을 참고하세요... |