Notedb

HWM RESET 본문

DATABASE/ORACLE

HWM RESET

NotedbAdmin 2023. 10. 20. 15:40

 

 

위 그림 전체 블록은 SEGMENT에 할당된 영역, 각각의 블록은 DATA BLOCK, 5개 BLOCK 묶음은 EXTENT, 빨간 선으로 표시 HWM.

 

 

 

 

 

HWM을 재설정하는 방법

1. truncate table TABLE_NAME

 


delete from TABLE_NAME 대신 truncate 문을 사용하여 data를 제거한다.

truncate table 문에는 조건을 걸 수 없기 때문에, 모든 data를 지울 때만 사용할 수 있다.

truncate table 를 통해 모든 records를 제거하면 HWM은 초기치로 reset 된다.

 

 

 

 

 

2. alter table TABLE_NAME move tablespace TABLESPACE_NAME


해당 table을 지정한 tablespace로 이동시킨다.

row id가 변경되기 때문에 같은 테이블스페이스명으로 해도 된다.

 

row id가 변경되기 때문에 모든 index rebuilding 작업이 필요하다

 

** 해당 table data의 physical location (rowid) 이 변경되기 때문에, 해당 table에 걸려 있던 index가 unusable 상태가 된다

alter table .. move tablespace 를 수행한 후에 반드시 모든 indexes를 rebulid 해야한다.

 

 

 

 

 


3. alter table TABLE_NAME shrink space cascade;

HWM으로 예약되어 있는 빈 공간을 반납한다.
테이블 영역이 로컬 관리 테이블 영역, 자동 세그먼트 영역 관리인 것에 적용 가능

 

※ shrink command를 실행하기 전 alter table TABLE_NAME enable row movement를 실행해 주어야 한다.

--> ORA-10636: ROW MOVEMENT is not enabled 라는 오류가 발생한다.

 

※ 다음과 같은 table에 대해서는 shrink를 수행할 수 없다.

     1) data type이 "long"인 column을 포함하는 경우
     2) clustered table 의 경우
     3) function-based index 혹은 bitmap join index가 생성되어 있는 경우
     4) index-organized table의 mapping table
     5) compress된 table
     6) context indexes(domain indexes)를 가지는 table

 

 

 

 

출처 : https://dev-kwon.tistory.com/10

'DATABASE > ORACLE' 카테고리의 다른 글

Oracle Block / Extent / Segment / Tablespace (1)  (0) 2023.11.17
DB명세서 작성 쿼리  (0) 2023.10.24
TABLESPACE 사용량 조회  (2) 2023.10.20
DDL DML DCL TCL description  (0) 2023.10.20
Data Pump ( export / import ) 모니터링  (0) 2023.10.19