劉興淮,徐燕梅,粱敏
南京醫科大學附屬淮安第一醫院醫學工程部,江蘇 淮安 223300
利用無線MODEM實現HIS數據庫的異常監測和遠程處理
劉興淮,徐燕梅,粱敏
南京醫科大學附屬淮安第一醫院醫學工程部,江蘇 淮安 223300
本文介紹利用無線工業MODEM實現對醫院信息系統(HIS)數據庫的作業運行、數據阻塞及死鎖等情況進行監測和報警,并通過手機短信控制殺掉已死鎖或阻塞的數據庫線程,從而實現遠程恢復各系統的正常運行。
無線MODEM;HIS;數據庫;SQL Server
南京醫科大學附屬淮安第一醫院是一所綜合性三級甲等醫院,年門診量130萬人次,核定床位2200張。醫院信息系統(Hospital Information System,HIS)數據庫采用SQL Server 2005,工作站近800臺。在實際應用中,HIS性能穩定,但因多個用戶同時對數據庫進行訪問,客戶端發出的查詢較多,加之程序和數據庫的設計存在一定缺陷,時常發生數據阻塞、死鎖,使CPU或內存消耗太大,造成作業自動執行失敗等現象,給整個系統的可靠性帶來較大影響,嚴重時可能使整個系統癱瘓,有時需要數據庫管理員人工干預才能恢復系統正常運行[1]。為此,我們利用無線工業MODEM(調制解調器)實現了對數據庫性能的監測,并用手機短信對遠程數據庫異常進行處理。
1.1 無線工業MODEM
我們選擇惠通HT-S3101工業級無線MODEM,內置西門子TC35雙頻900/1800 MHz短信模塊,可直接對AT指令控制;提供OCX控件和DLL動態鏈接庫供二次開發;支持超長短信發送,發送長短信能將中文超過70字的短信自動分割成若干條發送出去;自動編碼,提供AT Command接口。本文選用Delphi7.0作為二次開發工具,將提供的szhto.ocx、htcom.dll文件拷貝到C:windowssystem32目錄下,在Delphi中,用Import Activex 完成開發控件的安裝,并用Regsvr32完成注冊。
1.2 短信伺服工具設計
1.2.1 MODEM安裝初始化
本文用Delphi開發短信伺服器,常運行于HIS服務器上,用于短信的接收和處理,伺服器啟動時,在窗體FormShow事件中完成對MODEM初始化。初始化語句如下:


1.2.2 短信處理
短信伺服器一直處于工作狀態,當收到短信時,觸發Szhtodll控件的NewSms事件,將收到的短信內容、發送短信的電話號碼插入到表mess_items中。數據庫后臺通過調用存儲過程mess_main,解析短信內容的含義,按照預定義的指令代碼作出相應的處理,并將處理的結果寫入表mess_items。短信伺服器通過Timer控件讀取表mess_ items的內容,調用Szhtodll的YhSendSms方法將處理的結果返回發送給用戶。YhSendSms方法的具體定義為:YhSendSms(CenterNo As String, sNo As String, sCon As String) As String參數CenterNo、sNo、sCon分別為短信中心號碼、對方手機號和待發短信內容,根據YhSendSms方法的返回值判斷短信的成功發送與否,并作出相應的異常處理。
1.2.3 來電處理
無線MODEM具有短信收發和語音通話功能,為保證短信的收發成功率,MODEM設備的語音通話功能被禁止使用,以防來電的干擾。在MODEM控件的NewRing事件中加入代碼:Szhtodll.YhATCommand('ATH'),當有來電時,NewRing事件被觸發,執行‘ATH’指令掛斷來電,確保信道不會被長時間占用。
2.1 死鎖和堵塞監測
HIS運行過程中,有時速度很慢,只有少數的用戶可以正常使用,而其他用戶的操作一直處于執行狀態,沒有返回結果,如同“死機”一樣,這是一種常見的阻塞現象。大多數阻塞問題的發生是因為,進程控制和死鎖時間過長,如提交執行長時間的查詢,用戶取消沒有提交或回滾的查詢等[2]。而當兩個或多個線程之間有循環相關時,便產生死鎖[3]。阻塞和死鎖會給整個HIS的可靠性帶來很大影響,需要對其進行及時的監測和處理。
在HIS數據庫中,每5 min通過作業調度存儲過程mess_main來監測死鎖和阻塞的總數量,如數量超過設定的上限(本應用設定值為50),即將死鎖和阻塞的數量寫入表mess_item中,通過短信平臺自動發送到數據庫管理員的手機上。存儲過程mess_main處理腳本主要內容如下:


2.2 作業計劃任務監測
HIS經常利用SQL Server代理程序作業,使管理任務自動執行和定期運行,如床位費、每日固定費用的收取、數據庫的備份、索引的重建、統計數據的匯總等。如果任務沒有執行成功,就需要及時地進行處理,否則會給數據庫的安全帶來隱患,或影響第二天正常業務工作,數據庫管理員需要及時準確地得知任務的完成情況[4]。在存儲過程mess_main中通過讀取msdb 數據庫中表sysjobsteps的記錄來獲取作業失敗的具體情況。方法如下:

