안녕하세요.
< PROBLEM >
데이터베이스 로그파일의 크기를 줄이려고 했으나 실패. shrink 명령어를 써서 줄이려고 했으나 그대로 임.
트랜젝션 로그를 백업하였으나 로그 파일 용량 그대로임.
<원하는 사항>
트랜젝션 로그 파일 크기를 줄이고 싶고, log Space Used 값을 낮추고 싶습니다.
< 제가 시도했던 사항>
현재 사용하는 서버의 로그 사용량 입니다.
dbcc sqlperf (logspace);
Log Space 가 Full 에 가까워서 로그를 줄이려고 아래와 같이 수행했지만 줄어들지 않았습니다.
ALTER DATABASE DBName SET RECOVERY SIMPLE
go
-- 로그를잘라낸다. (저희는 로그 파일이 3개가 있는데 그 중에서 3번째 로그가 용량이 많아서 줄이려고 했습니다.)
DBCC SHRINKFILE (N'DBName_log3' , 1024)
go
EXEC sp_helpdb DBName
go
-- 복구모델을변경
ALTER DATABASE DBName SET RECOVERY FULL
go
위와 같이 했지만 여전히 아래와 같이 나옵니다.
데이터베이스 속성에 들어가서 아래 빨간색 부분의 용량을 줄였지만 다시 속성에 들어가 보면 변경되지 않았습니다.
그래서 아래와 같이 트랜젝션 로그를 백업 받았는데도 Log Space Used 가 안 떨어 지네요.
backup log DBName
to disk = 'e:\dbname_log_backup_20130307.bak'
with stats = 10
Go
로그 용량도 그대로구요. (약 16GB) - 아래 빨간색 밑줄 확인 요망
제가 알기로는 트랜젝션 로그를 백업 받으면 로그가 지워지는 걸로 알고 있는데, 왜 Log Space Used 항목이 100에 가까운지 모르겠네요.
해결책 좀 부탁드리겠습니다.
Comment 4
-
불타는불쥐[김경진]
2013.03.07 15:16
-
우생
2013.03.07 16:52
알려주신 데로 했는데도 안 줄어 들고 있네요. ;;; 지금 Log Space used 값이 99.37 이네요. ㅠㅠ
-
minsouk
2013.03.08 16:46
select log_reuse_wait_desc from sys.databases where name ='yourtestdb'
결과는 뭐가 나오나요?
-
우생
2013.03.14 10:06
위와 같이 실행한 결과 ACTIVE_TRANSACTION 값이 나오네요. 이 값은 무엇을 의미하는 건가요?
그리고, 결론적으로 위에 작성한 이슈사항은 DB를 다시 detach후에 attach한 다음에 해당 코드 실행하니깐 되네요.
복구 모드 FULL 상태에서 로그 백업 후 CHECKPOINT 후 TRUNCATEONLY 로 로그 축소
backup log DBName to disk = 'e:\dbname_log_backup_20130307.bak' with stats = 10
Go
CHECKPOINT
DBCC SHRINKFILE (N'DBName_log3' , 0,TRUNCATEONLY)
이렇게 해보세요.