国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

處理SQL Server頁(yè)損壞故障

2020-12-31 05:47河南劉景云
網(wǎng)絡(luò)安全和信息化 2020年6期
關(guān)鍵詞:數(shù)據(jù)表日志備份

■ 河南 劉景云

某單位網(wǎng)站后臺(tái)使用的SQL Server 2016數(shù)據(jù)庫(kù),近來(lái)出現(xiàn)運(yùn)行故障。

SQL Server提示出現(xiàn)編號(hào)為824,級(jí)別24的錯(cuò)誤,檢測(cè)到基于一致性的邏輯I/O錯(cuò)誤pageid不正確(應(yīng)為 10:910,但實(shí)際為 0:0)。在文件 'G:dataxxx.ndf' 中,偏移量為0x00000000720000的位置對(duì)數(shù)據(jù)庫(kù)ID 5中的頁(yè)(10:910)執(zhí)行讀取期間發(fā)生了該錯(cuò)誤。

SQL Server錯(cuò)誤日志或系統(tǒng)事件日志中的其他消息可能提供了更詳細(xì)信息,這是一個(gè)威脅數(shù)據(jù)庫(kù)完整性的嚴(yán)重錯(cuò)誤條件,必須立即糾正。執(zhí)行完整的數(shù)據(jù)庫(kù)一致性檢查(DBCC CHECKDB),此錯(cuò)誤可以由許多因素導(dǎo)致。

故障排查

根據(jù)以上提示信息,可以看出這是一個(gè)典型錯(cuò)誤,說(shuō)明SQL Server中的某些頁(yè)出現(xiàn)了錯(cuò)誤,這導(dǎo)致了數(shù)據(jù)無(wú)法正常訪問(wèn)的問(wèn)題。

在進(jìn)行修復(fù)之前,需要了解頁(yè)的損壞情況,如果損壞比較嚴(yán)重,那么頁(yè)還原是沒(méi)有什么效果的。如果頁(yè)損壞并不嚴(yán)重(一般在10個(gè)以內(nèi)),那么恢復(fù)效果就比較好。

在正常情況下,數(shù)據(jù)庫(kù)的頁(yè)不會(huì)無(wú)端損壞,之所以出現(xiàn)頁(yè)損壞,根本原因是存儲(chǔ)出現(xiàn)了問(wèn)題,例如硬盤出現(xiàn)壞道等。對(duì)于這種情況,首先需要檢查磁盤狀態(tài),執(zhí)行數(shù)據(jù)庫(kù)的備份操作,并將備份數(shù)據(jù)保存到安全的位置。

對(duì)頁(yè)損壞情況要進(jìn)行嚴(yán)密監(jiān)控,如果其持續(xù)發(fā)生,就必須立即更換存儲(chǔ)設(shè)備。想了解頁(yè)損壞情況,可以在Microsoft SQL Server Management Studio中選擇目標(biāo)數(shù)據(jù)庫(kù),在工具欄上點(diǎn)擊“新建查詢”按鈕,執(zhí)行“dbcc checkdb”命令,檢查該數(shù)據(jù)庫(kù)的頁(yè)情況。如果數(shù)據(jù)庫(kù)比較大,檢測(cè)時(shí)間就會(huì)較長(zhǎng),并導(dǎo)致IO繁忙影響到用戶的使用速度。因此,最好在維護(hù)窗口中進(jìn)行檢查。當(dāng)檢測(cè)完畢,會(huì)顯示發(fā)現(xiàn)的錯(cuò)誤信息,并且以紅色表示頁(yè)損壞信息(包括頁(yè)編號(hào)等)。

也可以執(zhí)行“select *from msdb.dbo.suspect_pages”命令。利用指定的系統(tǒng)視圖,來(lái)快速檢測(cè)頁(yè)損壞情況。執(zhí)行“dbcc ind('websitedb','product',1);”命令,用于定位到表或索引使用的Page信息,其中的“websitedb”表示網(wǎng)站數(shù)據(jù)庫(kù)名稱,“product”表示其中某張表的名稱,“1”參數(shù)表示表的聚集索引。

要想查看頁(yè)中的數(shù)據(jù),需要先執(zhí)行“dbcc traceon(3604);”命令,來(lái)打開指定的跟蹤代碼。之后才可以執(zhí)行“dbcc page('websitedb ',1,910,3);”命令,來(lái)查看指定的頁(yè)中的數(shù)據(jù),這里的頁(yè)號(hào)為“910”具體頁(yè)號(hào)可以從錯(cuò)誤提示信息中得到。

