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