SQL 2008 R2 Sp1 적용과 9013 오류
- 포맷 섹터 크기에 따른 오류
- Version : SQL Server 2008R2 SP1
최근 디스크의 포맷 방식이 변화하고 있다고 한다. SQL Server를 운영할 때 기존의 포맷과 다른 섹터크기의 포맷을 사용하면 어떻게 될까?
오류에 대해서 살펴보기 전에 다음 포스트를 참고하여 포맷이 어떤 방향으로 변하는지 트렌드를 알아 보자.
- 디스크 섹터 크기와 데이터베이스 성능 : http://sqlmvp.kr/140192782721
이 포스트는 CSS SQL Server Engineer 블로그에 게시된 것으로 필자가 읽고 이해한 내용을 정리하였다. 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세한 내용은 원문을 참고하길 바란다.
SQL Server 2008R2 SP1에서 512바이트의 동적 공간 디스크 드라이브를 더 큰 물리적 섹터를 수용 할 수 있도록 업데이트 했다. 이는 일반적으로 4K의 물리적 섹터 크기 드라이브이며 SQL 2008R2 트랜잭션 로그 코드는 동적으로 다양한 분야의 구성을 수용하기 위해 제시된 물리적 섹터 크기로 조정 된다.
포맷된 섹터 크기(데이터베이스가 생성된 디스크의 물리적 섹터 크기)는 데이터베이스의 메타데이터에 저장하고 데이터베이스를 다시 시작할 때 ( recovered/online…) 우리는 로그 파일에 기록된 데이터가 이 형식의 섹터크기 경계에 정렬되어 있는지 확인 한다. 데이터가 경계선과 맞지 않다면 에러로그에 오류 메시지를 기록 한다.
ErrorNum | 9013 |
ErrorMessage | The tail of the log for database %ls is being rewritten to match the new sector size of %d bytes. %d bytes at offset %I64d in file %ls will be written |
SQL Server 2008R2 SP1 기반의 빌드된 SQL Server에 적용후 재시작 하였을 때 master, msdb.model database 에서 발생한다.
다음 그림은 masterlog.ldf의 예이다. SQL Server는 4K의 논리적 섹터크기를 가지고 있지만 디스크는 512 바이트 섹터를 사용한다.
SQL Server 2008R2 SP1에서 우리는 512바이트의 물리적 섹터를 감지하고 우리의 쓰기 경계로 사용한다. 이전 버전의 포맷(논리적) 섹터 크기를 사용한다. 예를 들어 우리는 지금 1,2섹터를 쓸 수 있다. SQL Server를 다시 시작할 때 SQL 2008R2 SP1 로그 파일은 메타데이터(4K)에 선택되어 있고 정렬되어 있지 않아 경고가 발생한다. 나머지 6섹터는 빈 데이터로 기록하여 4K 경계로 정렬한다. 그러나 로그 적용에 기록 할 때 다시 512바이트 경계로 기록하고 재시작시 위의 동작을 반복 한다.
이것은 데이터베이스의 위험이 되지는 않는다. SQL Server는 섹터 정렬 경계에 쓰고 그냥 섹터 크기의 논리적 및 물리적 불일치는 시작 메시지의 잡음 정도이다.
추가로 파티션 및 디스크 할당에 대해서 다음 포스트를 참고하면 좋을 듯 하다.
- 파티션 오프셋과 SQL Server에 대한 디스크 할당 단위 크기 :
[참고자료]
- 파티션 오프셋과 SQL Server에 대한 디스크 할당 단위 크기 :
- 디스크 섹터 크기와 데이터베이스 성능 : http://sqlmvp.kr/140192782721
2013-11-06 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server 17953 오류 - SidePageTable::Init() DeviceIoControl() : Operating system error 1(Incorrect function.) encountered (0) | 2015.07.23 |
---|---|
SQL 연결 18056 오류 (0) | 2015.07.23 |
JDBC 로깅 파일 위치 설정 (0) | 2015.07.23 |
NUMA Node 메모리 블록 (0) | 2015.07.23 |
AppDomain unloading 오류 로그 – CLR 오류 (0) | 2015.07.23 |