기술 정보
home
채널 소개
home

Data File 단편화 문제 가이드

문서 유형
장애 해결
분야
모니터링/점검
키워드
Monitoring
단편화
2 more properties

현상

Extent Allocation을 autoalloc으로 설정한 상태에서 데이터의 추가와 drop/truncate 작업이 반복될 경우, 데이터 파일 내 공간이 점점 단편화되는 문제가 발생할 수 있습니다.
이러한 단편화로 인해 시간이 지남에 따라 점점 더 큰 extent를 할당받기 어려워지고, 시스템은 점점 더 작은 extent로 줄여가며 재시도하게 됩니다. 이 과정에서 성능 저하가 발생할 수 있습니다.
예를 들어, 거래 로그를 저장하고 주기적으로 삭제하는 업무 등에서 이러한 문제가 나타날 수 있습니다.

원인

1.
extent 할당 방식이 autoalloc으로 설정되어 있는 경우 (기본값)
2.
주기적으로 segment의 create/insert와 drop/truncate가 반복되는 경우
이 때 autoalloc 방식으로 할당된 작은 크기의 extent들이 공간 내에 조각나게 되며, 이러한 단편화가 점진적으로 누적되어 문제를 유발합니다.
참고
truncate나 drop이 거의 발생하지 않고, 한 번 만들어진 segment를 계속 확장하면서 사용하는 경우에는 해당 문제가 발생하지 않습니다.
실제로 undo tablespace에서도 동일한 문제가 발생한 바 있으며, 이에 따라 undo segment의 할당 방식을 uniform으로 강제하도록 변경한 이력이 있습니다.

해결

사전 예방

해당 업무가 단편화를 유발할 가능성이 있는 경우, 초기부터 tablespace의 extent management를 uniform 64M 등으로 설정하시는 것을 권장드립니다.
또는 uniform으로 설정한 별도의 tablespace를 신규로 생성한 후, 점진적으로 이관하는 방식도 고려할 수 있습니다.

사후 조치

이미 단편화가 진행된 이후에는, 전체 데이터를 drop하고 새로 부어넣는 방법 외에는 적절한 해결 방법이 없습니다.
참고
진단 방법
APM에서 instance activity (time based) 항목을 확인했을 때, sgmt alloc ext time이 insert time 대비 2~30% 이상, 많게는 90% 이상을 차지하는 경우
select * from dba_free_space; 조회 시, row 수가 많고 각 row의 block count, size bytes가 작을 때 (대부분 16 block, 128K)
S1427 버전 이후부터는 APM > instance activity (time based)에서 sgmt alloc ext from datafile의 비율이 높고 (2~30%, 많게는 90% 이상), alloc fail count 값이 num (datafile을 돌며 할당 수행한 횟수)과 근접한 경우