武警湖南總隊醫(yī)院信息科 李春林 周根鴻
目的:探討利用數(shù)據(jù)庫日志文件進行安全預警,保護數(shù)據(jù)庫安全。方法:定期巡視數(shù)據(jù)庫日志文件,發(fā)現(xiàn)異常時進行分析,使用數(shù)據(jù)日志分析工作進行分析。結果:日志異常必定反映出數(shù)據(jù)產生異常。結論:加強對數(shù)據(jù)庫日志文件的定期巡查和分析,確保數(shù)據(jù)庫的安全運行。
我院醫(yī)院信息系統(tǒng)采用ORACLE數(shù)據(jù)庫為基礎數(shù)據(jù)庫,版本為Oracle 11g,運行方式為歸檔模式,日志文件大小為12M,數(shù)據(jù)規(guī)模為120G,自2015年升級以來連續(xù)正常運轉。
在例行的數(shù)據(jù)庫巡查過程中,發(fā)現(xiàn)歸檔日志異常增加。即由過去的40min左右產生一個歸檔日志,變成了每10min左右連續(xù)產生2個甚至3個歸檔日志。有科室反映前端統(tǒng)計查詢程序有比平時慢的現(xiàn)象。而且這種頻繁的產生歸檔日志不是在數(shù)據(jù)庫生產高峰時段。如果不及時排除故障,將會造成磁盤空間的過快消耗,關鍵是要找到數(shù)據(jù)庫日志異常過快增加的根本原因,數(shù)據(jù)庫安全才有保障。正常和異常的日志分別如圖1、圖2所示:
圖1 數(shù)據(jù)庫正常時日志生成情況Fig.1 Log generation when the database is normal
圖2 數(shù)據(jù)庫異常時日志增加情況Fig.2 Log increase when the database is abnormal
日志文件是對整個數(shù)據(jù)庫的讀寫進行忠實記錄的文件,主要包括對以下三類語句記錄:DML(Data Manipulation Language)語句如:SELECT、UPDATE、INSERT、DELETE;DDL(Grant、Deny、Revoke)語句如:CREATE、ALTER、DROP等; DCL(Data Control Language)語句如:Grant、Deny、Revoke等語句[1]。而歸檔日志文件是在在線重做日志文件達到規(guī)定容量后自動進行歸檔而生成的,歸檔日志的異常增加一定是有異常的讀寫。我們迅速組織科室工程師們分析排查。經檢查,未發(fā)現(xiàn)硬件方面故障。平時的數(shù)據(jù)庫日志都是有規(guī)律的增長,只有在每天的數(shù)據(jù)庫生產高峰時段9點至11點之間日志才有稍微頻繁增長,根據(jù)目前的不分時段的異常增長,表明某一事件在反復發(fā)生,而且是循環(huán)發(fā)生。同時啟動日志分析。使用LogMiner工具既可以用來分析在線日志,也可以用來分析離線日志文件,既可以分析本身自己數(shù)據(jù)庫的重作日志文件,也可以用來分析其他數(shù)據(jù)庫的重作日志文件[2,3]。通過日志分析,我們發(fā)現(xiàn)有大量的SELECT語句查詢。經分析,與近期所上項目體檢系統(tǒng)有關系,該項目工程師在編程中為了統(tǒng)計某一時間段未檢項目有關結果信息,通過定時器使用了定時查詢。我們知道,日志一般指的是聯(lián)機重做日志文件(Redlog)。主要功能是恢復異常關閉的數(shù)據(jù)庫和保證數(shù)據(jù)的完整性、一致性。還有可恢復近期丟失的數(shù)據(jù)(這要看重做日志文件的容量)。重做文件的原理是:把DML(Insert、Update、Delete)語句所處理的前后記錄都寫入重做日志文件中。當數(shù)據(jù)庫的數(shù)據(jù)出故障時利用重做日志文件中的數(shù)據(jù)重新運行一次之前做過的業(yè)務,以此來恢復數(shù)據(jù)庫中除了故障的數(shù)據(jù)。
重做日志文件至少要有兩組,一般是三組。寫滿第一組寫第二組,寫滿第二組寫第三組,寫滿第三組返回覆蓋寫第一組,以此類推。日志文件如果不定期清理,將會消耗大量的磁盤空間,我們規(guī)定一般一個月定時清理過時日志。
未優(yōu)化時語句是這梓的:
以上語句執(zhí)行頻率為每5分鐘執(zhí)行一次。因此產生大量的查詢。
對以上條件進行優(yōu)化,加大過濾條件,同時減少執(zhí)行頻率為每30分鐘執(zhí)行一次。優(yōu)化后(條件增加是否檢查完成標志,減少了數(shù)量查詢量)。
優(yōu)化后經觀察,日志生成情況正常。
隨著信息系統(tǒng)的運行時間增加,產生的數(shù)據(jù)的越來越多,大數(shù)據(jù)挖掘技術的日益成熟,數(shù)據(jù)的重要地位不言而喻,數(shù)據(jù)的安全性越來越重要。平時要重視數(shù)據(jù)庫的安全檢查,隨時關注日志的變化情況,日志是反映數(shù)據(jù)庫是否正常運轉的晴雨表,也是數(shù)據(jù)庫損壞時恢復的要素[4]。隨著云、大、物、移、智技術在醫(yī)院信息化建設中的普遍運用,信息系統(tǒng)的建設更加復雜和聯(lián)系緊密,與新系統(tǒng)之間的協(xié)同配合尤其重要,新上系統(tǒng)期間一定要進行測試,未經測試正常不能上線,以免造成不可挽回的損失。
引用
[1] 劉志敏,劉微.ORACLE數(shù)據(jù)庫日志挖掘工具的利用[J].中國醫(yī)療設備,2008,23(1):29-30+20.
[2] 李春林,周根鴻,張文體.重視日志審計確保數(shù)據(jù)安全[J].醫(yī)學信息,2007,20(10):1761-1762.
[3] 范曉丹,鐘俊華,林雪金,等.事務日志及其解析在醫(yī)院信息安全中的應用[J].醫(yī)療衛(wèi)生裝備,2017,38(6):77-78+82.
[4] 楊金平.基于服務器群集與DATAGUARD的醫(yī)院HIS數(shù)據(jù)庫維護方案[J].中國數(shù)據(jù)醫(yī)學,2012,7(4):86-87.