로그 축소 테스트

SQL Server 2008. 12. 15. 02:41


예전에
로그백업 로그를 축소했는데 용량이 원하는 만큼 줄어들지 않고 다시한번 로그백업 축소를 하면 원하는대로 줄어드는 현상이 있어 확인해본 결과 로그 축소시 활성 VLF 뒷부분만 축소가 된다 것을 알게 되었었다.

오늘은 부분에 대해 실제로 테스트를 보았다.

 

select @@version

 

-- 집에 있는 노트북에 패치가 안되어 있었네요; 인터넷이 열악한 상황이라 패치하기가 힘드니 뭐라하지 마세요~ ^^;

Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)

       Oct 14 2005 00:33:37

       Copyright (c) 1988-2005 Microsoft Corporation

       Standard Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

 

-- drop database logtest

CREATE DATABASE [logTest] ON  PRIMARY

( NAME = N'logTest', FILENAME = N'D:\logTest.mdf' , SIZE = 10MB , MAXSIZE = UNLIMITED, FILEGROWTH = 1MB )

 LOG ON

( NAME = N'logTest_log', FILENAME = N'D:\logTest_log.LDF' , SIZE = 1MB , MAXSIZE = 2048GB , FILEGROWTH = 1MB)

go

use logTest

go

 

-- Full backup 한번 한다

backup database logTest to disk = 'd:\logtest.bak' with init

 

-- 로그 파일을 1M 2 증가 시킨다.

dbcc loginfo

alter database [logTest] modify file (name = 'logTest_log', SIZE = 2MB)

alter database [logTest] modify file (name = 'logTest_log', SIZE = 3MB)

dbcc loginfo

 

-- 로그를 적당히 쌓고 한다. 2.3M정도 로그가 쌓인 것을 확인할 있다.

create table t1 (col1 int, col2 char(7000))

go

insert into t1 select 1,''

go 260

dbcc loginfo

 

-- 로그백업 변화를 확인한다. 논리로그 끝을 포함한 VLF 활성상태로 남았다.

backup log logtest to disk = 'd:\logtest.trn' with init

dbcc loginfo

 

-- 로그 축소를 하면 확성 VLF뒷부분만 잘린 것을 확인할 있다. 뒤쪽 3개의 VLF 반환된 것을 확인할 있다.

dbcc shrinkfile (logTest_log, 1)

 

-- 다시한번 로그백업 다음

backup log logtest to disk = 'd:\logtest.trn' with init

dbcc loginfo

 

-- 다시 로그 축소를 하면 역시 뒷부분만 잘려 원하는 크기로 줄어든 것을 확인할 있다.

dbcc shrinkfile (logTest_log, 1)

 

 

하만철 / Ha Man cheol

AND