[MSSQL] 트랜잭션 로그 줄이기

By | Y2015Y2015-11M-ȭD

for further steps

통계성 데이터베이스의 경우 트랜잭션 로그가 빠르게 커지는데, 백업시 공간 문제도 있고 해서 단순히 로그성 데이터베이스이면 굳이 로그를 유지할 필요가 없다. 따라서 데이터베이스 옵션을 “단순” 으로 두고 트랜잭션 로그를 잘라줘야 하는데…

그런데, transaction log 를 삭제하려면 잘 기억이 나지 않는 데다가 버전 별로 좀 달라서 정리를 해둔다.

* MSSQL 2012 의 경우

–파일명 알아내기

EXEC SP_HELPFILE

SELECT * FROM SYSFILES  — 데이터베이스 파일의 각종 정보를 알 수 있다.

-로그잘라내기

 

DBCC SHRINKFILE([로그파일명 또는 file id], 파일크기)      –특정 사이즈로 파일을 축소하는 방법
DBCC SHRINKFILE([로그파일명 또는 file id], TRUNCATEONLY)  –불필요한 로그 파일을 잘라 파일을 축소하는 방법

ex)

DBCC SHRINKFILE (‘XERP_LOG’,500)
DBCC SHRINKFILE (‘XERP_LOG’,TRUNCATEONLY)

DBCC LOGINFO

 

아래는 http://unions5.tistory.com/84 에서 참고한 내용
(휴면계정이라 동의를 구하지 못한 점 양해바랍니다)

* MSSQL 2008 의 경우

USE [DataBase];

GO

— 복구 모델을 “단순”으로 변경 Truncate the log by changing the database recovery model to SIMPLE.

ALTER DATABASE [DataBase] SET RECOVERY SIMPLE;

GO
— 트랜잭션 로그를 1MB 로 줄임 Shrink the truncated log file to 1 MB.

DBCC SHRINKFILE ([DataBase_Log or file id], 1);

GO
— 다시 복구 모델을 “전체”로 변경 Reset the database recovery model.

ALTER DATABASE [DataBase] SET RECOVERY FULL;

GO

* MSSQL 2005 의 경우

use [DB명];
sp_helpfile;   –로그파일 및 fild id 정보 확인

backup log [DB명] with no_log;
dbcc shrinkfile ([로그파일명 또는 file id], 10);  –[로그파일명 또는 file id]을 10MB로 축소

* MSSQL 2000 의 경우

use [DB명];
sp_helpfile;  –로그파일 및 file id 정보 확인

backup log [DB명] with truncate_only;
dbcc shrinkfile ([로그파일명], 10); –[로그파일명 또는 file id]을 10MB로 축소

===================================================================

### 로그파일의 정보를 확인합니다.

dbcc loginfo

### 현재 지정된 디비가 사용하는 mdf 및 ldf파일의 경로, 이름 및 크기를 확인합니다.

exec sp_helpfile


### 위에서 정해준 디비의 로그를 백업해 줍니다.

backup Log testdb to disk=’d:\dbbackup\temp\testdb.bak’

go


### 트랜잭션 로그파일을 최소의 단위로 축소합니다.

backup log testdb with truncate_only


### 트랜잭션 로그파일을 삭제합니다.

backup log testdb with no_log


### 트랜잭션 로그파일을 10메가로 생성합니다.

dbcc shrinkfile (testdb_log, 10)


### mdf와 ldf파일이 제대로 잘 리사이징 되었는지 확인합니다.

exec sp_helpfile


모든 작업이 잘 마무리 되었다면, 이제는 갑작스런 트랜잭션로그의 증가로 문제가 되는 것을 방지하기 위해 트랜잭션로그파일의 최대크기를 지정해놓는 방법도 좋습니다.

alter database testdb

modify file ( name = testdb_log, maxsize = 200 mb )

go

위 의 과정을 진행하시면 트랜잭션로그는 위에서 지정한데로 200메가를 한계치로 생성 삭제 됩니다. 트랜잭션로그의 용량은 데이터의 중요도 및 규모에 따라 정책적으로 유지하셔야 하는 부분입니다. 200메가는 예제로 적어놓은 사이즈입니다.

또한 위의 과정 중 축소와 삭제는 둘 중 원하시는 방법을 선택적으로 사용하시면 됩니다.

 

4,890 total views, 1 views today

One thought on “[MSSQL] 트랜잭션 로그 줄이기

  1. Pingback: log truncate interruption – open transaction – bluecore's…

댓글 남기기