■ 陸軍步兵學院石家莊校區 薄鵬 國防大學聯合作戰學院 聶磊
筆者所在單位使用的是在服務器部署安裝H3C智能管理中心(IMC),客戶端安裝終端認證程序進行上網認證。iMC(智能管理中心)依賴數據庫,目前iMC在Windows環境下支持SQL 2005和SQL 2008數據庫。
某日清晨,筆者發現客戶端連接認證服務器無響應,經過排查是由于異常斷電造成的認證服務器宕機,將認證服務器開機后,上網認證一切正常,但從IMC認證管理平臺界面發現原有顯示設備性能情況(設備CPU、內存使用率、響應時間等)的數據無法讀取,這將直接影響網絡管理員對網絡設備的管理決策,因此參數指標的恢復顯示變得尤為重要。

圖1 Perf_db數據庫被質疑
iMC(智能管理中心)是基于SQL數據庫的,數據的讀取都是從數據庫中讀取數據,初步判斷應該是數據庫出了問題。當前認證服務器使用的是SQL 2008數據庫,通過SQL客戶端SQL Server Manager Studio登錄到SQL發現對應的主管性能的Perf_db數據庫被質疑,英文版SQL的數據庫會被標示Suspect字樣,具體如圖1所示。
通常這個問題是由于硬盤空間不夠或硬盤讀寫錯誤,異常關機等原因導致SQL數據庫被質疑,經過反復嘗試解決方法如下。
打開數據庫里的SQL查詢編輯器窗口,運行以下命令:
1.修改數據庫為緊急模式。
USE Perf_db
ALTER DATABASE Perf_db SET EMERGENCY;
注意:如果執行此命令不成功提示“緊急模式修復失敗”,多是由于此數據庫有數據鎖定,需要使用exec sp_who2命令找到占用Perf_db程序的PID號,之后使用KILL PID將其結束掉。
2.使數據庫變為單用戶模式。
ALTER DATABASE Perf_db SET SINGLE_USER;
注意:根據數據庫文件的大小,執行此命令可能需要一些時間,盡可能多執行一段時間,如果執行時間過長就要終止執行,改用手動修改成單用戶模式,方法很簡單:在Perf_db數據庫右鍵單擊選屬性,在彈出的對話框中選擇“選項”之后在右邊的選項中找到“限制訪問”,在下拉框中選擇“SINGLE_USER”之后確定。
3.修復數據庫日志重新生成,此命令檢查的分配、結構、邏輯完整性和所有數據庫中的對象錯誤。
當指定“REPAIR_ALLOW_DATA_LOSS”來作為DBCC CHECKDB命令參數,該程序將檢查和修復報告的錯誤,但是,這些修復可能會導致一些數據丟失。
DBCC CheckDB (Perf_db,REPAIR_ALLOW_DATA_LOSS)
4.使數據庫變回為多用戶模式
ALTER DATABASE Perf_db SET MULTI_USER
注意:如果命令執行不成功,可以參照第2步的方法手動修改為多用戶模塊,需要在下拉框中選擇“MULTI_USER”之后單擊確定。
5.重啟SQL服務進程,使用SQL Server Manager Studio登錄數據庫查看對應的進程是否正常。
6.修復完成,打開IMC認證管理平臺界面發現久為的性能指標參數又顯示了出來。
修復過程都是經過筆者親試,當然這篇文章也只是起到一個拋磚引玉的作用,希望讀者遇到類似問題時能舉一反三,務必保證服務器的供電正常,否則將會造成諸多莫名其妙的問題。