[SQL Server] 資料庫損毀與修復


週日傍晚異常斷電,UPS 也掛了,周一早上重開後,伺服器一直跑得不順,在事件檢視器發現資訊訊息,建議跑 DBCC CHECKDB (SQL Server 2014 的資料庫)

Info:825 建議進行資料庫檢查
Info:825 建議進行資料庫檢查

另外也有錯訊息

Fail:8646 建議進行資料庫檢查
Fail:8646 建議進行資料庫檢查
Fail:824 建議進行資料庫檢查
Fail:824 建議進行資料庫檢查

周一下午跑過
DBCC CHECKDB (db)

Info:8957 資料庫修復結果
Info:8957 資料庫修復結果

,修復了 77 個錯誤。

但此之後,就頻繁發生 LOCK 錯誤

Fail:1204 無法 LOCK 資源
Fail:1204 無法 LOCK 資源

並且仍然會發生建議要跑 DBCC 的錯誤。

Info:825 建議進行資料庫檢查
Info:825 建議進行資料庫檢查

考慮了一晚,周二早上決定建新資料庫:

  1. 新建 db1 ,把 db 周日凌晨定時備份還原到 db1
  2. db 更名為 db_o ,db1 更名為 db
  3. 用匯入匯出精靈把 周日備份後的資料從 db_o 匯入到 db1
  4. 所以 db_o 除了人為測試與自動備份外,等同無人存取

週二晚上本著廢物利用的精神,平常沒機會玩資料庫修復,跑:
DBCC CHECKDB (db_o)
多次,每次跑完,錯誤數都比前一次多 (主要為索引錯誤)

Info:8957 資料庫檢查52個錯誤
Info:8957 資料庫檢查52個錯誤
Info:8957 資料庫檢查54個錯誤
Info:8957 資料庫檢查54個錯誤


DBCC CHECKDB (db_o, REPAIR_REBUILD)

Info:8957 資料庫檢查59個錯誤
Info:8957 資料庫檢查59個錯誤

無法修復

另外發生資料庫存取時間過長。

Info:833 存取超過15秒
Info:833 存取超過15秒

改跑
DBCC CHECKDB (db_o, REPAIR_ALLOW_DATA_LOSS)

Info:8957 資料庫修復60個錯誤
Info:8957 資料庫修復60個錯誤

修復了 60 個錯誤,又比上面 DBCC CHECKDB (db_o) 檢查的錯誤要多。

再跑一次:
DBCC CHECKDB (db_o, REPAIR_ALLOW_DATA_LOSS)

Info:8957 資料庫修復11個錯誤
Info:8957 資料庫修復11個錯誤

又修復了 11 個錯誤。

早上再跑一次
DBCC CHECKDB (db_o, REPAIR_ALLOW_DATA_LOSS)

Info:8957 資料庫修復結果
Info:8957 資料庫修復結果

終於沒錯誤了。

周二傍晚 db (原db1) 在事件檢視器有跳出資訊建議跑 DBCC CHECKDB ,但今天改跳出故障,建議跑 DBCC CHECKDB ,回頭翻了跳電前的 db_o 是有資訊事件建議跑 DBCC CHECKDB ,所以我想應該是還原時,把原先 db_o 的索引錯誤還原到 db1 ,利用午休的時間跑
DBCC CHECKDB (db, REPAIR_ALLOW_DATA_LOSS)
多次,直到沒有錯誤為止。

沒錯誤後,另外跑重建索引
DBCC DBREINDEX (DataTable)

但是晚上仍然發生建議跑 DBCC CHECKDB ,我有跑了

Info:825 建議進行資料庫檢查
Info:825 建議進行資料庫檢查


DBCC CHECKDB(db)

Info:8957 資料庫檢查0個錯誤
Info:8957 資料庫檢查0個錯誤

顯示 0 個錯誤,此外上面 LOCK 錯誤訊息持續出現。

目前找不到問題來源,懷疑可能跳電時,硬碟或 RAID 控制卡有受損,因為有些問題是持續存取時間過久,這次事件就是純練功修復資料庫了。

廣告
Categories: SQL, 工作點滴, 技術分享 | 標籤: | 1 則迴響

文章分頁導航

One thought on “[SQL Server] 資料庫損毀與修復

  1. 由於 1204 無法 LOCK 資源的錯誤持續不斷發生,約每次重新啟動 SQLServer 服務後,兩小時內必然持續發生,最後重新開一個空白資料庫 db,用匯入匯出精靈把資料從 db1 匯入到 db ,在凌晨 01:30 左右完成,持續到中午 12:00 都還沒有任何 MSSQLSERVER 的錯誤或資訊發生。
    終於結束這回合。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

在 WordPress.com 建立免費網站或網誌.

%d 位部落客按了讚: