武警湖南总队医院信息科 李春林 周根鸿
目的:探讨利用数据库日志文件进行安全预警,保护数据库安全。方法:定期巡视数据库日志文件,发现异常时进行分析,使用数据日志分析工作进行分析。结果:日志异常必定反映出数据产生异常。结论:加强对数据库日志文件的定期巡查和分析,确保数据库的安全运行。
我院医院信息系统采用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.