董向文
(廣西中醫(yī)藥大學(xué)第一附屬醫(yī)院信息科,廣西南寧 530023)
醫(yī)療信息系統(tǒng)為醫(yī)護(hù)人員提供信息支持,確保日常工作可以順利進(jìn)行,作為一個具備綜合信息處理能力的平臺,醫(yī)療信息系統(tǒng)可以全面整合病人的門診信息、床位信息、財務(wù)信息等。應(yīng)用該信息系統(tǒng)后,病人可直接在網(wǎng)上掛號、預(yù)約,無須提前排隊掛號,看病更方便快捷。此外,病人的看診、藥品、床位信息可以在各部門間實時傳輸,實現(xiàn)醫(yī)院業(yè)務(wù)透明化,提升工作效率,降低醫(yī)療事故的發(fā)生幾率。醫(yī)療信息系統(tǒng)運(yùn)行穩(wěn)定與否,直接決定了醫(yī)護(hù)人員是否能正常工作,若系統(tǒng)運(yùn)行狀態(tài)異常,會直接影響醫(yī)院的日常運(yùn)行,嚴(yán)重時還會影響到病人的生命安全,因此構(gòu)建運(yùn)行穩(wěn)定、性能優(yōu)渥的醫(yī)療信息系統(tǒng)就顯得尤為重要,該文基于Oracle 數(shù)據(jù)庫技術(shù),對醫(yī)療信息系統(tǒng)的優(yōu)化進(jìn)行了研究。
目前,在多個領(lǐng)域的管理系統(tǒng)中已經(jīng)廣泛地運(yùn)用Oracle 數(shù)據(jù)庫,Oracle 當(dāng)中的ODI 是基于Java創(chuàng)建的E-LT 引擎,適配于多種主流數(shù)據(jù)源,可與Oracle 數(shù)據(jù)庫實現(xiàn)無縫對接,能滿足重要數(shù)據(jù)的集成需求。但是隨著系統(tǒng)用戶的增加,Oracle 的規(guī)模和數(shù)據(jù)結(jié)構(gòu)也越來越大,致使信息管理能力有所下降。為了妥善解決這些問題,需要及時對系統(tǒng)進(jìn)行優(yōu)化,對Oracle 數(shù)據(jù)庫的內(nèi)部結(jié)構(gòu)進(jìn)行調(diào)整,重新配置資源,激發(fā)其高性能優(yōu)勢。為了達(dá)到提升Oracle 數(shù)據(jù)庫性能的目的,需要對其內(nèi)部體系結(jié)構(gòu)進(jìn)行深入了解和探究,其具體體系結(jié)構(gòu)如圖1所示[1-2]。
圖1 Oracle數(shù)據(jù)庫體系結(jié)構(gòu)
該體系結(jié)構(gòu)由用戶進(jìn)程和實例化對象兩方面構(gòu)成。進(jìn)入用戶進(jìn)程就意味著進(jìn)入了系統(tǒng)的全局區(qū)。其數(shù)據(jù)信息可以與數(shù)據(jù)庫文件完成信息交互,交互后的數(shù)據(jù)可完整地存儲于緩沖區(qū),從根本上提升Oracle 數(shù)據(jù)庫的工作效率。
可以利用對Oracle 數(shù)據(jù)庫進(jìn)行性能監(jiān)測的方式來提升其性能。Oracle 數(shù)據(jù)庫內(nèi)部具有AWR(自動負(fù)載信息庫),可以當(dāng)做相關(guān)對象完成檢測數(shù)據(jù)庫性能的工作。AWR 能將所有和數(shù)據(jù)庫性能有關(guān)的數(shù)據(jù)進(jìn)行統(tǒng)計,用量度的方式將具體統(tǒng)計結(jié)果表示出來,將Oracle 數(shù)據(jù)庫存在的潛在性能問題體現(xiàn)出來。MMON 模塊會分時段對數(shù)據(jù)庫內(nèi)容進(jìn)行采集,確保數(shù)據(jù)具備時效性。AWR 在完成數(shù)據(jù)信息采集后,會以數(shù)據(jù)表的形式將其保存下來,并以WRMMYM_*和WRHMYM_*的格式對其命名,用戶可通過輸入關(guān)鍵信息的方式完成數(shù)據(jù)查詢工作。具體的性能檢測視圖概況如圖2 所示[3-4]。
圖2 性能檢測視圖概況圖
Oracle 數(shù)據(jù)庫作為醫(yī)療信息系統(tǒng)的主要構(gòu)成部分,需要長期服務(wù)于系統(tǒng)的工作過程。為了使硬件資源的性能充分發(fā)揮,首先要提升數(shù)據(jù)庫性能,相應(yīng)的硬件配置表如表1 所示。
表1 硬件配置表
數(shù)據(jù)庫優(yōu)化具體劃分為3 個階段:1)優(yōu)化外部環(huán)境和操作系統(tǒng)級別,主要目的是在外部構(gòu)建更適合數(shù)據(jù)庫硬件運(yùn)行的環(huán)境。2)優(yōu)化數(shù)據(jù)庫配置級別,主要優(yōu)化內(nèi)容是對初始化參數(shù)和連接方式進(jìn)行優(yōu)化。3)優(yōu)化SQL 語句,該優(yōu)化的側(cè)重點(diǎn)應(yīng)放于參數(shù)綁定和索引應(yīng)用上,以下會對優(yōu)化SQL 語句進(jìn)行深入研究[5-6]。
對SQL 語句進(jìn)行優(yōu)化,可以一定程度上提升Oracle 數(shù)據(jù)庫的性能,在出現(xiàn)同樣的查詢要求時,可以運(yùn)用不同的SQL 語句完成查詢工作,不同的SQL語句工作效率也各不相同。因此,選擇適宜的SQL執(zhí)行語句有助于提升醫(yī)療信息系統(tǒng)的性能,其具體執(zhí)行過程如圖3 所示。
圖3 SQL語句處理過程
從圖3 可以看出,該流程包含軟解析和硬解析兩個部分。軟解析模塊依次對查詢語句的語法和語義進(jìn)行檢查,結(jié)合檢查結(jié)果對優(yōu)化模式進(jìn)行決定,最終實現(xiàn)SQL 計劃的執(zhí)行。
表2、表3 為仿真實驗中創(chuàng)建索引之前和之后的執(zhí)行計劃。
表2 創(chuàng)建索引之前的執(zhí)行計劃
表3 創(chuàng)建索引之后的執(zhí)行計劃
通過對比二者的Cost 值可以得出以下結(jié)論,創(chuàng)建索引之后,Oracle 數(shù)據(jù)庫的性能得到了大幅度提升,優(yōu)化效果明顯。
當(dāng)Oracle 數(shù)據(jù)庫創(chuàng)建完成后,所用的字符集無法改變,因此,在醫(yī)療信息系統(tǒng)構(gòu)建的初步階段就應(yīng)提前做好字符集種類的選定工作[7-8]。在Oracle 數(shù)據(jù)庫中,有與之關(guān)聯(lián)的NLS_LANG,其參數(shù)為NLS_LANG=language_territory.charset。其 中,language 代表系統(tǒng)所用語言,territory 則代表日期及數(shù)字格式,charset 代表指定字符集。Oracle 數(shù)據(jù)庫進(jìn)行imp/exp等程序時,可以起到備份和還原醫(yī)療信息系統(tǒng)數(shù)據(jù)的作用。exp 命令,可導(dǎo)出遠(yuǎn)程數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)并將其保存至dmp 文件之中,imp 命令則是將dmp文件中存儲的數(shù)據(jù)傳送至遠(yuǎn)程數(shù)據(jù)庫服務(wù)器[9-10]。此種導(dǎo)入導(dǎo)出方式能創(chuàng)建出兩個屬性相同的數(shù)據(jù)庫,分別用來測試和正式使用。
在Oracle 數(shù)據(jù)庫的使用過程中,如果字符集不同則數(shù)據(jù)的導(dǎo)入將會受到影響,所以必須一并導(dǎo)入所有的字符集,避免出現(xiàn)亂碼。1)可應(yīng)用多種方法對Oracle server 端的字符集進(jìn)行查詢。2)對Oracle client端字符集進(jìn)行確認(rèn),通過import 將Oracle 數(shù)據(jù)庫的dmp 文件進(jìn)行導(dǎo)入,若二者所應(yīng)用的數(shù)據(jù)庫字符不一致,可能會出現(xiàn)數(shù)據(jù)亂碼的情況,可以借助修改注冊表的方式來重新選取客服端字符集。3)DMP 文件字符集的查詢方法。采用Oracle 數(shù)據(jù)庫中的exp工具導(dǎo)出DMP 文件中囊括的字符集信息,由于醫(yī)療信息系統(tǒng)中的DMP 文件巨大,內(nèi)存通常多達(dá)10 G 以上,因此容易出現(xiàn)打開緩慢或打不開的情況,此時可采用UltraEdit軟件對其進(jìn)行編輯,提升打開速度[11-12]。
在設(shè)計導(dǎo)入實施方案時,需要應(yīng)用到兩臺服務(wù)器,可將A機(jī)設(shè)定為oracle10g,system為管理員賬號,dbserver 為全局?jǐn)?shù)據(jù)庫,us7ascii 為字符集。B 機(jī)數(shù)據(jù)庫服務(wù)器則為oracle11g,除了字符集為zhs16gbk 以外,包括安裝路徑在內(nèi),都與A 機(jī)數(shù)據(jù)庫完全相同。1)確定字符集,登錄plsql 之后輸入相應(yīng)的腳本對字符集進(jìn)行確定。2)導(dǎo)出文件,此項工作可以在DOS 中完成。利用exp 將醫(yī)療信息系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)化為二進(jìn)制形式,然后下載成相應(yīng)的dmp 文件,便于后續(xù)的數(shù)據(jù)調(diào)取。3)運(yùn)用UltraEdit 工具,由于醫(yī)療信息系統(tǒng)中的文件巨大,打開文件時采用普通的文本工具難度會增大,所以要合理運(yùn)用UltraEdit 工具對需要導(dǎo)出的文件進(jìn)行編輯來縮短其打開時間[13-14]。
再次將下載好的dmp 文件上傳至系統(tǒng)數(shù)據(jù)庫,數(shù)據(jù)導(dǎo)入之后要對管理員口令進(jìn)行更改,然后再對系統(tǒng)進(jìn)行重啟[15-16]。應(yīng)用此技術(shù)可有效解決漢字顯示亂碼問題,提升醫(yī)療信息系統(tǒng)的運(yùn)行穩(wěn)定性。
當(dāng)前醫(yī)療信息系統(tǒng)內(nèi)部所存信息量非常巨大,而且存儲結(jié)構(gòu)比較復(fù)雜,針對這種現(xiàn)狀,提出了基于Oracle 數(shù)據(jù)庫對醫(yī)療信息系統(tǒng)進(jìn)行優(yōu)化的設(shè)想。通過檢測Oracle 數(shù)據(jù)庫體系結(jié)構(gòu)和相關(guān)對象的方式對其進(jìn)行優(yōu)化,并融入導(dǎo)入數(shù)據(jù)中文亂碼優(yōu)化技術(shù),對醫(yī)療信息系統(tǒng)進(jìn)行進(jìn)一步優(yōu)化。
對系統(tǒng)內(nèi)存中的大量醫(yī)院信息數(shù)據(jù)進(jìn)行調(diào)取、深度挖掘和整合,為醫(yī)院決策層和醫(yī)護(hù)人員提供更加具有準(zhǔn)確性和時效性的決策支持和信息服務(wù),有助于提升醫(yī)護(hù)系統(tǒng)的精細(xì)化管理水平,擁有廣闊的發(fā)展空間和前景。