reorg

HWM가 차지하고 있는 블록 확인.
SELECT TABLE_NAME, BLOCKS
FROM DBA_TABLES 
WHERE TABLE_NAME = 'table_name';

현재 몇 개의 블록을 사용하고 있는지 확인한다.
DBA_SEGMENTS에서도 확인 가능하다.
(갯수가 다를수 있다)


테이블에서 실제로 쓰고 있는 블록 확인.
SELECT COUNT(DISTINCT 
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)||
DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)) AS USED_BLOCK
FROM TABLE_NAME;

대상 테이블의 데이터를 조회하여
실제로 사용하고 있는 블록을 DBMS_ROWID를 사용하여 찾는다.


DBA_TABLES에서 조회된 블록의 값이
실제 블록 사용갯수보다 적어도 1.5배 이상이 많다면
리오그 작업을 권장한다.

테이블의 사이즈가 작다면 2,3배 차이가 나도 성능이나 여유 공간에 큰 영향은 없겠지만
수십,수백기가 정도 되는 대용량 테이블이라면
딕셔너리상의 블록갯수와 실제 사용 블록의 차이가 1.5배만 되어도 리오그를 통해 성능과 여유공간을 크게 확보할 수 있을것이다.

리오그는 TABLE MOVE & INDEX REBUILD나
SHRINK 등을 사용한다.


+ Recent posts