李守龍 張國(guó)娟 沈 慧
較多中小型醫(yī)院信息管理部門沒有配備專職的數(shù)據(jù)庫管理員(Database Administrator;DBA),數(shù)據(jù)庫的維護(hù)基本都是科室人員兼職,對(duì)數(shù)據(jù)庫的管理往往只停留在定期數(shù)據(jù)庫備份上。這似乎僥幸于賭軟、硬件的可靠性,短期來講可能沒有問題,但長(zhǎng)遠(yuǎn)來看可能不足以應(yīng)對(duì)災(zāi)難。數(shù)據(jù)庫的備份很重要,但它僅是數(shù)據(jù)庫管理中的一個(gè)部分,筆者認(rèn)為數(shù)據(jù)庫最基本的管理應(yīng)該包括權(quán)限的管理、數(shù)據(jù)庫錯(cuò)誤檢查、數(shù)據(jù)庫的備份、數(shù)據(jù)的轉(zhuǎn)移及關(guān)注日志文件變化。
醫(yī)療行業(yè)因其特殊性對(duì)權(quán)限管理較嚴(yán)格,權(quán)限和醫(yī)生的職務(wù)、職稱嚴(yán)格匹配,鑒于這方面的要求,HIS都有比較細(xì)致的權(quán)限管理功能。既然HIS已經(jīng)劃分了權(quán)限,似乎沒有必要在數(shù)據(jù)庫繼續(xù)劃分。本文將其列為了第一條,似乎有小題大作之嫌。HIS權(quán)限的劃分使得相應(yīng)的使用者有匹配的權(quán)限,有可追溯的操作行為,數(shù)據(jù)庫權(quán)限的劃分有其相同的目的。數(shù)據(jù)庫管理中所有用戶均使用SA權(quán)限(System Admin;SA)登陸的醫(yī)院比比皆是,這對(duì)于醫(yī)療數(shù)據(jù)庫極為不可控,也極不安全。SA擁有數(shù)據(jù)庫最大的操作權(quán)限,一旦誤操作,破壞性可能是“致命”的,且這種操作是具有不可追溯性的。假若1份電子病歷已經(jīng)封存,HIS也已經(jīng)禁用所有的修改操作,但是此時(shí)數(shù)據(jù)庫是可操作的,SA用戶可以隨時(shí)修改數(shù)據(jù),且一旦修改根本無法定位究竟是誰做了這個(gè)操作;1份收費(fèi)數(shù)據(jù)被誤操作極可能導(dǎo)致財(cái)務(wù)數(shù)據(jù)很大偏差,最終導(dǎo)致和社保端數(shù)據(jù)不一致而無法結(jié)算。根據(jù)信息科室人員姓名建立同名用戶名,根據(jù)職位職能不同劃分權(quán)限。一般管理人員只給予讀權(quán)限,兼、專職管理數(shù)據(jù)庫人員給予一定寫權(quán)限。這樣可以在一定程度上提高安全性,并且每個(gè)操作人員行為可控、可追溯,更重要的是防止外部人員輕易獲取SA權(quán)限。
數(shù)據(jù)文件的損壞對(duì)數(shù)據(jù)庫的運(yùn)行是一個(gè)嚴(yán)重的威脅,輕則無法讀取數(shù)據(jù),重則導(dǎo)致系統(tǒng)的崩潰。一旦數(shù)據(jù)庫出現(xiàn)錯(cuò)誤,切忌帶“病”運(yùn)行。這些“病”往往不是突發(fā),而是日常的累積。通過這幾年的數(shù)據(jù)庫管理,我們總結(jié)“防病”成本比‘治病’成本要低得多。
針對(duì)這類錯(cuò)誤的“防”,就是日常的數(shù)據(jù)庫錯(cuò)誤檢查。對(duì)于Sq1 Server類的數(shù)據(jù)庫可以定期運(yùn)行DBCC CHECKDB等命令進(jìn)行檢查。但CHECK DB比較耗費(fèi)資源,具體的執(zhí)行要結(jié)合臨床業(yè)務(wù)避開高峰。也可以考慮按時(shí)段分組執(zhí)行CHECKTABLE、CHECKCATALOG、CHECKALLOC等命令,達(dá)到同樣目的。有條件的醫(yī)院可以在測(cè)試庫(恢復(fù)業(yè)務(wù)數(shù)據(jù)的備份)上進(jìn)行檢查,一旦發(fā)現(xiàn)錯(cuò)誤,在合適的時(shí)間在正式庫運(yùn)行,結(jié)合具體錯(cuò)誤重見索引、日志;必要時(shí)使用REPAIR_REBUILD甚至REPAIR_ALLOW_DATA_LOSS(可能導(dǎo)致數(shù)據(jù)丟失,慎用)修復(fù)。對(duì)于比較大型的數(shù)據(jù)庫,一旦發(fā)現(xiàn)錯(cuò)誤比較嚴(yán)重,最簡(jiǎn)便的方式是從備份恢復(fù)。
HIS層面做再多的安全策略也無法防止一些意外災(zāi)難,管理員的誤操作、不可抗力等因素都會(huì)導(dǎo)致數(shù)據(jù)的丟失。一旦意外發(fā)生不能恢復(fù)數(shù)據(jù)或是短時(shí)間無法恢復(fù)數(shù)據(jù),都會(huì)對(duì)信息科造成巨大的壓力,甚至相關(guān)人員會(huì)因此丟工作。合適的數(shù)據(jù)庫備份策略對(duì)數(shù)據(jù)保護(hù)十分的重要。Sq1 Server中數(shù)據(jù)備份有很多種方式,常用備份類型有完整備份、差異備份、事務(wù)日志備份和文件組備份。一般根據(jù)具體業(yè)務(wù)情況和可以容忍的最大數(shù)據(jù)丟失程度,使用其中的1~4種方式。中小醫(yī)院醫(yī)療數(shù)據(jù)庫一般程度上都不會(huì)十分龐大,可以考慮如下備份方式:每日凌晨進(jìn)行業(yè)務(wù)數(shù)據(jù)庫的完整備份;每1小時(shí)對(duì)事物日志進(jìn)行1次備份,每日中午12:30對(duì)數(shù)據(jù)庫執(zhí)行差異備份;每周對(duì)Master數(shù)據(jù)進(jìn)行1次備份,最好可以在合適的時(shí)間對(duì)物理文件進(jìn)行備份。Master的備份比較容易被忽略,它記錄系統(tǒng)級(jí)信息如登陸名、統(tǒng)配置設(shè)置等信息,如果Master數(shù)據(jù)庫有問題,整個(gè)數(shù)據(jù)庫系統(tǒng)都將無法啟動(dòng),因此筆者十分強(qiáng)調(diào)備份。
數(shù)據(jù)庫備份的結(jié)束并不意味備份的動(dòng)作已經(jīng)完成,最好的方式還要驗(yàn)證備份本身的有效性和模擬突發(fā)情況驗(yàn)證備份策略及還原策略是否合適,然后根據(jù)模擬情況調(diào)整備份和還原策略。
數(shù)據(jù)庫設(shè)置了十分完美的備份策略,可以保證一旦故障發(fā)生,可以在短時(shí)間內(nèi)恢復(fù)正常業(yè)務(wù),這樣豈不是很完美?非也,那要看你的備份是不是只存放在一個(gè)地點(diǎn)?,F(xiàn)在的服務(wù)器都有磁盤陣列(RAID),可靠性比較高,但是不等于100%安全,一旦出現(xiàn)不可抗力及磁盤陣列不可修復(fù)的問題,無法獲得數(shù)據(jù)源,再健全的管理機(jī)制和再完美的備份策略都是枉然。做管理不能太迷信于技術(shù),有時(shí)簡(jiǎn)單的動(dòng)作可以起到“救命”的作用。如果不能保證數(shù)據(jù)源介質(zhì)百分之百的安全,那就必須定期進(jìn)行數(shù)據(jù)備份和數(shù)據(jù)庫物理文件的轉(zhuǎn)移。數(shù)據(jù)就是“生命”,對(duì)待“生命”不能太隨意,對(duì)轉(zhuǎn)移的數(shù)據(jù)應(yīng)該有嚴(yán)格的管理。建議對(duì)光盤介質(zhì)進(jìn)行封存,磁盤介質(zhì)專盤專用,并且這些介質(zhì)的啟用需要登記、審批。
Sq1 Server會(huì)為所有的修改記錄日志,以便將來重新提交或者回滾時(shí)使用,但Sq1 Server制定了機(jī)制,日志文件不會(huì)無休的增長(zhǎng),會(huì)定期清理日志中不需要的內(nèi)容[1]。但是也不意味著我們不需要關(guān)注日志,在特定的條件下數(shù)據(jù)庫日志文件會(huì)突然增長(zhǎng)迅速,甚至變得非常巨大乃至占滿整個(gè)磁盤空間。日常維護(hù)中需要時(shí)不時(shí)地關(guān)注日志文件的變化,一旦發(fā)現(xiàn)異常就要定位原因,是數(shù)據(jù)庫沒有做日志備份、是數(shù)據(jù)庫中有事務(wù)很長(zhǎng)時(shí)間沒有提交、還是數(shù)據(jù)庫正在運(yùn)行一個(gè)較大的事務(wù),須根據(jù)不同的情況進(jìn)行針對(duì)性處理,以保持事物日志合理增長(zhǎng)。
上述日志文件的增長(zhǎng)也提醒我們要關(guān)注磁盤的動(dòng)態(tài),一旦磁盤剩余空間較小很可能影響Sq1 Server向磁盤文件讀寫量,甚至無法存取,也就意味著前端系統(tǒng)的癱瘓。如果是正常的磁盤耗盡,在剩余一定量前嘗試收縮數(shù)據(jù)庫并提前布置磁盤空間擴(kuò)展,這樣可以在一定程度上防止意外的發(fā)生。
現(xiàn)代服務(wù)器的軟硬件安全性都比較高,數(shù)據(jù)庫的管理短期可能顯現(xiàn)不出其優(yōu)勢(shì),這也是為什么中小型醫(yī)院不重視的原因。數(shù)據(jù)庫管理的好處不僅僅能在緊急情況中挽留數(shù)據(jù),更多的是它可以有效減少HIS層面的故障,即使有數(shù)據(jù)庫層面發(fā)生問題,也可以在短時(shí)間內(nèi)得到恢復(fù),最壞的情況也只是丟失部分?jǐn)?shù)據(jù)。
數(shù)據(jù)庫管理涵蓋非常多的內(nèi)容,沒有辦法用有限的篇幅和大家一起探討更多,這里僅提供一些建議,更多的要靠實(shí)踐中的親身體驗(yàn)和經(jīng)驗(yàn)的積累。
1 徐海蔚.Microsoft SQL Server企業(yè)級(jí)平臺(tái)管理實(shí)踐[M].北京:電子工業(yè)出版社,2010:33-34.