APP下载

基于物化视图的Oracle增量备份方法的实现

2014-10-15李学斯林济南

计算机与现代化 2014年1期
关键词:物化视图日志

李学斯,王 虹,吴 飞,林济南

(解放军第309医院信息中心,北京 100091)

0 引言

医院HIS主服务器是医院信息系统的核心,全天24小时接受来自全院数十甚至上百个系统的访问,不仅服务器及网络运行压力巨大,安全性也面临极大的考验[1]。如何能够在满足医院各项业务需求的基础上,缓解HIS主服压力,提高其安全性是值得思考的一个问题[2-3]。经分析发现,有很大一部分程序,如科研、统计、核算甚至摆药对于数据库的访问都局限在几十个表的范围内,且对于时效性的要求并不是很严格[4]。如果能够将这些表在一定时间内备份到另外一台服务器上,让这些程序访问备份服务器的数据,便可起到缓解主服压力并提高其安全性的作用。

1 系统需求分析

根据实际情况,备份方案主要有以下需求:

(1)保障数据的一致性和安全性。数据的一致性是指同步后的备服数据与主服保持完全一致;安全性指方案需保障主服和备服数据安全,这是方案能够实施的前提。

(2)备份方案对主服性能影响最小。方案实施主要目的之一是减轻主服压力,释放主服性能使其更多地服务优先级较高、实时性需求较强的系统,因此需保证备份过程中对主服务器影响较小。

(3)满足一定的实时性。在准备连接至备份数据库的系统中,部分系统对实时性要求较高,如药房摆药系统,要求在3分钟内同步,并且可能在未来需求变化中进一步缩短时间,因此需要备份方案具有较强的时效性,并可灵活配置。在综合各系统需求后,初期建设规定各表分别在1~10分钟内完成数据同步。

(4)使用增量和可选择的备份方式。数据库备份主要有全量和增量2种,全量备份系统开销大且难以满足同步时间上的要求[5-6];可选择备份是指对数据库中的表可以进行选择性备份,不以全库或用户作为限制。

(5)敏感数据过滤。部队医院的医疗数据中保存了大量的涉密信息和患者隐私,在供一些系统使用时需屏蔽这些敏感信息,备份过程中可选择性对敏感数据进行过滤,例如将数据中涉及军人信息的字段删除或替换,便可直接供给统计和分析系统使用,甚至进一步交换到外网供远程医疗系统使用。过滤后的信息既扩大了数据的可访问范围,又进一步提高了数据的安全性。

2 系统设计

常规Oracle数据库的备份方式主要有:Exp和Imp命令导出导入、冷备份和热备份等[7-9]。适合使用Exp和Imp命令进行备份的场景主要是数据库的迁移、历史数据归档、重新组织表、转移数据给其它数据库等,多是粗粒度操作,执行时间较长;冷备份需要停止源数据库;热备份虽然可以在数据库运行时进行,但对硬件要求较高,且操作复杂,容易出错,一旦出错后果严重。因此,以上几种常用方法均不满足本系统需求,需要一种针对数据库部分表的实时增量备份,要求细粒度、可配置,可在短时间内连续执行,且对主服性能影响较小。

在常规的备份方式无法实现的情况下,将目标转向Oracle的触发器和物化视图。由于大量的触发器会严重影响主服性能,因此将其排除。物化视图是远程数据的本地副本,本身是用于预先计算并保存表连接或聚集等耗时较多的操作结果,在执行查询时,就可以避免进行这些耗时的操作,从而快速得到结果。当基表发生变化时,物化视图也应当刷新[10]。

基于物化视图的这种特性,针对需要备份的表在主服上建立其物化视图日志,然后在备服上建立该表的物化视图,建立任务定时以增量方式刷新物化视图以使得备服数据与主服同步。

基于这种方式建立的同步备份方案能满足本系统的所有需求,但需配置大量脚本和任务,实施和维护工作较为繁琐,因此还需设计和开发相应的图像操作界面。

3 系统实现

3.1 系统建设

服务器及数据库配置等方面本文不再赘述,主要是建立物化视图存储表空间,备服配置保持与主服一致等。主服和备服互联成功后,主要工作是建立物化视图和配置刷新任务。建立物化视图主要有Build Immediate和Build Deferred两种模式。Build Immediate是指在物化视图创建时同时生成数据,为默认值;Build Deferred是根据需要再生成数据。刷新指当基表发生了增删改操作后,物化视图何时采用哪种方式与基表进行同步。刷新的模式有2种:On Commit和On Demand。On Commit指物化视图在对基表的增删改操作提交的同时进行刷新;On Demand指物化视图在用户需要时进行刷新,可以使用dbms_mview.refresh等方法来进行,也可以将其布置到job中进行定时刷新,默认值为On Demand。刷新的方法有4种:Fast、Complete、Force 和 Never。Fast模式采用增量刷新,只刷新上次刷新以后进行的修改;Complete模式对整个物化视图进行完全的刷新;Force模式为默认值,在刷新时会优先考虑Fast模式,否则采用Complete的方式。Never指物化视图不进行任何刷新[11-12]。

Build Immediate模式的物化视图和On Commit的刷新方式对主服性能影响较大,根据本系统建设需要,使用Build Deferred模式来建立物化视图,刷新方式为Fast On Demand,使用定时任务进行刷新工作。具体步骤如下:

(1)建立物化视图日志。以医嘱表ORDERS为例,在主服务器上建立物化视图日志,命令如下:

