資料庫完整性檢查

來源:互聯網
上載者:User

標籤:checkdb   ola   

為了主動探索資料庫側頁損壞,保證資料庫邏輯和物理完整性,計劃每周六上午6點,針對生產主庫上的所有系統和使用者資料庫執行DBCC CHECKDB,將結果記錄到表中。


以下為理論依據:


SQL Server資料庫可以檢測出頁損壞,此時,具體的表現形式可能為下述三種錯誤的一種:

  • 823錯誤,也就是所謂的硬IO錯誤,可以理解為SQL Server希望讀取頁,而Windows告訴SQL Server,無法讀取到該頁。

  • 824錯誤,也就是所謂的軟IO錯誤,可以理解為SQL Server已經讀取到該頁,但通過計算CheckSum等值發現不匹配,因此SQL Server認為該頁已經被損壞。

  • 825錯誤,也就是所謂Retry錯誤。


SQL Server發現錯誤的方法有兩種,分別為在讀取頁時和在備份時(本質上也是讀取頁)。但如果我們希望對於資料一致性的檢查更加的全面,那我們應該定期使用CheckDB來檢查資料的一致性,而不至於在生產時間資料被讀取時才能發現錯誤。


CheckDB命令在企業版中會使用多線程來進行,會對整個資料庫進行一致性檢查,在該過程中,使用了內建資料庫快照集的方式進行,因此不會造成阻塞,但CheckDB會消耗大量的CPU、記憶體和IO。因此CheckDB要選擇在維護視窗時間或是系統閑時進行。


實際上,CheckDB是一套命令的匯總,通過執行下列操作檢查指定資料庫中所有對象的邏輯和物理完整性:

  • 初次檢查系統資料表

  • 配置單位檢查(DBCC CHECKALLOC)

  • 完整檢查系統資料表

  • 對所有表進行一致性邏輯檢查(DBCC CHECKTABLE)

  • 中繼資料檢查(DBCC CHECKCATALOG)

  • SSB檢查

  • 索引檢視表、XML索引等檢查


微軟最佳實務建議


“建議您使用 PHYSICAL_ONLY 選項,以便可以頻繁檢查生產系統。 使用 PHYSICAL_ONLY 可以極大地縮短對大型資料庫運行 DBCC CHECKDB 的已耗用時間。 同時建議您定期運行沒有選項的 DBCC CHECKDB。 應當以什麼頻率執行這些運行任務將取決於各個企業及其生產環境。

”引用自:

https://docs.microsoft.com/zh-cn/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql


成熟的方案


可以使用 https://ola.hallengren.com/

實現備份、完整性檢查、索引和統計資訊維護整套方案。


資料庫完整性檢查

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.