Database Shrink

[주의 사항]

본 블로그에 게시된 정보의 내용 (첨부 문서, 링크 등)은 작성일 현재 기준이며 예고없이 변경 될 수 있습니다.

또한, 참고용으로만 제공됨으로 Microsoft에 책임이 없음을 알려 드립니다. 반드시 적용 전 충분한 테스트를 진행하시기 바랍니다.

 
[요약]

Database Shrink

 
[원인 또는 해결 방법]

Size가 커진 로그 Log Database를 Shrink 하기 위해서는 먼저 트랜젝션 로그를 비워야 하는데, 이 작업은 복구 모드를 변경할 때 수행합니다.
Full을 Simple로 변경할 때 수행되며, Simple을 Full로 변경할 때는 트랜젝션 로그가 비워지지 않습니다. (이때는 다른 방법을 사용합니다.)
이렇게 로그를 비운 다음에 로그파일 사용률을 확인하고 Shrink를 하여 사이즈를 줄이는 것입니다.

1. 복구모델 및 데이터베이스 사이즈 확인
SP_HELPDB WSS_Content

2. 트랜잭션 로그를 비우기 위해 복구모델 변경
ALTER DATABASE WSS_Content SET RECOVERY SIMPLE
GO

3. 트랜잭션 로그파일 사용률 확인
DBCC SQLPERF(LOGSPACE)

4. 트랜잭션 로그 파일 축소
USE WSS_Content
GO
DBCC SHRINKFILE (N'WSS_Content_Log' , 0, TRUNCATEONLY)
GO

5. shrink 작업이 완료되지 않는 경우 dbcc loginfo 통하여 vlf status 점검하고, 트랜잭션로그 마지막에 활성로그(status=2)가 존재하는지 확인합니다.
상태가 모두 0이어야 Shrink가 동작하며 2가 있는 경우에는 복구 모드 변경시에 실행중인 트랜잭션이 있었던 경우 입니다.

6. 이런 경우, 복구모델을 FULL로 다시 변경하였다가 다시 Simple로 변경하여 활성로그를 제거한 후 Shrink를 수행합니다.
ALTER DATABASE WSS_Content SET RECOVERY FULL
GO
ALTER DATABASE WSS_Content SET RECOVERY SIMPLE
GO

감사합니다.