오라클 HWM 확인
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
HWM(High Water Mark)란 고수위 즉, 마지막까지 등록된 블록위치다. 만약 데이터가 대량으로 지워지면 이전에 표시되었던 HWM은 그대로이고 실재로 사용되는 데이터는 HWM보다 훨씬 작을 것이지만 데이터를 추출시 HWM표시부분까지 읽기때문에 불필요한 DISK I/O가 발생한다.
- 확인방법
1. 블록확인
SELECT TABLE_NAME
, NUM_ROWS
, BLOCKS
, EMPTY_BLOCKS
FROM DBA_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후 인포트 수행
-- 테이블 백업 후 TRUNCATE
1) CTAS 백업;
2) TRUNCATE TABLE [TABLE_NAME];
3) 데이터 입력
- HWM제거 방법2(HWM상위영역을 해제한다)
ALTER TABLE [TABLE_NAME] DEALLOCATE UNUSED;
- 잦은 DEALLOCATE는 테이블 스페이스의 단편화를 유발할 수 있음