2.3 CPU占用時間監測
在SQL Server使用一段時間后,會發現sqlserver.exe進程占用了超過60%的CPU,導致整個HIS響應速度非常緩慢,有時也會因為病毒的發作造成CPU占用率超高。監控數據庫服務器CPU的活動情況是找出潛在CPU瓶頸的關鍵步驟,不僅能夠及時發現SQL Server配置、存儲、服務器的硬件等所存在的問題,而且可以及時找出最消耗I/O資源和CPU資源的SQL語句,不斷持續的對SQL語句進行優化,使每個查詢的響應時間最短,并最大限度地提高整個數據庫服務器的吞吐量[5]。在存儲過程

3.1 實現方法
數據的阻塞或死鎖對數據庫的性能影響極大,嚴重時可能造成整個系統的癱瘓,需要及時找到阻塞鏈源頭SPID和對應的SQL語句,分析造成阻塞和死鎖的原因,及時對其進行優化和處理。在上文的論述中實現對數據庫死鎖和堵塞進行監測,出現異常時自動發送短信進行報警。當數據庫管理員收到異常報警時,通過手機發送指令“FIND”到短信平臺獲取當前造成阻塞時間最長的SPID和正在執行的SQL語句,分析原因后,發送指令“KILL”+SPID 到短信平臺,短信平臺即會對造成阻塞的進程進行KILL處理。
3.2 實現步驟
3.2.1 記錄每分鐘正在阻塞的信息
在HIS數據庫中每分鐘通過調度作業,將當前引起阻塞的SPID和SQL語句分別記錄到表mess_lock和mess_ block中。執行的SQL語句如下:

3.2.2 獲取阻塞的SPID和SQL
用戶發送指令“FIND”到短信平臺,觸發短信伺服器Szhtodll控件的NewSms事件,將收到的短信指令、來短信的電話號碼插入到表mess_rec 中,在表mess_rec中設計insert 觸發器,來處理預定義的指令代碼。短信平臺收到“FIND”指令后,即從表mess_lock和mess_block中統計出近段時間內阻塞其他進程時間最長的SPID和相對應的SQL命令,將阻塞信息插入到表mess_item中,通過短信平臺將阻塞信息發送到數據庫管理員的手機上。
3.2.3 處理阻塞進程
發送指令“KILL”+SPID,短信平臺會對指定SPID所造成阻塞的進程進行處理,并將處理的結果通過短信反饋給數據庫管理員。處理過程如下:

本文采用無線工業MODEM實現對HIS數據庫的監測,遇到異常情況時能通過短信及時通知數據庫管理員。管理員通過發送短信指令處理數據庫阻塞、死鎖等異常情況,有效地遠程監測數據庫的實時狀態,達到了很好地遠程監控和處理效果[6-7]。經過一年多實際應用,發現多處監測程序或數據庫設計存在的問題,都及時作了修改和完善,實現了HIS的持續優化運行,取得了良好的使用效果[8]。
[1] 魏濤.如何防止HIS中數據庫的阻塞及死鎖[J].醫療衛生裝備, 2009,30(10):131.
[2] 肖桂東.SQL Server疑難解 析[M].北京:電子工業出版社,2004: 289-293.
[3] 駱正云,宋念東,俞國霖.醫院HlS系統SQL Server數據庫性能優化[J].醫療衛生裝備,2005,26(2):33.
[4] 王明舉,王霞,潘杰,等.利用手機短信實現HlS數據庫后臺任務的無人看守[J].中國醫療設備,2008,23(9):18.
[5] Michael Otey,Paul Conte. SQL Server 2000開發指南[M].北京:清華大學出版社,2002:68-96.
[6] 沈岜,楊松.醫院信息系統的安全建設與管理[J].中國醫療設備,2011,26(6):67-69.
[7] 閆小萍,董一潁,盧沙.醫院短信平臺的構建與應用[J].中國醫療設備,2011,26(2):49-50.
[8] 楊棟,劉立輝,任志剛.醫院信息安全管理與措施[J].中國醫療設備,2011,26(6):70-72.
Using Wireless MODEM to Realize HIS Database Abnormality Monitoring and Remote Treatment
LIU Xing-huai, XU Yan-mei, LIANG Min
Medical Engineering Department, First People’s Hospital of Huai’an Affiliated to Nanjing Medical University, Huai’an Jiangsu 223300, China
This paper describes how to realize working, blocking, deadlock monitoring and alarm of HIS database with the use of wireless industrial MODEM. Through SMS control to stop database threads deadlocked or blocking, thus to realize remote recovery of the normal operation of the system.
wireless MODEM; HIS; database; SQL Server
TP393.08
A
10.3969/j.issn.1674-1633.2012.09.012
1674-1633(2012)09-0056-03
2012-03-14
2012-05-21
作者郵箱:hayyxym1213@sina.com