紀亞亮,鄭 陽
醫(yī)院信息系統(tǒng)全天候支撐著醫(yī)院紛繁復雜的業(yè)務,數(shù)據(jù)庫作為信息系統(tǒng)的核心部件,使得醫(yī)院對其依賴程度日益增強。因此,數(shù)據(jù)的可用性和可靠性顯得尤為重要,一旦硬件故障或自然不可抗拒因素造成數(shù)據(jù)庫損壞,使數(shù)據(jù)丟失或不可用時,就會給醫(yī)院帶來無法估量的損失,同時還會使醫(yī)院陷入管理混亂的境地。如何保障在災難發(fā)生時醫(yī)院數(shù)據(jù)不丟失,保證系統(tǒng)服務盡快恢復運行,成為人們關注的話題[1]。所以,建立一套安全可靠的異地數(shù)據(jù)保護系統(tǒng)是大勢所趨,也是醫(yī)院突顯核心競爭力的必經(jīng)之路。Data Guard是在邏輯層,通過傳輸和運行數(shù)據(jù)庫日志文件來保持生產(chǎn)和備份數(shù)據(jù)庫的數(shù)據(jù)一致性[2]。其物理備用數(shù)據(jù)庫作為我院異地容災數(shù)據(jù)庫的首選方案,經(jīng)過測試和驗證,能夠滿足醫(yī)院業(yè)務數(shù)據(jù)庫可用性和可靠性的雙重要求,為醫(yī)院信息系統(tǒng)的穩(wěn)定運行提供保障。
Data Guard作為Oracle企業(yè)版的一個組件,提供一整套功能,包括創(chuàng)建、維護、管理和監(jiān)控一個或多個Standby數(shù)據(jù)庫,使主數(shù)據(jù)庫即使發(fā)生災難和數(shù)據(jù)破壞也能保證數(shù)據(jù)不丟失[3]。Data Guard主要由Redo日志傳輸服務和Redo日志應用服務構成。日志的傳輸是由主數(shù)據(jù)庫的LOG_ARCHIVE_DEST_N參數(shù)配置,有實時傳輸和切換時傳輸之分,其和DataGuard的保護模式有關。日志的應用分為實時應用和延時應用。一旦主數(shù)據(jù)庫因計劃或意外事件宕機,Data Guard能切換Standby數(shù)據(jù)庫到主數(shù)據(jù)庫的角色,最大程度縮短停機時間。Oracle Database 11g Release2支持在給定的O-racle Data Guard配置類型中使用多達30個任意類型的備用數(shù)據(jù)庫,以滿足幾乎任意類型應用程序的高可用性和可擴展性需要[4]。
1.2.1 物理備用數(shù)據(jù)庫
物理備用數(shù)據(jù)庫通過介質(zhì)恢復來實現(xiàn)數(shù)據(jù)庫重做,以達到與數(shù)據(jù)庫保持一致的目的。如圖1所示,這種恢復是Oracle自身的分塊復制技術。該模式下備庫允許以只讀方式打開數(shù)據(jù)庫,從而可以進行相關報表的查詢工作,不同程度上減輕了主數(shù)據(jù)庫的只讀負載。在10g以前,只讀打開備庫后,Redo日志不可以接受和應用,而在11g以后則無此限制。因此,物理備用數(shù)據(jù)庫在保護數(shù)據(jù)的同時可以生成最新報表。
圖1 典型的Data guard配置
1.2.2 邏輯備用數(shù)據(jù)庫
邏輯備用數(shù)據(jù)庫通過Redo日志轉(zhuǎn)換成SQL語句,并在備庫上執(zhí)行該SQL語句。由于是執(zhí)行SQL語句而非介質(zhì)恢復,只包含了相同的邏輯信息,因此,物理結(jié)構和數(shù)據(jù)結(jié)構可以不同。多數(shù)情況下,邏輯備用數(shù)據(jù)庫用來升級數(shù)據(jù)庫。
1.2.3 快照備用數(shù)據(jù)庫
快照備用數(shù)據(jù)庫可以以讀/寫的方式打開備用數(shù)據(jù)庫,其利用了數(shù)據(jù)庫的閃回技術作為輔助,與物理備用數(shù)據(jù)庫一樣,從主數(shù)據(jù)庫接受Redo數(shù)據(jù),但暫時不應用Redo日志,直到快照備用數(shù)據(jù)庫轉(zhuǎn)換為物理備用數(shù)據(jù)庫后才應用Redo日志??煺諅溆脭?shù)據(jù)庫一般用于現(xiàn)場測試。
Oracle提供了3種Data Guard保護模式來滿足各種不同安全級別要求的系統(tǒng),包括了最大保護、最大性能保護、最高可用性保護,見表1。
表1 3種保護模式
我院生產(chǎn)庫為2臺HPDL585構建的基于Windows Server2003的64位集群,安裝Oracle 11g R2 64位數(shù)據(jù)庫,位于我院中心大樓機房。異地服務器為一臺HPDL380,基于Windows Server2003 64位操作系統(tǒng),安裝Oracle11gR2 64位數(shù)據(jù)庫,位于我院小紅樓病區(qū)弱電機房。生產(chǎn)庫存儲采用2臺EMCVNX5500,一主一備;生產(chǎn)庫儲存網(wǎng)絡由2臺光纖交換機構成冗余SAN網(wǎng)絡。異地存儲采用醫(yī)院現(xiàn)有的建聯(lián)Raidsys9300 FM,異地容災架構圖如圖2所示。比較DataGuard備庫的3種保護模式,我院采用最大性能模式配置異地容災數(shù)據(jù)庫。日志采用異步傳輸?shù)哪J剑s小 RPO(recovery point object),減少 RTO(recovery time object)[5]。
連接主庫,確認已處于歸檔和force logging模式,創(chuàng)建pfile。停止主庫,復制一個密碼文件副本,修改pfile,添加如下內(nèi)容:
圖2 異地容災架構圖
連接異地備用服務器,創(chuàng)建和主庫相同的目錄結(jié)構,磁盤的盤符最好和主庫保持一致。接著創(chuàng)建實例,oradim-new-sid orcl,配置環(huán)境變量,并連接到該空閑實例??截愔鲙斓拿艽a文件副本到相應目錄,創(chuàng)建一個內(nèi)容僅包含DB_NAME的pfile文件,利用該pfile啟動備庫到nomount狀態(tài)。在備庫上添加備用重做日志文件,需要注意的是,這里主庫有3個ORL組,每個50MB,所以,我們在備庫上創(chuàng)建4個大小為50MB的SRL組,額外的重做日志作為一個緩沖區(qū),提高處理大量事務的能力。
在主庫和備庫配置雙方的TNS解析和靜態(tài)監(jiān)聽器,配置完監(jiān)聽后需要重啟或重加載監(jiān)聽器。
10g版本以前是通過冷備份將主庫拷貝到備庫[6],或者通過RMAN先行在主庫上備份數(shù)據(jù)庫,然后拷貝到備庫,再行導入備用數(shù)據(jù)庫[7],操作比較繁瑣,而且需要占用比較大的臨時存儲空間。11g版本以后,可以利用RMAN直接復制數(shù)據(jù)庫,我院采用復制數(shù)據(jù)庫的方式進行。代碼如下:
連接備庫,創(chuàng)建pfile,在pfile中添加參數(shù)信息,參照主庫新加參數(shù)。停止備庫,利用修改過的pfile啟動備庫到mount狀態(tài),創(chuàng)建spfile。
在備用數(shù)據(jù)庫上啟動應用進程的代碼如下:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
Data Guard實現(xiàn)了主備庫之間角色的輕松轉(zhuǎn)換,最小化主庫的停機時間,可以使終端用戶在幾分鐘而不是幾天或幾周內(nèi)訪問數(shù)據(jù)庫,具備了高可用性(與rac結(jié)合達到了最高可用體系結(jié)構);備庫的3種數(shù)據(jù)保護模式確保不會有(或者只有很少的)數(shù)據(jù)丟失,保證了生產(chǎn)數(shù)據(jù)庫數(shù)據(jù)不會因硬件故障或自然災害而丟失,具備了數(shù)據(jù)持續(xù)保護的能力,可靠性得到驗證。
物理備用數(shù)據(jù)庫是基于介質(zhì)的恢復,重做數(shù)據(jù)是從主數(shù)據(jù)庫接受,在備庫應用。Oracle 11g中的新參數(shù)DB_LOST_WRITE_PROTECT提供獨特的技術防止寫丟失造成的損失,主庫存儲級別的物理損壞不會蔓延到備庫。同時,邏輯損壞或者用戶錯誤引起的主數(shù)據(jù)庫破壞也能得到一定程度的保護。它不需要硬件鏡像做法的大投資,提供了遠程磁盤鏡像技術所無法實現(xiàn)的功能,特別是在遠程數(shù)據(jù)庫備份過程中,DataGuard的優(yōu)勢更加明顯。
物理備用數(shù)據(jù)庫以只讀方式打開后可以進行報表生成和查詢等工作,如果配合快照備用數(shù)據(jù)庫,還可以進行程序開發(fā)測試等工作,由此減少了數(shù)據(jù)庫的工作量,節(jié)約了主數(shù)據(jù)庫的CPU和I/O等寶貴資源。
醫(yī)院信息中心數(shù)據(jù)庫連續(xù)性服務一直是醫(yī)療信息界探討的熱點,異地容災項目的搭建除了防災減災外,還是不間斷提供服務的一個保障。DataGuard作為Oracle數(shù)據(jù)庫本身的一組部件,實現(xiàn)了異地的應用級容災,很好地滿足了數(shù)據(jù)庫異地容災的需求。隨著IT的發(fā)展,市場上涌現(xiàn)了眾多優(yōu)秀的異地容災產(chǎn)品,如 EMC-VPLEX、symantec BT、IBM Tivoli Storage Manager、Oracle GoldenGate等。作為醫(yī)院方,結(jié)合各產(chǎn)品的特點和醫(yī)院自身的實際情況(經(jīng)濟實力、人員配備、技術等),選擇恰當?shù)娜轂漠a(chǎn)品可以事半功倍。我院作為南京一家市屬醫(yī)院,正由專科向綜合轉(zhuǎn)型,經(jīng)濟實力比較薄弱,選擇Oracle Data Guard既滿足了醫(yī)院數(shù)據(jù)高可用和可靠的雙重需求,又為醫(yī)院節(jié)約了成本,最終提升了醫(yī)院的信息化服務水平。
[1] 黃志中,王占明.醫(yī)院信息系統(tǒng)容災技術淺談[J].醫(yī)療衛(wèi)生裝備,2009,30(6):48-50.
[2] 杜戰(zhàn)偉,黃志中,鄭萬松.Oracle RAC環(huán)境下建立DATAGUARD的研究[J].醫(yī)療衛(wèi)生裝備,2010,31(10):71-73.
[3] 劉炳林.構建最高可用Oracle數(shù)據(jù)庫系統(tǒng)[M].北京:機械工業(yè)出社,2012:395-401.
[4] Jesse S,Vongray B,Burton B.Oracle Database11gR2 高可用性:使用Grid Infrastructure、RAC和DataGuard最大限度提高可用性[M].張慧穎,李波,譯.2版.北京:清華大學出版社,2012:228-231.
[5] 曹文琴,朱海燕,劉映球.基于Oracle數(shù)據(jù)庫容災技術的研究[J].制造業(yè)自動化,2012,34(11):63-64.
[6] 彭紅波,韓晟,蔡宏偉,等.DataGuard在“軍字一號”系統(tǒng)中的應用[J].中國醫(yī)療設備,2012,27(3):43-45.
[7] 徐正雄,王玲,可向民,等.利用RMAN創(chuàng)建“軍衛(wèi)一號”O(jiān)racl Dataguard 數(shù)據(jù)庫[J].醫(yī)療衛(wèi)生裝備,2010,31(6):45-47.