* 주의대상에 빠진 DB 복구방법
http://www.codeproject.com/Articles/20333/How-to-Restore-SQL-Server-2005-Suspect-Database
* 2005에서 checkdb 수행 후 트랜잭션 로그 축소 실패
* checkdb와 checktable로 손상된 테이블 복구하기
http://kojin777.tistory.com/101
alter database 테이블이름 set single_user
go
dbcc checkdb('테이블이름', repair_allow_data_loss)
go
alter database 테이블이름 set multi_user
최소 두번정돈 돌려주어야 찜찜한 노란색메세지를 볼수없이..초록색정상 쿼리실행 메세지를 볼수가있다.
<- 그렇다고 하니 한번만 돌리지 말고 두번정돈 돌려줘야 한다네용
http://msdn.microsoft.com/ko-kr/library/ms176064.aspx
이는 DBCC CHECKALLOC, DBCC CHECKTABLE 또는 DBCC CHECKCATALOG 명령을 DBCC CHECKDB와 별도로 실행할 필요가 없음을 의미합니다.
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
![]() |
---|
http://msdn.microsoft.com/ko-kr/library/ms176064(v=sql.90).aspx
msdn 내용중에서 2005 버전으로 다시 발췌한 거니까 위의 내용도 다시 한번 확인이 필요하다.
------------------------------------------------------------------------------------------------------
http://www.sqler.com/bSQLQA/124815
OS : Microsoft Windows 2003 Server / Enterprise Server
SQL : Microsoft SQL Server 2000 Standard / Enterprise Edition
DB 가 주의 대상 이더라구요.
응급 모드로 바꾸고
CHECKDB 하니까 오류가 많이 나오더라구요.
그래서 DBCC CHECKDB("ABC", REPAIR_ALLOW_DATA_LOSS) 했습니다.
한참 돌아 가다가
서버: 메시지 3908, 수준 16, 상태 1, 줄 1
"TmsDb" 데이터베이스는 복구 무시 모드이므로 BEGIN TRANSACTION을 실행할 수 없습니다.
메시지를 뿌리며 멈추네요...
데이터베이스 복구 무시 모드 라는게 뭔지 모르겠어요.
어떻게 해야 할까요?
-------------------------------------------------------------------------------------------------------------
이런 내용이 있었는데, 한번 확인은 필요할 것 같다. 복구 무시 모드인지 아닌지....
본문 내용중..
DBCC CHECKDB | CHECKTABLE
‘( 테이블 이름’, REPAIR_FAT
| REPAIR_REBUILD
| REPAIR_ALLOW_DATA_LOSS )
REPAIR_FAST : 클러스터드 인덱스의 별도 키를 복구하는 것과 같이 사소 하고
시간이 소요되지 않는 복구 작업을 수행합니다. 이러한 복구는
데이터 손실의 위험 없이 빨리 실행할 수 있습니다.
REPAIR_REBUILD :
REPAIR_FAST에서 이루어지는 모든 복구 작업을 수행하고
인덱스 다시 작성과 같이 시간이 소요되는 복구를 포함합니다.
이러한 복구는 데이터 손실의 위험 없이 실행할 수 있습니다.
REPAIR_ALLOW_DATA_LOSS :
REPAIR_REBUILD에서 수행하는 모든 복구 작업을 수행하며 할
당 오류, 구조적 행 오류나 페이지 오류, 손상된 텍스트 개체 삭제
를 수정하기 위한 행과 페이지의 할당 및 할당 취소가 포함 됩니
다. 이러한 복구를 할 경우 일부 데이터가 손실될 수 있습니다. 복
구 작업은 사용자가 변경 사항을 롤백할 수 있도록 사용자 트랜
잭션 내에서 수행합니다. 복구가 롤백되어도 데이터베이스에는
오류가 그대로 포함되므로 백업에서 데이터베이스를 복원해야
합니다. 제공된 복구 수준 때문에 오류 복구를 생략한 경우 해당
복구에 종속적인 모든 복구도 생략됩니다. 복구를 완료한 다음에
데이터베이스를 백업합니다.
손상된 데이터베이스를 복구하기 위해서 DBCC CHECKDB 또는 DBCC CHECKTABLE을 REPAIR_ALLOW_DATA_LOSS 복구 옵션과 함께 실행하게 되면 다음 구문에서 설명하는 바와 같이 손상된 1개 페이지의 할당이 취소되므로 3개 행 전체를 잃게 됩니다.
위와 같이 해당 옵션을 실행하게 되면 페이지 하나 할당 취소가 행 전체의 loss를 의미한다.
자세한 내용은 본문 내용을 참조해야 할 듯 싶다.
http://www.microsoft.com/korea/technet/sql/tuning_guide_developer03.mspx
손상된 데이터베이스 복구하기 (DBCC CHECKDB를 사용하여 오류 복구하기)
DBCC CHECKDB 명령어를 사용하면 특정 데이터베이스의 일관성(consistency)를 점검할 수 있습니다. DBCC CHECKDB 명령어는 데이터베이스 손상을 점검하는 주요 수단이며, 다음과 같은 사항들을 점검합니다.
- 인덱스 페이지와 데이터 페이지들이 제대로
연결되어 있는가
- 인덱스가 최신 상태이고, 제대로 정렬되어 있는가
- 포인트들이 일관성이 있는가 (Consistent)
- 각 페이지 상의 데이터가 최신 상태인가
- 페이지 오프셋이 최신 상태인가
[권고사항] REPAIR_ALLOW_DATA_LOSS 옵션을 사용하는 경우에는 명령어 수행 후에 다시 원래 상태로 복구할 수 있도록 하기 위해서
트랜잭션 내부에서 DBCC 명령어를 수행할 것을 권고합니다. 이와 같이 작업하면 복구 작업을 수행하고 결과를 확인한 다음에 필요한 경우에 롤백이
가능해집니다.
'Database > MS-SQL' 카테고리의 다른 글
메모리 병목 현상 해결 (버퍼 풀 / 논버퍼풀 메모리) (0) | 2013.10.24 |
---|---|
DBCC memorystatus 를 사용하여 메모리 모니터링 (0) | 2013.10.24 |
OLE DB 시간 제한이 만료되었습니다. (0) | 2013.07.29 |
xp_cmdshell 권한 정보 (0) | 2013.07.17 |
MS SQL DB Backup 방법 (2005) (0) | 2012.12.14 |