본문 바로가기
IT/Oralce work shop 1

[오라클] shrink

by BlowIt 2011. 11. 1.

블록에 데이터들이 저장되고 빠져나가는 과정에서
fragment가 형성되기 마련이다. 그렇게 형성된
저장공간들은 각 segment들의 PCT_USED 파라미터에 의해
사용이 될 수도 되지 않을 수도 있다.


참고 - [Oracle/work shop 1] - [oracle] PCT_USED, PCT_FREE

따라서 저장공간을 낭비하게 되는데 이것을 해결하는 것이 
shrink명령어 이다. shrink 명령어 사용시 주의사항으로
1. 해당 segment의 row movement 가 활성화 되어있어야한다.
    (row movement가 활성되야 각 row들의 데이터들을 이동시킬 수 있다.)
2. 이동되는 row에 대해서 index의 정보도 같이 변경된다.
3. index의 정보도 같이 변경시키기 위해 많은 시간이 소요되며
    인덱스 split현상도 염두에 두고 수행해야한다.
4. high water mark를 앞으로 당길 것인지 그대로 둘 것인지도 고려해야한다.

쉽게 생각해 '디스크 조각모음'쯤으로 생각할 수 있지만
명령어 한 줄 잘못입력해 낭패볼 수도 있다는 것이다.

옵션들 중 compact를 입력하면 high water mark를 당기지 않는다.
그림으로 보면 ...

위와같이 shrink전에는 각 row에 저장되어있는 데이터들이 분산되어있다.
shrink 이후 (high watermark 앞으로 당기지 않음)

 

이렇게 된다. (PCT_FREE파라미터는 표현하지 않음)
high watermark를 앞으로 당기지 않았기 때문에 high watermark앞의 저장공간들 부터 저장되지 않고
high watermark 뒤부터 데이터들이 삽입된다.
 

 

 

'IT > Oralce work shop 1' 카테고리의 다른 글

[오라클] backup  (0) 2011.11.02
[오라클] PCT_USED, PCT_FREE  (0) 2011.11.01
[오라클] 클러스터링 팩터  (0) 2011.10.26
[오라클] network 설정  (0) 2011.10.24
[오라클] 수동 database 생성  (0) 2011.10.24

댓글