CREATE MATERIALIZED VIEW LOG ON ORDADM.ORDERSTABLESPACE TSP_TRANSFERDATA WITH ROWID;

这里表空间TSP_TRANSFERDATA是在配置数据库时预先建立的,用于存储所有的物化视图日志。由于一旦物化视图刷新任务停止,在恢复刷新前,主服务器的日志会不断累积,因此预留了10G的空间用于存储日志。刷新可使用行标识(Rowid)或主键(PrimaryKey),实际使用过程中发现部分表由于数据错误导致主键冲突而影响到刷新任务,这里选择Rowid 进行刷新[11]。

(2)建立物化视图和定时刷新任务。以Deferred模式在备用服务器上建立物化视图,以医嘱表ORDERS为例,命令如下:

这里建立了On Demand模式的物化视图,使用Fast模式进行刷新,设定为3分钟刷新一次。

需要注意的是,在第一次部署时,需要选择主服空闲时间将基表全部复制一份到备份数据库,因此需全量刷新一次,执行语句为:

(3)敏感数据过滤。敏感数据的过滤可在备用服务器上使用触发器进行,也可以在刷新任务的脚本中设置,由于大量使用触发器会影响性能,本文选择在脚本中进行。例如,针对WAIT_BED_PATS表中的患者信息,如果身份不是地方或其他则可判断为与军人相关,那么将其身份信息替换为星号隐藏,由于脚本篇幅较长,只列出关键语句如下:

3.2 图形界面系统

本系统建设主要是通过大量数据库操作脚本来完成,给后期维护带来一定困难,基于这个问题,笔者开发基于JSP和Tomcat的数据移植管理系统,主要功能有源数据库状态监测和同步任务管理等,可以监测待同步数据、已同步数据、脚本运行状态、脚本信息等关键系统信息,大大简化了系统的使用与维护。任务管理界面如图1所示。

图1 数据移植状态管理系统

3.3 系统异常处理

本系统在长期的使用过程中表现出了较好的稳定性,只有在出现网络故障等原因导致的备服与主服失去连接情况下,刷新任务才会停止,此时主服上的物化视图日志会不断增加,日志的数量可在上述数据移植状态管理系统中看到,当连接重新建立后,只需及时在界面中将所有任务重启即可保证刷新继续进行。

4 系统应用效果

由于本院HIS主服务器购置时间较长,性能富余量较少,本系统投入使用前,忙时易出现CPU和内存紧张等状况,本系统投入使用后,所有统计、分析、科研相关应用系统均转为从备份数据库提取数据,在将部分表的同步时间缩短至1分钟甚至30秒后,药房摆药等应用系统也改为连接备份数据库,目前主服忙时连接数已经减少了15% ~20%,有效缓解了其原有的性能和网络上的压力。另外,经过敏感信息过滤的数据开放范围进一步扩大,可完全避免科研项目提取数据出现泄密或侵犯患者隐私的状况出现,得到了各临床科室的认可。

5 结束语

本文基于实际需求,设计并实现一种基于物化视图的Oracle增量备份方法,系统达到预期目的,效果明显。该方案配置灵活,时效性强,不仅可以在医院数据库应用和管理中得到推广,在其他类似数据库应用领域也具有一定的参考价值。再此基础上还可以针对物化视图进行算法优化,进一步提高特定应用的性能[13-14]。

[1]吉亚力,胡呈炜,张辉.HIS服务器及数据库升级的实现[J].医疗卫生装备,2011,32(5):50-51.

[2]陈兆明.浅谈数字化医院信息系统的安全问题及对策[J].医学信息,2011,24(6):2491.

[3]杨佳.医院HIS系统中的数据备份与恢复技术研究[D].贵阳:贵州大学,2007.

[4]周忠彬.基于Oracle数据仓库技术构建医院统计资源库[D].上海:第四军医大学,2004.

[5]黄卫平.“军字一号”工程中对Oracle数据库的备份与恢复[J].医疗卫生装备,2004,25(1):58.

[6]杨永军,徐江,舒逸,等.实时数据库数据冗余备份方案的研究[J].计算机与现代化,2012(5):80-82.

[7]潘庆浩,樊志平.基于Oracle数据库的数据备份方法的研究与探讨[J].科技资讯,2007(31):117.

[8]王海亮.精通Oracle 10g备份与恢复[M].北京:中国水利水电出版社,2005.

[9]Li Q,Xu H.Research on the backup mechanism of Oracle database[C]//International Conference on Environmental Science and Information Application Technology.2009:423-426.

[10]Katsifodimos A,Manolescu I,Vassalos V.Materialized view selection for XQuery workloads[C]//Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data.2012:565-576.

[11]赵建平,周锦标,何剑伟,等.一种面向物化视图的远程增量维护系统[J].兵工自动化,2013,32(5):91-94.

[12]王楠,刘彩红,陈秋菊.基于物化视图的查询重写系统设计与实现[J].现代电子技术,2012,35(16):24-26.

[13]Theodoratos D,Xu W,Simitsis A.Materialized view selection for data warehouse design[C]//Encyclopedia of Data Warehousing and Mining.2009:1182-1187.

[14]王宜贵.基于遗传算法的物化视图优化方法[J].计算机与现代化,2011(8):23-25.

猜你喜欢

物化视图日志
一名老党员的工作日志
扶贫日志
5.3 视图与投影
游学日志
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
重看图形界面“扁平化”与“拟物化”之争——关于设计思维的探讨
物的人化与人的物化——当代舞台美术的表演
档案:一种物化的文化形态