SQL Server/SQL Server Tip

Suspect_pages 테이블 이해 및 관리

SungWookKang 2015. 7. 22. 10:36
반응형

Suspect_pages 테이블 이해 및 관리

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

Suspect_pages 테이블은 SQL Server 2005부터 도입되었으며 msdb 데이터베이스에 위치한다. 주의대상이 발생하였을 때 대상 페이지에 대한 정보를 유지 관리하는데 사용되며 복원이 필요한지 여부를 결정하는데 사용 된다.

 

 

SQL Server 데이터베이스 엔진에서 데이터 페이지를 읽으려고 할 때 다음 오류 중 하나가 발생하면 페이지가 "주의대상"으로 간주 된다.

  • 디스크 오류(특정 하드웨어 오류)와 같이 운영체제에서 실행되는 CRC(순환 중복 검사)로 인해 발생하는 823 오류
  • 조각난 페이지(논리적 오류)와 같은 824 오류

 

데이터베이스 엔진에서 다음과 같이 정상적인 처리 중에 발생하는 모든 주의대상 페이지는 suspect_pages 테이블에 기록된다.

  • 쿼리에서 페이지를 읽어야 하는 경우
  • DBCC CHECKDB 작업이 수행중인 경우
  • 백업 작업이 수행중인 경우

 

복원작업, DBCC 복구 작업, 데이터베이스 삭제 작업 동안 필요한 경우 suspect_gapes 테이블이 업데이트 된다. suspect_pages 테이블은 824 오류가 발생하여 실패한 페이지당 하나의 행을 포함하며 최대 1000행까지 보관된다.

오류 설명

Event_type 값

운영체제 CRC 오류로 인해 발생하는 823 오류 또는 잘못된 체크섬이나 조각난 페이지 이외의 824 오류(예 : 잘못된 페이지 ID)

1

잘못된 체크섬

2

조각난 페이지

3

복원됨(페이지가 잘못된 것으로 표시된 후 복원됨)

4

복구됨(DBCC가 페이지를 복구함)

5

DBCC에 의해 할당 취소됨

7

 

 

다음 동작을 수행하면 suspect_pages 테이블에서 행이 자동으로 삭제 된다.

  • ALTER DATABASE REMOVE FILE
  • DROP DATABASE
  • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS는 suspect_pages 테이블을 업데이트하여 할당 취소되었거나 복구된 각 페이지를 표시한다.
  • RESTORE도 이 목록을 업데이트 한다. 전체, 파일 또는 페이지 복원을 수행하면 페이지 항목이 복원된 것으로 표시된다.

 

 

[suspect_pages 테이블의 일부 행을 삭제]

'Select restored, repaired, or deallocated pages.'

DELETE FROM msdb..suspect_pages

WHERE (event_type = 4 OR event_type = 5 OR event_type = 7);

GO

 

[suspect_pages 테이블에서 잘못된 페이지 검색]

'Select nonspecific 824, bad checksum, and torn page errors.'

SELECT * FROM msdb..suspect_pages

WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);

GO

 

 

DBA는 데이터를 관리 해야 하는 의무와 책임이 있기에 이 테이블이 꽉 차지 않도록 수동으로 지우거나 따로 관리 테이블에 백업하는 방식을 고민해야 한다. Suspect_pages 테이블에 추가되는 행이 갑자기 증가하는 경우 I/O 하위 시스템에 문제가 있는지 조사해 보도록 하자.

 

[참고자료]

 

 

 

2013-08-21 / 강성욱 / http://sqlmvp.kr

 

 

 

반응형