행위

"오라클 HWM 확인"의 두 판 사이의 차이

DB CAFE

7번째 줄: 7번째 줄:
  
 
1. 블록확인  
 
1. 블록확인  
 
+
<source lang=sql>
 
SELECT TABLE_NAME
 
SELECT TABLE_NAME
 
     , NUM_ROWS
 
     , NUM_ROWS
 
     , BLOCKS
 
     , BLOCKS
 
     , EMPTY_BLOCKS
 
     , EMPTY_BLOCKS
   FROM USER_TABLES
+
   FROM DBA_TABLES
 
WHERE TABLE_NAME = '테이블명';
 
WHERE TABLE_NAME = '테이블명';
 
+
</source>
  
  
 
2. 실재사용 블럭확인  
 
2. 실재사용 블럭확인  
 
+
<source lang=sql>
 
SELECT COUNT(DISTINCT DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)||DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)) "USED"
 
SELECT COUNT(DISTINCT DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)||DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)) "USED"
FROM [TABLE_NAME];
+
  FROM [TABLE_NAME];
 
+
</source>
 
   
 
   
 
※ 블록의 크기와 실재사용 블록의 크기가 차이가 많이 나면 HWM를 지워주는 것이 좋다.
 
※ 블록의 크기와 실재사용 블록의 크기가 차이가 많이 나면 HWM를 지워주는 것이 좋다.
  
* HWM제거 방법1
+
# HWM제거 방법1
 
해당 테이블을 익스포트 한 후에 TRUNCATE TABLE후 인포트 수행
 
해당 테이블을 익스포트 한 후에 TRUNCATE TABLE후 인포트 수행
  
* HWM제거 방법2(HWM상위영역을 해제한다)
+
<source lang=sql>
 +
-- 테이블 백업 후 TRUNCATE
 +
1) CTAS 백업;
 +
2) TRUNCATE TABLE [TABLE_NAME];
 +
3) 데이터 입력
 +
</source>
  
 +
# HWM제거 방법2(HWM상위영역을 해제한다)
 +
<source lang=sql>
 
ALTER TABLE  [TABLE_NAME]  DEALLOCATE UNUSED;
 
ALTER TABLE  [TABLE_NAME]  DEALLOCATE UNUSED;
 +
</source>
 +
# 잦은 DEALLOCATE는 테이블 스페이스의 단편화를 유발할 수 있음
  
※ 잦은 DEALLOCATE는 테이블 스페이스의 단편화를 유발할 수 있음
 
 
[[Category:oracle]]
 
[[Category:oracle]]

2020년 1월 21일 (화) 11:27 판

thumb_up 추천메뉴 바로가기


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를 지워주는 것이 좋다.

  1. HWM제거 방법1

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

-- 테이블 백업 후 TRUNCATE 
1) CTAS 백업;
2) TRUNCATE TABLE [TABLE_NAME];
3) 데이터 입력
  1. HWM제거 방법2(HWM상위영역을 해제한다)
ALTER TABLE  [TABLE_NAME]  DEALLOCATE UNUSED;
  1. 잦은 DEALLOCATE는 테이블 스페이스의 단편화를 유발할 수 있음