BLOG main image
분류 전체보기 (45)
SQL Server 이야기 (45)
일상 (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2009. 10. 15. 21:53

전체 백업 실패 후 차등 백업을 하게 되면, 기존 차등 백업 보다 파일 크기가 커지는 현상이 발생할 수 있습니다.
DCM페이지(Differential Changed Map)는 최근 전체 백업 이후에 변경된 페이지만을 마킹하게 되며
차등 백업은 DCM페이지에 마킹된 페이지만을 백업하게 됩니다.

그렇다면 전체 백업을 할 때 기존에 마킹 되어있던 DCM페이지를 초기화 해야 하는 작업이 필요 하며,
이러한 작업은 비문서화된 TRACE FLAG를 통해 확인할 수 있습니다.
DBCC TRACEON(3004, 3605,3213,3604, -1) 을 통해 아래와 같이 확인이 가능합니다.
이 TRACE FLAG의 정보를 통해 백업 동작 방식에 대해 조금 더 깊게 이해할 수 있습니다.

Backup: Clearing differential bitmaps
Backup: Bitmaps cleared


그렇다면, 전체 백업 단계 중 위 작업이 완료 되고, 전체 백업이 실패한다면?
과연 어떻게 될까 하는 생각에 테스트를 진행하였으며 결과는 차등 백업이 전체 백업 정도와 동일한 크기로 생성되게 됩니다.

뭐 이렇게 동작하는 이유는 단순하게 차등 백업은 DCM만을 활용하는 것이 아닌
트랜잭션 로그 또는 DB 부트 페이지 정보와 비교해서 판단하는 것이 아닐까 생각됩니다.

혹시 아시는 분 있으시면 공유 해주시면 감사하겠습니다.

Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86)
Mar 29 2009 10:27:29
Copyright (c) 1988-2008 Microsoft Corporation
Developer Edition on Windows NT 6.1 <X86> (Build 7100: )

BACKUP DATABASE TEST to disk = 'c:\1.bak'

파일 1에서 데이터베이스 'TEST', 파일 'TEST' 대해 15232개의 페이지를 처리했습니다 .

파일 1에서 데이터베이스 'TEST', 파일 'TEST_log' 대해 1개의 페이지를 처리했습니다 .

 

SELECT TOP 1000

       row_number() over(order by (select 1)) as col1

       ,cast('' as char(5000)) as col2

INTO tbl11

FROM sys.sysindexes A,sys.sysindexes A1,sys.sysindexes A2,sys.sysindexes A3

  

BACKUP DATABASE TEST to disk = 'c:\2.bak' with DIFFERENTIAL

파일 1에서 데이터베이스 'TEST', 파일 'TEST' 대해 1128개의 페이지를 처리했습니다 .

파일 1에서 데이터베이스 'TEST', 파일 'TEST_log' 대해 4개의 페이지를 처리했습니다 .

 

SELECT TOP 1000

       row_number() over(order by (select 1)) as col1

       ,cast('' as char(5000)) as col2

INTO tbl12

FROM sys.sysindexes A,sys.sysindexes A1,sys.sysindexes A2,sys.sysindexes A3

  

BACKUP DATABASE TEST to disk = 'c:\3.bak' --fail

메시지 3204, 수준 16, 상태 1, 2

백업 또는 복원 작업이 중단되었습니다.

메시지 3013, 수준 16, 상태 1, 2

BACKUP DATABASE() 비정상적으로 종료됩니다.

사용자가 쿼리를 취소했습니다.

  

BACKUP DATABASE TEST to disk = 'c:\4.bak' with DIFFERENTIAL

파일 1에서 데이터베이스 'TEST', 파일 'TEST' 대해 17232개의 페이지를 처리했습니다 .

파일 1에서 데이터베이스 'TEST', 파일 'TEST_log' 대해 1개의 페이지를 처리했습니다 .

  

송 혁, SQL Server MVP
sqler.pe.kr // sqlleader.com
hyoksong.tistory.com