연구개발/SQL2005

[SQL2005 Guide] 데이터베이스 축소하기

알 수 없는 사용자 2009. 6. 19. 14:45

데이터베이스 축소

 

DBCC SHRINKDATABASE 또는 DBCC SHRINKFILE 사용하여 수동으로 데이터베이스를 축소할 있습니다. 데이터베이스의 특정 데이터 파일이나, 트랜잭션 로그 파일의 크기를 축소하는 경우에는 DBCC SHRINKFILE 사용합니다. 데이터베이스의 AUTO_SHRINK 옵션을 TRUE 설정하면 파일에서 사용되지 않는 공간이 25% 이상이 되면 파일이 자동으로 축소됩니다. 그렇지만, 일반적으로 축소가 필요할 DBCC SHRINKDATABASE 또는 DBCC SHRINKFILE 문을 사용하여 데이터베이스를 적절한 크기로 수동으로 축소하는 것을 권고합니다.

 

n       파일을 지정하지 않고 데이터베이스만 지정하고 축소할 있습니다.

[따라하기] 데이터베이스 전체 크기 10% 여유공간이 남도록 데이터베이스 축소하기

DBCC SHRINKDATABASE (Sample, 10);

GO

 

n       특정 파일의 크기만 축소할 있습니다. 개별 데이터 파일이나 로그 파일을 원래의 크기보다 작게 축소하고자 하는 경우에는 DBCC SHRINKFILE 명령어를 사용합니다.

[따라하기] Sample 데이터베이스의 Sample_dat 파일을 10MB 축소하기

USE Sample;

DBCC SHRINKFILE (Sample_dat, 10);

GO

 

n       트랜잭션 로그 파일 축소하기

DBCC SHRINKDATABASE DBCC SHRINKFILE에서 사용할 있는 TRUNCATE 옵션은 데이터 파일에만 적용되며 로그 파일에 대해서는 적용되지 않습니다. 명령어를 수행한다고 해서 로그가 삭제되는 것은 아닙니다. 로그 파일은 즉시 크기가 줄어들지 않으며 트랜잭션 로그를 백업하거나 삭제할 크기가 줄어듭니다. 트랜잭션 로그 파일의 크기 축소는 가상 로그 파일의 크기 단위로 이루어집니다. 로그 파일의 공간이 부족하여 빈번하게 자동 증가가 발생하면, 로그가 많은 수의 가상 로그 파일들로 조각화되어 데이터베이스 시작뿐 아니라 로그 백업 복원 작업이 느려질 있습니다. 가상 로그 파일의 수가 지나치게 많아진 경우에는 가상 로그 파일을 제거하고, 트랜잭션 로그 파일을 적절한 크기로 변경합니다.

 

[따라하기] 가상 로그 파일 개수를 줄이고 로그 파일 크기 축소하기

Sample 데이터베이스의 Sample_log 로그 파일의 가상 로그 파일을 제거하여, 트랜잭션 로그 파일을 축소합니다.

1.       가상 로그 파일의 개수를 확인합니다. 결과 행의 수가 가상 로그 파일의 수입니다.

USE Sample;

GO

DBCC LOGINFO;

GO

 

2.       트랜잭션 로그 백업을 수행합니다. 로그 백업을 받을 없는 경우에는 로그를 잘라냅니다. 로그를 잘라낸다고 해서 실제 로그 파일의 크기가 줄어들지는 않습니다. 그러나 로그를 잘라내면 논리 로그의 크기가 줄어들고 논리 로그 부분을 포함하지 않는 가상 로그가 비활성으로 표시합니다. 로그 축소 작업이 수행되면 요청된 크기만큼 로그 파일이 충분히 축소될 있도록 비활성 가상 로그를 제거하게 되므로, 사전에 로그를 백업하거나 잘라내는 것이 좋습니다.

 

BACKUP LOG Sample TO DISK='D:\DBBackup\Sample_Log.bak';

GO

-- 또는

BACKUP LOG Sample WITH NO_LOG;

GO

 

3.       트랜잭션 로그 파일의 크기를 가능한 작은 크기로 축소합니다.

DBCC SHRINKFILE (Sample_log, TRUNCATEONLY);

GO

 

4.       로그 파일의 크기를 적절한 크기로 변경합니다.

ALTER DATABASE Sample

MODIFY FILE

    ( NAME = 'Sample_log'

    , SIZE = 30MB);

GO