suspect_pages 테이블 이해 및 관리

업데이트: 2005년 12월 5일

SQL Server 2005에서는 각 서버 인스턴스의 msdb database에 있는 suspect_pages 테이블의 주의 대상 페이지에 대한 정보를 유지 관리합니다. suspect_pages 테이블은 복원의 필요 여부를 결정하는 작업과 관련이 있습니다.

SQL Server 데이터베이스 엔진에서 824 오류(다음 표 참조)를 포함하는 데이터베이스 페이지를 읽으면 페이지가 "주의 대상"으로 간주되고 해당 페이지 ID가 suspect_pages 테이블에 기록됩니다. 데이터베이스 엔진에서는 다음과 같은 정상적인 처리 중에 발생하는 모든 주의 대상 페이지를 기록합니다.

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

또한 복원 작업, DBCC 복구 작업 또는 데이터베이스 삭제 작업 동안 필요한 경우 suspect_pages 테이블이 업데이트됩니다.

suspect_pages 테이블에 기록되는 오류

suspect_pages 테이블은 824 오류가 발생하여 실패한 페이지당 하나의 행을 포함합니다(최대 1,000개 행까지). suspect_pages 테이블의 event_type 열에 기록되는 824 오류는 다음과 같습니다.

오류 설명 event_type

잘못된 체크섬 또는 조각난 페이지 이외의 824 오류(예: 잘못된 페이지 ID)

1

잘못된 체크섬

2

조각난 페이지

3

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

4

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

5

DBCC에 의해 할당 취소됨

7

또한 suspect_pages 테이블에서 일시적인 오류를 기록합니다. 일시적인 오류의 원인으로는 I/O 오류(예: 케이블 연결 끊김) 또는 일시적으로 반복 체크섬 테스트에 실패한 페이지 등이 있습니다.

데이터베이스 엔진의 suspect_pages 테이블 업데이트 방법

데이터베이스 엔진은 suspect_pages 테이블에 대해 다음 작업을 수행합니다.

  • 테이블이 꽉 차지 않았다면 824 오류가 발생할 때마다 업데이트되어 오류 발생이 표시되고 오류 카운터가 증가합니다.
  • 페이지를 복구, 복원 또는 할당 취소하여 수정한 후에도 오류가 있으면 number_of_errors 수가 증가하고 해당 last_update 열이 업데이트됩니다.
  • 나열된 페이지를 복원 또는 복구 작업으로 수정하면 suspect_pages 행이 업데이트되어 페이지가 복구(event_type = 5) 또는 복원(event_type = 4)되었음을 나타냅니다.
  • DBCC Check를 실행하면 오류가 없는 페이지는 복구(event_type = 5) 또는 할당 취소(event_type = 7)된 것으로 표시됩니다.

suspect_pages 테이블의 자동 업데이트

다음 작업에서는 suspect_pages 테이블의 행을 자동으로 삭제합니다.

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

데이터베이스 관리자의 유지 관리 역할

데이터베이스 관리자는 주로 오래된 행을 삭제함으로써 테이블을 관리할 책임이 있습니다. suspect_pages 테이블은 크기에 제한이 있으며 모두 채워지면 더 이상 새로운 오류가 기록되지 않습니다. 이 테이블의 크기가 제한에 근접하면 데이터베이스 관리자 또는 시스템 관리자가 이 테이블에서 행을 삭제하여 오래된 항목을 수동으로 지워야 합니다. 데이터베이스 관리자가 이 작업을 수행할 때까지 추가 항목은 허용되지 않습니다.

데이터베이스 관리자는 또한 레코드를 삽입하거나 업데이트할 수 있습니다. 예를 들어 데이터베이스 관리자가 특정 주의 대상 페이지가 존재함을 알고 있지만 잠시 동안 해당 레코드를 보존하려는 경우 행 업데이트가 유용할 수 있습니다.

다음 예에서는 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

참고 항목

개념

페이지 복원 수행

관련 자료

DROP DATABASE(Transact-SQL)
RESTORE(Transact-SQL)
BACKUP(Transact-SQL)
DBCC(Transact-SQL)
suspect_pages(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기