伊永菊 梅 甜 李 銀
中山大學(xué)附屬第六醫(yī)院 廣東廣州 510655
電子病歷系統(tǒng)應(yīng)用水平分級評價是衡量醫(yī)院信息化建設(shè)水平的一個重要方法,也是三級公立醫(yī)院績效考核的指標(biāo)[1]。根據(jù)國衛(wèi)辦醫(yī)函〔2018〕1079號《電子病歷系統(tǒng)應(yīng)用水平分級評價管理辦法(試行)》,5級整體要求是全院各系統(tǒng)數(shù)據(jù)能夠按統(tǒng)一的醫(yī)療數(shù)據(jù)管理機(jī)制進(jìn)行信息集成。醫(yī)院信息系統(tǒng)(簡稱HIS)是醫(yī)院的核心業(yè)務(wù)系統(tǒng)[2],隨著信息系統(tǒng)不斷增多和數(shù)據(jù)的倍數(shù)增長[3],醫(yī)院現(xiàn)在運(yùn)行的HIS不滿足信息集成要求。同時醫(yī)院HIS在2012年上線,已經(jīng)運(yùn)行9年,硬件和軟件都難以支撐日益增長的業(yè)務(wù)量和數(shù)據(jù)流。因此,HIS升級勢在必行?;谝陨锨闆r,醫(yī)院規(guī)劃了HIS升級為相同軟件供應(yīng)商的一體化臨床信息系統(tǒng),同時歷史數(shù)據(jù)需要遷移到一體化臨床信息系統(tǒng)。
醫(yī)院HIS已經(jīng)積累了5T的數(shù)據(jù),實現(xiàn)數(shù)據(jù)遷移和業(yè)務(wù)系統(tǒng)平穩(wěn)過度是一項比較艱巨的任務(wù),也是核心環(huán)節(jié)[4]。HIS是醫(yī)院的核心業(yè)務(wù)系統(tǒng),與醫(yī)院LIS、PACS、手術(shù)麻醉系統(tǒng)和移動護(hù)理等信息系統(tǒng)實時對接,在數(shù)據(jù)遷移過程中不可避免要中斷HIS系統(tǒng)[5],同時影響與之對接的業(yè)務(wù)系統(tǒng)。醫(yī)院業(yè)務(wù)要求7×24 h運(yùn)行,這就要求把業(yè)務(wù)系統(tǒng)中斷時間縮至最短[6],并且在信息系統(tǒng)中斷過程中要啟動信息系統(tǒng)突發(fā)事件應(yīng)急預(yù)案[7],保障業(yè)務(wù)數(shù)據(jù)的連續(xù)性。
本次升級包括HIS服務(wù)器配置升級、操作系統(tǒng)升級和數(shù)據(jù)庫升級,詳見表1。本次升級的難點是HIS已經(jīng)積累了5T的數(shù)據(jù)量,數(shù)據(jù)需要完整地由Oracle Database 11g遷移到為Oracle Database 19c數(shù)據(jù)庫。
表1 HIS數(shù)據(jù)庫升級目標(biāo)
Oracle 10g以下版本數(shù)據(jù)庫采取Exp/imp方法[8],速度慢。Oracle 10g以上版本可支持Expdp/impdp,速度較快。兩種方式均支持跨平臺進(jìn)行數(shù)據(jù)遷移,停機(jī)時間是導(dǎo)出時間、數(shù)據(jù)傳輸時間和導(dǎo)入時間的總和。
RMAN是用于備份、還原和恢復(fù)的 Oracle工具,能備份整個數(shù)據(jù)庫或數(shù)據(jù)庫部件。RMAN 可以實現(xiàn)數(shù)據(jù)文件、控制文件以及歸檔日志文件、數(shù)據(jù)庫服務(wù)器參數(shù)文件的備份還原,也可以執(zhí)行完全或不完全的數(shù)據(jù)庫恢復(fù)。RMAN的最大特點是支持增量備份[9],提高了備份和還原的效率。
Data Guard 是Oracle的一種容災(zāi)解決方案[10],也可以實現(xiàn)數(shù)據(jù)遷移。Data Guard停機(jī)時間短,但所需硬件成本較高。
OGG 對源數(shù)據(jù)庫歸檔日志進(jìn)行數(shù)據(jù)復(fù)制,實現(xiàn)源端與目標(biāo)端數(shù)據(jù)拷貝。OGG是 Oracle 官方首選的數(shù)據(jù)遷移方案,能夠跨平臺、跨版本,以較低資源實現(xiàn)數(shù)據(jù)的實時復(fù)制。
以上4種方案均可以實現(xiàn)數(shù)據(jù)由Oracle Database 11g 遷移到Oracle Database 19c。考慮到醫(yī)院要求把業(yè)務(wù)系統(tǒng)中斷時間縮至最短[11],而RMAN支持增量備份,因此,醫(yī)院選擇使用RMAN備份和還原實現(xiàn)數(shù)據(jù)遷移。
醫(yī)院建立2個小組進(jìn)行服務(wù)器及數(shù)據(jù)庫升級。數(shù)據(jù)遷移小組,成員為院方DBA和一體化臨床信息系統(tǒng)供應(yīng)商DBA。業(yè)務(wù)保障小組,成員為院方HIS、EMR、LIS、PACS、手術(shù)麻醉系統(tǒng)和移動護(hù)理等信息系統(tǒng)的院方工程師,以及相應(yīng)的信息系統(tǒng)供應(yīng)商的工程師,還有一體化臨床信息系統(tǒng)工程師。根據(jù)《醫(yī)院信息系統(tǒng)突發(fā)事件應(yīng)急預(yù)案管理制度》要求,門診、醫(yī)技及藥房信息系統(tǒng)故障30 min以上,住院信息系統(tǒng)故障1 h以上需要啟動應(yīng)急預(yù)案[12]。升級的整體方案如圖1所示。
搭建新的HIS服務(wù)器,存儲采用SSD+SAS混合模式,安裝升級版本的操作系統(tǒng)和數(shù)據(jù)庫,設(shè)置字符集為SIMPLIFIED CHINESE_CHINA.ZHS16GBK[13],并按照以下命令優(yōu)化數(shù)據(jù)庫參數(shù)。
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;
醫(yī)院需要遷移的數(shù)據(jù)量為5T,在新的服務(wù)器節(jié)點1上掛載7T存儲作為遷移數(shù)據(jù)的中轉(zhuǎn)存儲。
在原服務(wù)器節(jié)點1設(shè)置RMAN全備份任務(wù),全備份任務(wù)時間設(shè)置為周五晚上18:00點開始,避開業(yè)務(wù)高峰期。
backup current controlfile format '備份控制文件';
同時業(yè)務(wù)保障組檢查HIS客戶端和接口連接串,保障數(shù)據(jù)庫升級后可兼容。針對本次升級,我們制定了了升級失敗的回退方案:如果升級失敗,則關(guān)閉新服務(wù)器數(shù)據(jù)庫,重新打開原服務(wù)器和數(shù)據(jù)庫。
關(guān)閉新服務(wù)器節(jié)點2,在新服務(wù)器節(jié)點1數(shù)據(jù)庫上恢復(fù)控制文件,并注冊備份集,然后RMAN最新備份集進(jìn)行測試,使用以下RMAN命令實現(xiàn)。
RMAN> startup force nomount;
RMAN> restore controlfile from '控制文件';
RMAN>alter database mount;
同時業(yè)務(wù)保障組測試客戶端連接新服務(wù)器,測試業(yè)務(wù)流程和接口,測試Job自動服務(wù)和Dblink。及時記錄問題及各個操作的時間節(jié)點,不斷地總結(jié),對每個問題進(jìn)行PDCA 處理,對可能出現(xiàn)的狀況制定詳細(xì)的解決方案,直至測試通過。測試過程中發(fā)現(xiàn)Oracle Database 19c不支持wm_concat函數(shù),建立了同名稱的自定義函數(shù)解決這個問題。
圖1 HIS數(shù)據(jù)庫升級方案
為了降低服務(wù)器和數(shù)據(jù)庫升級對業(yè)務(wù)的影響,正式升級時間選擇業(yè)務(wù)量較少的周末和夜間。正式升級分為兩個階段:第一階段是遷移數(shù)據(jù),時間為切換生產(chǎn)庫的前一周星期五晚上18:00至星期日晚上18:00,以及生產(chǎn)庫切換的前一天,期間生產(chǎn)庫正常運(yùn)行;第二階段是切換生產(chǎn)庫,切換生產(chǎn)庫到新服務(wù)器數(shù)據(jù)庫,時間為星期六0:00到4:00,期間須停止生產(chǎn)庫。
遷移數(shù)據(jù)階段,遷移數(shù)據(jù)的任務(wù)是在新服務(wù)器數(shù)據(jù)庫上恢復(fù)RMAN備份集和追歸檔,使用Restore database 實現(xiàn)。同時,該階段為了避免原數(shù)據(jù)庫全備業(yè)務(wù)沖突,需要暫停異地備份的全備策略。信息系統(tǒng)保障小組要通知LIS、PACS、手術(shù)麻醉系統(tǒng)和移動護(hù)理等信息系統(tǒng)的供應(yīng)商,在生產(chǎn)庫切換當(dāng)天需要有技術(shù)人員駐場支持。
切換生產(chǎn)庫的時間為星期六凌晨開始,在此之前須做一次RMA增量備份。切換生產(chǎn)庫預(yù)計時間為4 h,系統(tǒng)保障小組關(guān)閉HIS應(yīng)用服務(wù)器和其他接口服務(wù)器,并根據(jù)《醫(yī)院信息系統(tǒng)突發(fā)事件應(yīng)急預(yù)案管理制度》通知各部門啟動應(yīng)急預(yù)案。
切換生產(chǎn)庫時,原生產(chǎn)庫有3個節(jié)點,切換時只保留節(jié)點1的數(shù)據(jù)庫實例僅關(guān)閉監(jiān)聽,關(guān)閉節(jié)點2和3的數(shù)據(jù)庫實例。注意原生產(chǎn)庫Sequence比最大號要加1,啟動備份最新Redo,備份完成后關(guān)閉原生產(chǎn)庫,并使用Recover database恢復(fù)歸檔至新生產(chǎn)庫,使用以下命令實現(xiàn)。
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +ARCH
Oldest online log sequence 原生產(chǎn)庫sequence最大號
Next log sequence to archive 原生產(chǎn)庫sequence最大號+1
Current log sequence 原生產(chǎn)庫sequence最大號+1
數(shù)據(jù)遷移小組提供測試的客戶端數(shù)據(jù)庫監(jiān)聽配置,信息系統(tǒng)保障小組啟動HIS應(yīng)用服務(wù)器,并由專人到各個業(yè)務(wù)點替換測試的數(shù)據(jù)庫監(jiān)聽配置進(jìn)行業(yè)務(wù)測試。必須測試的業(yè)務(wù)點有門診掛號、門診醫(yī)生站、門診收費(fèi)、門診發(fā)藥、住院醫(yī)生站、住院護(hù)士站、技診終端確認(rèn)、新媒體掛號和繳費(fèi)以及其他信息系統(tǒng)的接口功能。
測試通過后,為了保證客戶端能連接到新生產(chǎn)庫,數(shù)據(jù)遷移小組將新服務(wù)器集群IP、公網(wǎng)IP、VIP修改至與原服務(wù)器相同的網(wǎng)段,并且SCAN IP不變。信息系統(tǒng)保障小組下達(dá)指令解除應(yīng)急預(yù)案,將應(yīng)急數(shù)據(jù)庫的數(shù)據(jù)上傳至新生產(chǎn)庫,實現(xiàn)業(yè)務(wù)連續(xù),并啟動異地容災(zāi)備份[14],保障信息安全。
醫(yī)院于2021-02-26成功完成了HIS數(shù)據(jù)庫升級,升級的執(zhí)行結(jié)果與測試相同,并且在預(yù)估時間內(nèi)完成。服務(wù)器硬件由4*英特爾至強(qiáng)E7-4809V3 2.0 GHz,8C/16T/4*32G升級為*英特爾至強(qiáng)金牌 6248 2.5GHz,20C/40T/16*32G,HIS服務(wù)器操作系統(tǒng)由Red Hat Enterprise Linux 7.8升級為Red Hat Enterprise Linux 7.9,HIS數(shù)據(jù)庫由Oracle Database 11g升級為Oracle Database 19C,統(tǒng)一了醫(yī)院 Oracle 數(shù)據(jù)庫字符集,并使用RMAN方式實現(xiàn)了5T的歷史電子病歷數(shù)據(jù)無損遷移。
全表掃描的速度影響到信息系統(tǒng)整體運(yùn)行的速度[15]。升級后,我們對HIS數(shù)據(jù)庫中超過1 000萬條記錄的表在升級前后進(jìn)行全表掃描速度對比。在升級前后分別執(zhí)行 select count(*) from 表名稱,對比結(jié)果見表1,由執(zhí)行結(jié)果可見,升級后數(shù)據(jù)庫性能提高。
表2 升級后數(shù)據(jù)庫性能對比
數(shù)據(jù)庫是醫(yī)院信息系統(tǒng)的核心[16],是信息系統(tǒng)穩(wěn)定和運(yùn)行速度的保障。服務(wù)器和數(shù)據(jù)庫升級必須以保障醫(yī)院業(yè)務(wù)數(shù)據(jù)連續(xù)為前提。本次升級方案成功執(zhí)行得益于以下3個方面。
對于5T級別的歷史電子病歷數(shù)據(jù)遷移,選擇合適的數(shù)據(jù)遷移方式至關(guān)重要。RMAN支持增量備份,因此醫(yī)院選擇使用RMAN備份和還原實現(xiàn)數(shù)據(jù)遷移。本次升級實踐表明, RMAN備份和還原可實現(xiàn)大數(shù)據(jù)量遷移,Oracle數(shù)據(jù)庫升級可以選擇RMAN方式。
HIS是醫(yī)院的核心業(yè)務(wù)系統(tǒng),幾乎與醫(yī)院其他所有的信息系統(tǒng)做了接口。為了盡可能縮短業(yè)務(wù)系統(tǒng)中斷時間,本次升級實踐我們精準(zhǔn)計算了數(shù)據(jù)遷移時間和切換生產(chǎn)庫的時間,編制了數(shù)據(jù)庫升級的操作文檔,包含每一個操作的時間點、操作指令和操作執(zhí)行人。在正式升級之前應(yīng)該按照操作文檔做充分的測試和演練。
醫(yī)院業(yè)務(wù)要求7×24 h運(yùn)行,HIS數(shù)據(jù)庫升級須啟動應(yīng)急收費(fèi)庫,保障業(yè)務(wù)連續(xù)。升級完成后應(yīng)立即啟動異地容災(zāi)備份,保障信息安全。