본문 바로가기

wow db Log/ms-sql

[팁] 트랜잭션 로그 줄이기 실습

-- 시스템 파일 정보 보기
select * from sysfiles
DBCC SHRINKFILE(db_name_log,1)
<참고> 로그사이즈 줄일시 인자를 NAME 기반이나 FILEID 기반으로 할수 있다
1은 원하는 사이즈로 변경.

-- 지정한 데이터베이스에서 데이터 파일의 크기를 축소시킴
DBCC shrinkdatabase ({dbid | 'dbname'}, [freespace_percentage
                                            [, {NOTRUNCATE | TRUNCATEONLY}]])
-- 관련 데이터베이스에 대해 지정한 데이터 파일이나 로그파일의 크기를 축소 시킴
DBCC shrinkfile ({fileid | 'filename'}, [compress_size
                                     [, {NOTRUNCATE | TRUNCATEONLY | EMPTYFILE}]])
** NOTRUNCATE : 해제된 파일 공간을 파일에 보유
** TRUNCATEONLY : 해제된 파일 공간을 운영체제에 반환

/****************************************************************
 트랜잭션 로그 파일 줄이기
****************************************************************/
--0. DB파일 위치및 사이즈 확인한다.
select *
from sysfiles

--1. db백업을 한다.
BACKUP DATABASE db_name TO DISK = 'D:\DataFile\backup\AN_20080527.BAK'

--2. db작업을 한다.(로그크기를 증가시킴)
SELECT *
INTO table_name2
FROM table_name

--3. 트랜잭션 로그를 백업 한다. -- BLG_POST2 가 존재
BACKUP LOG db_name TO DISK = 'D:\DataFile\backup\AN_LOG_080528_1.BAK'

--4. 트랜잭션 로그 크기를 줄인다.
BACKUP LOG db_name WITH TRUNCATE_ONLY
DBCC SHRINKFILE(db_name_log,TRUNCATEONLY)

--5. 테이블 장애 발생
DROP TABLE table_name2
DBCC SHRINKFILE(db_name,TRUNCATEONLY) --데이터파일 크기를 줄인다.

--6. 로그파일 복원 해야함.