武警湖南總隊醫院信息科 李春林 周根鴻
目的:探討利用數據庫日志文件進行安全預警,保護數據庫安全。方法:定期巡視數據庫日志文件,發現異常時進行分析,使用數據日志分析工作進行分析。結果:日志異常必定反映出數據產生異常。結論:加強對數據庫日志文件的定期巡查和分析,確保數據庫的安全運行。
我院醫院信息系統采用ORACLE數據庫為基礎數據庫,版本為Oracle 11g,運行方式為歸檔模式,日志文件大小為12M,數據規模為120G,自2015年升級以來連續正常運轉。
在例行的數據庫巡查過程中,發現歸檔日志異常增加。即由過去的40min左右產生一個歸檔日志,變成了每10min左右連續產生2個甚至3個歸檔日志。有科室反映前端統計查詢程序有比平時慢的現象。而且這種頻繁的產生歸檔日志不是在數據庫生產高峰時段。如果不及時排除故障,將會造成磁盤空間的過快消耗,關鍵是要找到數據庫日志異常過快增加的根本原因,數據庫安全才有保障。正常和異常的日志分別如圖1、圖2所示:

圖1 數據庫正常時日志生成情況Fig.1 Log generation when the database is normal

圖2 數據庫異常時日志增加情況Fig.2 Log increase when the database is abnormal
日志文件是對整個數據庫的讀寫進行忠實記錄的文件,主要包括對以下三類語句記錄:DML(Data Manipulation Language)語句如:SELECT、UPDATE、INSERT、DELETE;DDL(Grant、Deny、Revoke)語句如:CREATE、ALTER、DROP等; DCL(Data Control Language)語句如:Grant、Deny、Revoke等語句[1]。而歸檔日志文件是在在線重做日志文件達到規定容量后自動進行歸檔而生成的,歸檔日志的異常增加一定是有異常的讀寫。我們迅速組織科室工程師們分析排查。經檢查,未發現硬件方面故障。平時的數據庫日志都是有規律的增長,只有在每天的數據庫生產高峰時段9點至11點之間日志才有稍微頻繁增長,根據目前的不分時段的異常增長,表明某一事件在反復發生,而且是循環發生。同時啟動日志分析。使用LogMiner工具既可以用來分析在線日志,也可以用來分析離線日志文件,既可以分析本身自己數據庫的重作日志文件,也可以用來分析其他數據庫的重作日志文件[2,3]。通過日志分析,我們發現有大量的SELECT語句查詢。經分析,與近期所上項目體檢系統有關系,該項目工程師在編程中為了統計某一時間段未檢項目有關結果信息,通過定時器使用了定時查詢。我們知道,日志一般指的是聯機重做日志文件(Redlog)。主要功能是恢復異常關閉的數據庫和保證數據的完整性、一致性。還有可恢復近期丟失的數據(這要看重做日志文件的容量)。重做文件的原理是:把DML(Insert、Update、Delete)語句所處理的前后記錄都寫入重做日志文件中。當數據庫的數據出故障時利用重做日志文件中的數據重新運行一次之前做過的業務,以此來恢復數據庫中除了故障的數據。
重做日志文件至少要有兩組,一般是三組。寫滿第一組寫第二組,寫滿第二組寫第三組,寫滿第三組返回覆蓋寫第一組,以此類推。日志文件如果不定期清理,將會消耗大量的磁盤空間,我們規定一般一個月定時清理過時日志。
未優化時語句是這梓的:

以上語句執行頻率為每5分鐘執行一次。因此產生大量的查詢。
對以上條件進行優化,加大過濾條件,同時減少執行頻率為每30分鐘執行一次。優化后(條件增加是否檢查完成標志,減少了數量查詢量)。


優化后經觀察,日志生成情況正常。
隨著信息系統的運行時間增加,產生的數據的越來越多,大數據挖掘技術的日益成熟,數據的重要地位不言而喻,數據的安全性越來越重要。平時要重視數據庫的安全檢查,隨時關注日志的變化情況,日志是反映數據庫是否正常運轉的晴雨表,也是數據庫損壞時恢復的要素[4]。隨著云、大、物、移、智技術在醫院信息化建設中的普遍運用,信息系統的建設更加復雜和聯系緊密,與新系統之間的協同配合尤其重要,新上系統期間一定要進行測試,未經測試正常不能上線,以免造成不可挽回的損失。
引用
[1] 劉志敏,劉微.ORACLE數據庫日志挖掘工具的利用[J].中國醫療設備,2008,23(1):29-30+20.
[2] 李春林,周根鴻,張文體.重視日志審計確保數據安全[J].醫學信息,2007,20(10):1761-1762.
[3] 范曉丹,鐘俊華,林雪金,等.事務日志及其解析在醫院信息安全中的應用[J].醫療衛生裝備,2017,38(6):77-78+82.
[4] 楊金平.基于服務器群集與DATAGUARD的醫院HIS數據庫維護方案[J].中國數據醫學,2012,7(4):86-87.