2014년 4월 30일 수요일

로그 파일의 VLF 사이즈 조정하기

VLF의 사이즈를 조정하는 옵션은 없습니다.
처음 트랜잭션 로그 파일이 만들어질때 VLF의 사이즈가 결정됩니다.
8GB 짜리 로그 파일을 만들면 512MB VLF 16개가 만들어집니다.
VLF에 대한 정보를 보려면
DBCC LOGINFO WITH TABLERESULTS, NO_INFOMSGS
를 사용하면 됩니다. 만약 작은 VLF가 여러개라서 VLF의 사이즈를 조정하고 싶으면 일단 로그를 자른 다음 파일 사이즈를 최소한으로 줄였다가 원하는 크기로 늘리면 됩니다. 방법은 1.데이터베이스 전체 백업을 수행합니다. (안그러면 로그 백업이 안됩니다.) 2.트랜잭션 로그 백업을 수행합니다. 3.CHECKPOINT 명령을 수행합니다. 4.DBCC SHRINKFILE (로그파일이름, 1) 명령으로 파일 사이즈를 줄입니다. 5.ALTER DATABASE DB명 MODIFY FILE (NAME = '로그파일명', SIZE = 1024MB) 명령으로 원하는 크기로 로그 파일의 크기를 조정합니다. 이렇게 하면 수많은 조각으로 나눠졌던 VLF의 사이즈가 조정됩니다. 그런데 로그 파일을 줄였다가 다시 키워도 처음 두개의 VLF사이즈는 변경 할 수가 없습니다. 처음 두개 정도야 그대로 둬도 큰일이야 나겠냐 싶지만 어쩐지 변경해보고 싶었습니다. 편집증 발동 아래는 TestDB라는 DB의 로그 사이즈를 원하는 크기로 재설정 하는 스크립트입니다.
ALTER DATABASE TestDB SET EMERGENCY
GO
ALTER DATABASE TestDB REBUILD LOG
ON (NAME=TestDB_Log, FILENAME='D:\NewLogFileName.ldf', SIZE = 8192MB)
GO
ALTER DATABASE TestDB SET MULTI_USER WITH NO_WAIT
이렇게 하면 처음부터 로그파일의 크기를 8GB로 만든것처럼 됩니다. 로그 파일이 리빌드 됐기 때문에 당연히 로그체인은 끊기게 됩니다. 멱살잡히고 싶지 않으면 작업 전에 백업은 필수 입니다.

댓글 1개: