행위

오라클 HWM 확인

DB CAFE

Dbcafe (토론 | 기여)님의 2019년 5월 3일 (금) 17:25 판 (새 문서: HWM(High Water Mark)란 고수위 즉, 마지막까지 등록된 블록위치다. 만약 데이터가 대량으로 지워지면 이전에 표시되었던 HWM은 그대로이고 실...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
thumb_up 추천메뉴 바로가기


HWM(High Water Mark)란 고수위 즉, 마지막까지 등록된 블록위치다. 만약 데이터가 대량으로 지워지면 이전에 표시되었던 HWM은 그대로이고 실재로 사용되는 데이터는 HWM보다 훨씬 작을 것이지만 데이터를 추출시 HWM표시부분까지 읽기때문에 불필요한 DISK I/O가 발생한다.


  • 확인방법

1. 블록확인

SELECT TABLE_NAME

    , NUM_ROWS
    , BLOCKS
    , EMPTY_BLOCKS
 FROM USER_TABLES 

WHERE TABLE_NAME = '테이블명';


2. 실재사용 블럭확인

SELECT COUNT(DISTINCT DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)||DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)) "USED" FROM [TABLE_NAME];


※ 블록의 크기와 실재사용 블록의 크기가 차이가 많이 나면 HWM를 지워주는 것이 좋다.

  • HWM제거 방법1

해당 테이블을 익스포트 한 후에 TRUNCATE TABLE후 인포트 수행

  • HWM제거 방법2(HWM상위영역을 해제한다)

ALTER TABLE [TABLE_NAME] DEALLOCATE UNUSED;

※ 잦은 DEALLOCATE는 테이블 스페이스의 단편화를 유발할 수 있음