除了使用上述檢測(cè)方法外,還可以使用“EXEC sys.sp_helpdb @dbname=pratice”,“USE pratice”,“XEC sys.sp_helpfile”命令,得到目標(biāo)數(shù)據(jù)庫(kù)的ID和數(shù)據(jù)庫(kù)文件ID。執(zhí)行“DBCC TRACEON(3604,-1)”,“DBCC PAGE(16,1,10,3)”“DBCC PAGE(16,1,910,3)”命令,分別檢測(cè)發(fā)生問(wèn)題的數(shù)據(jù)頁(yè)面和索引頁(yè)面,其中的“16”位目標(biāo)數(shù)據(jù)庫(kù)的ID,“10”和“910”位具體的索引頁(yè)面和數(shù)據(jù)頁(yè)面,根據(jù)返回信息,可以查看對(duì)應(yīng)頁(yè)面詳細(xì)信息。

故障解決

因?yàn)槭孪裙芾韱T對(duì)數(shù)據(jù)庫(kù)進(jìn)行了完整備份,所以修復(fù)起來(lái)就比較輕松了。SQL Server頁(yè)還原需要使用完整恢復(fù)模式,在執(zhí)行頁(yè)修復(fù)時(shí),需要遵循一定的步驟。

首先從完整備份來(lái)還原頁(yè),注意要指定頁(yè)編號(hào)。之后應(yīng)用最近的差異備份和后續(xù)日志備份,這幾個(gè)步驟和日常的還原沒(méi)有區(qū)別。接下來(lái)備份當(dāng)前日志,目的是重做事務(wù)日志序列號(hào)LSN,最后還原當(dāng)前日志。

首先執(zhí)行“Restore headeronly from disk='E:DataWebsitedb.bak';”命令,檢測(cè)備份文件的詳細(xì)信息。例如,在其中的“BackupStartDate”和“BackupFinishDate”列中顯示備份的時(shí)間點(diǎn),如果起先于頁(yè)損壞的話,就可以用來(lái)進(jìn)行修復(fù)。執(zhí)行“RESTORE DATABASE websitedb PAGE='10:910' FROM disk=' E:DataWebsitedb.bak ' WITH FILE=1,NORECOVERY;”命令,執(zhí)行恢復(fù)備份文件操作,其中“E:DataWebsitedb.bak”為備份文件路徑。

然后執(zhí)行“RESTORE LOG websitedb FROM disk='E:DataWebsitedb.bak 'WITH FILE=2,NORECOVERY;”命令,執(zhí)行日志還原操作。執(zhí)行“BACKUP LOG websitedb TO disk='E:Data WebsiteTail.trn'--WITH NO_TRUNCATE;”命令,重做事務(wù)日志序列號(hào)LSN。執(zhí)行“RESTORE LOG websitedb FROM disk=' E:Data WebsiteTail.trn 'WITH FILE=1,RECOVERY;”,“Go”命令,還原當(dāng)前日志。這樣,就修復(fù)了損壞的頁(yè)。

如果沒(méi)有完整備份,那么恢復(fù)起來(lái)就比較繁瑣了。如果僅僅是索引頁(yè)出現(xiàn)問(wèn)題,可以先Drop索引,之后再創(chuàng)建索引即可修復(fù),這不會(huì)造成任何數(shù)據(jù)損失。如果是數(shù)據(jù)頁(yè)出現(xiàn)問(wèn)題,就需要確定發(fā)生錯(cuò)誤的頁(yè)面屬于哪一個(gè)數(shù)據(jù)表,可以執(zhí)行“SELECT s.name AS N'架構(gòu)名' o.name AS N'表名'FROM sys.sysobjects o INNER JOIN sys.schemas s ON o.uid=s.schema_id WHERE o.id=xxx”命令,來(lái)找到對(duì)應(yīng)的數(shù)據(jù)表。

“xxx”為“ObjectID”的值,在執(zhí)行上述DBCC PAGE(16,1,10,3)”命令時(shí),在返回信息中的“Metadata:ObjectId=”會(huì)顯示具體數(shù)值。找到目標(biāo)數(shù)據(jù)表后,即可將內(nèi)容導(dǎo)出。

具體操作時(shí)不用新建數(shù)據(jù)庫(kù),只需在原來(lái)數(shù)據(jù)庫(kù)下新建文件組和數(shù)據(jù)文件即可。方法是在新文件組里重建損壞的表,即新建的表屬于新建的文件組,表結(jié)構(gòu)要跟損壞的表完全一致,并將上述原始表數(shù)據(jù)導(dǎo)入到新表中,最后清空原始表。

猜你喜歡
數(shù)據(jù)表日志備份
一名老黨員的工作日志
扶貧日志
如何只備份有用數(shù)據(jù)而不備份垃圾數(shù)據(jù)
湖北省新冠肺炎疫情數(shù)據(jù)表(2.26-3.25)
湖北省新冠肺炎疫情數(shù)據(jù)表
湖北省新冠肺炎疫情數(shù)據(jù)表
創(chuàng)建vSphere 備份任務(wù)
Windows10應(yīng)用信息備份與恢復(fù)
雅皮的心情日志
雅皮的心情日志