資料庫映象會話期間的自動頁修復
在 SQL Server 2008 Enterprise 或更高版本上執行的資料庫映象夥伴會自動嘗試解決阻止讀取資料頁的特定型別的錯誤。 無法讀取頁的夥伴會從其他夥伴請求新副本。 如果此請求成功,則將以新副本替換不可讀的頁,這通常會解決該錯誤。
注意:
資料庫映象夥伴進行的自動頁修復不同於 DBCC 修復。 自動頁修復會保留所有資料。 相反,使用 DBCC REPAIR_ALLOW_DATA_LOSS 選項更正錯誤可能需要刪除某些頁(從而會刪除資料)。
導致自動頁修復嘗試的錯誤型別
資料庫映象自動頁修復只嘗試修復特定資料檔案中的頁,此資料檔案是指對其執行的操作由於下表中列出的某一錯誤而失敗的資料檔案。
錯誤號 說明 導致自動頁修復嘗試的例項
823
僅當作業系統對資料執行迴圈冗餘檢查 (CRC) 失敗時才執行此操作。
ERROR_CRC。 此錯誤的作業系統值為 23。
824
邏輯錯誤。
邏輯資料錯誤,例如殘缺寫或錯誤的頁校驗和。
829
頁已標記為還原已掛起。
全部。
若要檢視最近的 823 CRC 錯誤和 824 錯誤,請參閱 msdb 資料庫中的 suspect_pages 表。
無法自動修復的頁型別
以下控制頁型別無法通過資料庫映象修復:
檔案頭頁(頁 ID 0)。
頁 9(資料庫啟動頁)。
分配頁:全域性分配對映 (GAM) 頁、共享全域性分配對映 (SGAM) 頁和頁可用空間 (PFS) 頁。
處理主體資料庫中的 I/O 錯誤
在主體資料庫中,僅當節點處於 SYNCHRONIZED 狀態且主體伺服器仍向映象伺服器傳送日誌記錄時,才會嘗試自動頁修復。 自動頁修復嘗試中操作的基本順序如下:
當主體資料庫中的資料頁上發生讀取錯誤時,主體伺服器將使用相應的錯誤狀態在 suspect_pages 表中插入一行。 然後,主體伺服器從映象伺服器請求此頁的副本。 此請求指定當前在重新整理日誌末尾的頁 ID 和 LSN。 此頁將標記為“還原已掛起”。 這將使它在自動頁修復嘗試期間不可訪問。 修復嘗試期間對此頁的訪問嘗試將失敗,並顯示錯誤 829(還原已掛起)。
收到頁請求後,映象伺服器將等待,直到將日誌重做到請求中指定的 LSN 處。 然後,映象伺服器將嘗試訪問映象資料庫中的此頁。 如果可以訪問此頁,則映象伺服器將此頁的副本傳送到主體伺服器。 否則,映象伺服器將向主體伺服器返回錯誤,並且自動頁修復嘗試失敗。
主體伺服器處理包含此頁新副本的響應。
自動頁修復嘗試修復可疑頁後,此頁將在 suspect_pages 表中標記為已還原 (event_type = 4)。
如果此頁 I/O 錯誤導致出現任何延遲的事務,則修復此頁後,主體伺服器將嘗試解決這些事務。
處理映象資料庫中的 I/O 錯誤
將用以下方式處理在映象資料庫中發生的資料頁 I/O 錯誤。
如果映象伺服器在其重做日誌記錄時遇到一個或多個頁 I/O 錯誤,則映象會話將進入 SUSPENDED 狀態。 此時,映象伺服器使用相應的錯誤狀態在 suspect_pages 表中插入一行。 然後,映象伺服器從主體伺服器請求此頁的副本。
主體伺服器嘗試訪問主體資料庫中的此頁。 如果可以訪問此頁,則主體伺服器將此頁的副本傳送到映象伺服器。
如果映象伺服器收到它請求的每一頁的副本,則映象伺服器將嘗試恢復映象會話。 如果自動頁修復嘗試修復了可疑頁,此頁將在 suspect_pages 表中標記為已還原 (event_type = 4)。
如果映象伺服器未從主體伺服器收到它請求的頁,則自動頁修復嘗試將失敗並且映象會話保持掛起。 如果手動恢復映象會話,則損壞的頁將在同步階段再次導致錯誤。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-496062/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫映象期間可能出現的故障處理資料庫
- MySQL資料庫InnoDB壞頁處理修復MySql資料庫
- 資料庫修復資料恢復資料庫資料恢復
- Firebird資料庫修復資料庫
- Interbase資料庫修復資料庫
- Sqlserver2008 資料庫映象會話的初始連線SQLServer資料庫會話
- SQL Server資料庫映象的FailOver自動連線SQLServer資料庫AI
- 資料庫中會話休眠一段時間資料庫會話
- PostgreSQL 恢復大法 - 恢復部分資料庫、跳過壞塊、修復無法啟動的資料庫SQL資料庫
- 如何修復mysql資料庫MySql資料庫
- SQL Server 資料頁損壞修復SQLServer
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- redo損壞修復啟動資料庫辦法資料庫
- Oracle資料庫壞塊修復Oracle資料庫
- RMAN 資料庫修復(restore)與資料庫恢復(recover)介紹資料庫REST
- 修復MSSQLSERVER資料庫置疑的步驟SQLServer資料庫
- ORACLE資料庫中刪除表資料後,資料庫表空間已使用不會自動減少Oracle資料庫
- win10自動修復無法修復你的電腦 華碩win10自動修復無法開機Win10
- 已為資料庫映象啟動資料庫,必須刪除資料庫映象才能刪除該資料庫資料庫
- 【資料庫資料恢復】透過資料頁恢復Sql Server資料庫資料的過程資料庫資料恢復SQLServer
- 修復資料庫壞塊之五資料庫
- 修復資料庫壞塊之四資料庫
- 修復資料庫壞塊之三資料庫
- 修復資料庫壞塊之二資料庫
- 修復資料庫壞塊之一資料庫
- 【資料庫資料恢復】SQL Server資料庫磁碟空間不足的資料恢復案例資料庫資料恢復SQLServer
- SQL Anywhere db檔案損壞修復 DB檔案修復 DB資料庫修復SQL資料庫
- docker 啟動 centos 映象,容器會自動退出DockerCentOS
- 自動更新資料庫資料的shell資料庫
- uWSGI 使用基於資料庫的方式會話資料庫會話
- 怎麼殺掉特定的資料庫會話資料庫會話
- 資料庫會話數量過多,定期清理inactive會話資料庫會話
- 啟動資料庫映象監視器資料庫
- SQLite資料庫損壞及其修復探究SQLite資料庫
- 使用DBCC CHECKDB工具修復資料庫XT資料庫
- 伺服器陣列資料庫修復伺服器陣列資料庫
- DG修復:異常關庫導致的資料庫啟動失敗ORA-01110及GAP修復資料庫
- MySQL資料庫表損壞後的修復方法MySql資料庫