使用RMAN方式实现医院信息系统数据库升级实践
2022-08-26伊永菊
伊永菊 梅 甜 李 银
中山大学附属第六医院 广东广州 510655
电子病历系统应用水平分级评价是衡量医院信息化建设水平的一个重要方法,也是三级公立医院绩效考核的指标[1]。根据国卫办医函〔2018〕1079号《电子病历系统应用水平分级评价管理办法(试行)》,5级整体要求是全院各系统数据能够按统一的医疗数据管理机制进行信息集成。医院信息系统(简称HIS)是医院的核心业务系统[2],随着信息系统不断增多和数据的倍数增长[3],医院现在运行的HIS不满足信息集成要求。同时医院HIS在2012年上线,已经运行9年,硬件和软件都难以支撑日益增长的业务量和数据流。因此,HIS升级势在必行。基于以上情况,医院规划了HIS升级为相同软件供应商的一体化临床信息系统,同时历史数据需要迁移到一体化临床信息系统。
医院HIS已经积累了5T的数据,实现数据迁移和业务系统平稳过度是一项比较艰巨的任务,也是核心环节[4]。HIS是医院的核心业务系统,与医院LIS、PACS、手术麻醉系统和移动护理等信息系统实时对接,在数据迁移过程中不可避免要中断HIS系统[5],同时影响与之对接的业务系统。医院业务要求7×24 h运行,这就要求把业务系统中断时间缩至最短[6],并且在信息系统中断过程中要启动信息系统突发事件应急预案[7],保障业务数据的连续性。
1 升级目标
本次升级包括HIS服务器配置升级、操作系统升级和数据库升级,详见表1。本次升级的难点是HIS已经积累了5T的数据量,数据需要完整地由Oracle Database 11g迁移到为Oracle Database 19c数据库。
表1 HIS数据库升级目标
2 选择数据迁移方案
2.1 Exp/imp 或expdp/impdp
Oracle 10g以下版本数据库采取Exp/imp方法[8],速度慢。Oracle 10g以上版本可支持Expdp/impdp,速度较快。两种方式均支持跨平台进行数据迁移,停机时间是导出时间、数据传输时间和导入时间的总和。
2.2 RMAN
RMAN是用于备份、还原和恢复的 Oracle工具,能备份整个数据库或数据库部件。RMAN 可以实现数据文件、控制文件以及归档日志文件、数据库服务器参数文件的备份还原,也可以执行完全或不完全的数据库恢复。RMAN的最大特点是支持增量备份[9],提高了备份和还原的效率。
2.3 Data Guard
Data Guard 是Oracle的一种容灾解决方案[10],也可以实现数据迁移。Data Guard停机时间短,但所需硬件成本较高。
2.4 OGG
OGG 对源数据库归档日志进行数据复制,实现源端与目标端数据拷贝。OGG是 Oracle 官方首选的数据迁移方案,能够跨平台、跨版本,以较低资源实现数据的实时复制。
以上4种方案均可以实现数据由Oracle Database 11g 迁移到Oracle Database 19c。考虑到医院要求把业务系统中断时间缩至最短[11],而RMAN支持增量备份,因此,医院选择使用RMAN备份和还原实现数据迁移。
3 升级实践
医院建立2个小组进行服务器及数据库升级。数据迁移小组,成员为院方DBA和一体化临床信息系统供应商DBA。业务保障小组,成员为院方HIS、EMR、LIS、PACS、手术麻醉系统和移动护理等信息系统的院方工程师,以及相应的信息系统供应商的工程师,还有一体化临床信息系统工程师。根据《医院信息系统突发事件应急预案管理制度》要求,门诊、医技及药房信息系统故障30 min以上,住院信息系统故障1 h以上需要启动应急预案[12]。升级的整体方案如图1所示。
3.1 前期准备
搭建新的HIS服务器,存储采用SSD+SAS混合模式,安装升级版本的操作系统和数据库,设置字符集为SIMPLIFIED CHINESE_CHINA.ZHS16GBK[13],并按照以下命令优化数据库参数。
alter system set log_archive_format='归档日志文件的命名方法' scope=spfile;
alter system set session_max_open_files=20 scope=spfile;
alter system set open_cursors=1500 scope=spfile;
alter system set session_cached_cursors=1000 scope=spfile;
医院需要迁移的数据量为5T,在新的服务器节点1上挂载7T存储作为迁移数据的中转存储。
在原服务器节点1设置RMAN全备份任务,全备份任务时间设置为周五晚上18:00点开始,避开业务高峰期。
backup current controlfile format '备份控制文件';
同时业务保障组检查HIS客户端和接口连接串,保障数据库升级后可兼容。针对本次升级,我们制定了了升级失败的回退方案:如果升级失败,则关闭新服务器数据库,重新打开原服务器和数据库。
3.2 升级测试
关闭新服务器节点2,在新服务器节点1数据库上恢复控制文件,并注册备份集,然后RMAN最新备份集进行测试,使用以下RMAN命令实现。
RMAN> startup force nomount;
RMAN> restore controlfile from '控制文件';
RMAN>alter database mount;
同时业务保障组测试客户端连接新服务器,测试业务流程和接口,测试Job自动服务和Dblink。及时记录问题及各个操作的时间节点,不断地总结,对每个问题进行PDCA 处理,对可能出现的状况制定详细的解决方案,直至测试通过。测试过程中发现Oracle Database 19c不支持wm_concat函数,建立了同名称的自定义函数解决这个问题。
图1 HIS数据库升级方案
3.3 正式升级
为了降低服务器和数据库升级对业务的影响,正式升级时间选择业务量较少的周末和夜间。正式升级分为两个阶段:第一阶段是迁移数据,时间为切换生产库的前一周星期五晚上18:00至星期日晚上18:00,以及生产库切换的前一天,期间生产库正常运行;第二阶段是切换生产库,切换生产库到新服务器数据库,时间为星期六0:00到4:00,期间须停止生产库。
迁移数据阶段,迁移数据的任务是在新服务器数据库上恢复RMAN备份集和追归档,使用Restore database 实现。同时,该阶段为了避免原数据库全备业务冲突,需要暂停异地备份的全备策略。信息系统保障小组要通知LIS、PACS、手术麻醉系统和移动护理等信息系统的供应商,在生产库切换当天需要有技术人员驻场支持。
切换生产库的时间为星期六凌晨开始,在此之前须做一次RMA增量备份。切换生产库预计时间为4 h,系统保障小组关闭HIS应用服务器和其他接口服务器,并根据《医院信息系统突发事件应急预案管理制度》通知各部门启动应急预案。
切换生产库时,原生产库有3个节点,切换时只保留节点1的数据库实例仅关闭监听,关闭节点2和3的数据库实例。注意原生产库Sequence比最大号要加1,启动备份最新Redo,备份完成后关闭原生产库,并使用Recover database恢复归档至新生产库,使用以下命令实现。
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +ARCH
Oldest online log sequence 原生产库sequence最大号
Next log sequence to archive 原生产库sequence最大号+1
Current log sequence 原生产库sequence最大号+1
数据迁移小组提供测试的客户端数据库监听配置,信息系统保障小组启动HIS应用服务器,并由专人到各个业务点替换测试的数据库监听配置进行业务测试。必须测试的业务点有门诊挂号、门诊医生站、门诊收费、门诊发药、住院医生站、住院护士站、技诊终端确认、新媒体挂号和缴费以及其他信息系统的接口功能。
测试通过后,为了保证客户端能连接到新生产库,数据迁移小组将新服务器集群IP、公网IP、VIP修改至与原服务器相同的网段,并且SCAN IP不变。信息系统保障小组下达指令解除应急预案,将应急数据库的数据上传至新生产库,实现业务连续,并启动异地容灾备份[14],保障信息安全。
4 性能测试
医院于2021-02-26成功完成了HIS数据库升级,升级的执行结果与测试相同,并且在预估时间内完成。服务器硬件由4*英特尔至强E7-4809V3 2.0 GHz,8C/16T/4*32G升级为*英特尔至强金牌 6248 2.5GHz,20C/40T/16*32G,HIS服务器操作系统由Red Hat Enterprise Linux 7.8升级为Red Hat Enterprise Linux 7.9,HIS数据库由Oracle Database 11g升级为Oracle Database 19C,统一了医院 Oracle 数据库字符集,并使用RMAN方式实现了5T的历史电子病历数据无损迁移。
全表扫描的速度影响到信息系统整体运行的速度[15]。升级后,我们对HIS数据库中超过1 000万条记录的表在升级前后进行全表扫描速度对比。在升级前后分别执行 select count(*) from 表名称,对比结果见表1,由执行结果可见,升级后数据库性能提高。
表2 升级后数据库性能对比
5 讨论
数据库是医院信息系统的核心[16],是信息系统稳定和运行速度的保障。服务器和数据库升级必须以保障医院业务数据连续为前提。本次升级方案成功执行得益于以下3个方面。
5.1 制定正确的数据迁移方案
对于5T级别的历史电子病历数据迁移,选择合适的数据迁移方式至关重要。RMAN支持增量备份,因此医院选择使用RMAN备份和还原实现数据迁移。本次升级实践表明, RMAN备份和还原可实现大数据量迁移,Oracle数据库升级可以选择RMAN方式。
5.2 数据库正式升级前期要编制细致完备的操作文档并做充分的测试
HIS是医院的核心业务系统,几乎与医院其他所有的信息系统做了接口。为了尽可能缩短业务系统中断时间,本次升级实践我们精准计算了数据迁移时间和切换生产库的时间,编制了数据库升级的操作文档,包含每一个操作的时间点、操作指令和操作执行人。在正式升级之前应该按照操作文档做充分的测试和演练。
5.3 数据库升级的同时要启动信息系统突发事件应急预案
医院业务要求7×24 h运行,HIS数据库升级须启动应急收费库,保障业务连续。升级完成后应立即启动异地容灾备份,保障信息安全。