원래 기본값이
Data 파일 10% 단위로 무제한 증가
Log 파일도 10% 단위로 무제한 증가로 되어 있었습니다.
큰 사이트 도 아닌데 스펨게시물 등이 무작위로 등록되어 로그가 엄청 커져 있어서.
ALTER DATABASE db명
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE (db명_Log, 2);
GO
ALTER DATABASE db명
SET RECOVERY FULL;
GO
이렇게 로그를 2MB 로 설정 했습니다.
축소 된 걸 확인 하였고 그대로 두었더니
몇일이 지나자 다시 log 파일이 엄청 커지더군요.
그래서 제한을 두었습니다.
10%단위로 10MB까지 제한된 파일증가로 설정 했습니다.
그랬더니 트랜젝션 로그가 꽉 찼다고 오류 메세지를 보여주고 사이트 접속이 안되더군요.
저는 그냥 제한을 두면 로그가 꽉차면 리셋되거니 자동으로 이전 로그가 삭제 될 줄 알았거든요.
설정 방법이 따로 있느지요?
최초에 db생성시 부터 저렇게 제약을 두면 설정된 크기 만큼만 늘어나고 자동으로 축소 되는지요?
Comment 3
-
몽블랑
2013.05.24 23:10
-
죠리퐁
2013.05.27 16:10
답변 감사합니다.
그러면 이렇게
ALTER DATABASE db이름 SET
RECOVERY SIMPLEGO
심플복구 모델로 변경하면 같은 에러는 발생 하지 않는지요?
-
ichitaro
2013.05.30 18:17
어떤것이든 댓가가 필요하게 됩니다.^^
FULL 의 경우 장애 시점 이전까지 로그를 받아 복원할 수 있는 장점이 있습니다. 그러나 단점은 지속적으로 트랜잭션 로그가 증가하기 때문에 꾸준히 백업하고 사이즈도 관리해 주어야 합니다.
SIMPLE 의 경우에는 로그를 관리하지 않아도 되는 장점이 있으나 장애시 장애 시점 이전 로그가 없기에 시점 복구가 불가능합니다.
다시 한번 두가지 차이점을 잘 숙지하시고 환경에 맞게 운영 하시면 될듯 합니다.
복구 모델이 전체 복구이면 트렌젝션 백업을 하지 않는 이상 로그가 계속해서 증가합니다.
10%증가면 초기에 파일사이즈가 작을때는 무리가 없겠지만 파일 사이즈가 커지고 이어서
자동증가량이 커지게 되면 블로킹 및 기타 서비스 장애로 이어질수 있습니다.
복구 모델을 단순복구모델로 변경하시거나, 트렌젝션 백업 스케쥴을 걸어 지속적으로 로그를 비워주셔야할거 같네요.
저도 초보지만;..서비스중 DB파일 자동증가는 가급적 안되게 할려고 모니터링 합니다.ㅎ