루돌넷 DB가 뻑나다, 그리고 복구하다

어버이날 함께하지 못한 가족식사를 뒤늦게 마치고 집에 들어와서 루돌넷 관리를 위해 Management Studio를 열었는데, 잉? 왠 824 오류? 이런 오류는 처음이라 급 당황하여 인터넷을 뒤져 보았다. 그리고, 이 오류는 여러 가지 원인이 있고, 일반적으로 Checksum error일 경우가 많다는 것까진 알았는데, 난 그게 무슨 오류인지도 모르겠고, 13년간 직접 정성들여 써온 내 글들이 날아가는 것 아닌가라는 걱정에 식은 땀을 삐질삐질 흘리며 다시 구글님에게 도움을 청하니 다행스럽게도 해결방법은 나와 있었고, 큰 문제없이 해결이 되었다.

난 13년동안 루돌넷을 운영하면서 이러한 에러를 한번도 경험하지 못했는데, 간혹가다가 이런 문제가 발생하기도 하는 듯하다. 자세히는 모르겠지만, 데이터 무결성 차원에서 에러가 발생하여 Indexing을 하다가 오류를 밷어내는 듯하다. 내가 워낙에 실무에서도 잘 안쓰는 Foreign Key까지 엄격하게 만들어 놓아서리...

덕분에 다음과 같은 명령어를 알게 되었다.
exec sp_dboption ['DB name'],'single_user', true
DBCC CHECKTABLE('Table name', REPAIR_ALLOW_DATA_LOSS )

첫번째는 DB에 대한 수정을 위해서 DB의 접근을 Single User 방식으로 변경하는 것이고, 그 다음 명령어가 체크섬 에러를 고치는 명령어이다. REPAIR_ALLOW_DATA_LOSS 파라메터가 좀 Risky하니 다른 파라메터를 먼저 사용해보고 안되면 사용하라고 하였는데, 다른 것이 잘 안되기에 이 파라메터를 사용했고, 특별한 문제점을 발견하지는 못했다.

이 이슈를 처리하는데 가장 많이 도움이 된 곳이 아래 링크이다. 역시 MS계열은 Devpia가 잘 되어 있다.
http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=41&MAEULNo=17&no=6619&ref=6615

by 이상욱