본문 바로가기

IT-Consultant

Oracle 10g Table 데이터 삭제후 size변경관련

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 이 걸립니다.

하지만, 이 단계는 매우 짧은 시간이 소요되므로, 객체에 대한 가용성에 미치는 영향은 최소화 됩니다.

 

기타 자세한 사항이나 제약 사항들은 관련 메뉴얼을 참고하세요...