楊燕紅,劉長興,蔣閱峰
1. 濟南軍區總醫院 信息科,山東 濟南250031;2. 山東大學 控制科學與工程學院,山東 濟南 250014
數據保護技術在醫院信息系統數據庫中的應用
楊燕紅1,劉長興1,蔣閱峰2
1. 濟南軍區總醫院 信息科,山東 濟南250031;2. 山東大學 控制科學與工程學院,山東 濟南 250014
甲骨文推出的Oracle數據庫高可用性數據保護(Data Guard)方案,它以低成本、高效能解決了數據庫的備份和容災問題。本文詳細介紹了在我院醫院信息系統(HIS)數據庫中建立Data guard環境的方法和過程,并對Data guard環境測試和應用中出現的故障及故障排除進行了歸納總結,值得同行參考與借鑒。
醫院信息系統;Data Guard;數據庫備份;數據庫容災
我院的醫院信息系統(HIS)采用 Oracle數據庫作為后臺數據庫管理系統,滿足了HIS數據量大、數據類型復雜和并發事務多的要求[1]。隨著應用功能的不斷擴大,其業務范圍覆蓋了醫院的各項醫療活動,數據量也迅猛增長,一旦數據庫發生故障和災難會直接影響醫院業務活動的正常運行,甚至給醫院造成巨大損失。甲骨文推出的Oracle數據庫高可用性數據保護(Data Guard)方案,是一種有效的數據容災解決方案[2]。因此,我們在數據庫熱備份的基礎上又采用了Data Guard建立備份架構,防止數據丟失,實現快速災難恢復,進一步保障數據安全。本文詳細介紹了Data Guard在我院HIS數據庫的實施過程與應用體會。
Data Guard環境由一個主數據庫(Primary)及一個或多個備用數據庫(Standby)組成,可由Oracle 數據庫內部網絡架構連接分布于不同地域。主備庫之間通過重做傳輸服務和日志應用服務可以實時恢復數據以保證數據的同步[3]。我們在兩臺服務器上搭建Data Guard 環境,操作系統為Microsoft Windows Server 2008、Enterprise x64 Edition SP2;數據庫版本為Oracle Database 10g、Enterprise Edition Release 10.2.0.4.0 - 64bit Production。主、備數據庫安裝時設置為歸檔模式,并且邏輯結構一致[4-6]。安裝步驟如下:
1.1 主庫端設置
(1)設置主數據庫為強制日志模式,強制數據庫在任何狀態下必須記錄日志。主庫創建是為主、備數據庫切換使用的。
(2)創建備庫,添加備用聯機日志文件,文件大小與主庫聯機日志文件大小相同,日志文件組數至少比主庫多1個。
(3)修改監聽和連接配置文件,增加指定全局數據庫名,主、備庫別名及連接地址等。
(4)創建備庫的控制文件和密碼文件。
(5)創建、修改初始化參數文件,配置Data Guard環境所需的數據庫別名,設置主、備庫歸檔參數及狀態等。
(6)關閉數據庫,使用參數文件重啟主庫并創建二進制參數文件。
1.2 備庫端操作
(1)修改備庫監聽和連接配置文件方法同主庫。
(2)拷貝文件并配置備庫初始化參數。
(3)關閉主備庫,拷貝數據文件、參數文件、密碼文件、聯機日志文件及創建的備庫控制文件到相應的文件夾下,修改初始化參數文件,將文件中的主庫與備庫位置互換。復制備庫控制文件并分別重命名為control01.ctl,control02. ctl,control03.ctl。
(4)使用參數文件啟動備庫,創建二進制參數文件。
1.3 測試
(1)主、備庫分別重啟監聽服務,并執行連接測試命令,查看主備之間是否連通。
(2)備庫裝入數據時查看是否存在恢復進程MRP0,如果沒有,執行啟動語句重做。
(3)主庫正常啟動后,驗證歸檔目錄是否有效并強制歸檔。
此時分別查看主、備歸檔日志的最大序列號,如果主備查詢結果一致,并且主庫和備庫的歸檔目錄下產生了相同的歸檔日志文件,則Data Guard環境建立完成。
修改數據庫保護模式,實現主、備庫數據同步[7-8]。Data guard有3種數據保護模式,分別為最大保護、最高可用性和最高性能保護模式。最大保護模式下主備庫之間數據完全同步,但是如果網絡或備庫出現問題會直接影響主庫操作,導致主庫宕機;最高可用性模式下主備庫之間數據同步,當網絡或者備庫出現問題時,不會導致主庫宕機,待備庫可用時,將歸檔傳輸到備庫做恢復;最高性能模式下主備庫之間數據是異步傳輸的,主數據庫具有更高的性能,但有可能會丟失少量數據。
為保證數據實時同步,主服務器發生故障時不丟失數據,綜合考慮后我們選擇了最高可用性模式并在備庫啟動實時應用。具體操作過程如下:
(1)修改主庫日志傳送方式為日志寫進程(Log Writer,lgwr)同步方式[9]:SQL>alter system set log_archive_ dest_2='SERVICE=standby lgwr SYNC AFFIRM VALID_ FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_ NAME=standby'。
(2)修改主庫保護模式為最高可用性:SQL>alter database set standby database to maximize availability。
(3)執行后查看保護模式和保護級別:SQL>select protection_mode,protection_level from v$database。如果保護模式和保護級別均為最高可用性,則修改成功。主庫的保護模式修改之后,備庫的模式也會改變,和主庫保持一致。
(4)備庫執行語句啟動實時應用:SQL>alter database recover managed standby database using current logfile disconnect from session。
Data Guard搭建完成后,由于所要求環境的嚴格性,易出現異常情況,因此需要經常查看狀態是否正常,筆者歸納整理了使用過程中出現的幾次故障與應用情況。
3.1 常用查看語句
查看備庫進程是否正常,包含歸檔進程(ARCH)、恢復進程(MRP0)及遠程文件服務(RFS):SQL>select process,status,sequence# from v$managed_standby;
查看主庫數據保護模式和級別:SQL>select protection_ mode,protection_level from v$database;
查看備庫恢復模式是否為實時應用(MANAGED REAL TIME APPLY),保證在最高可用性模式下實時同步數據:SQL>select recovery_mode from v$archive_dest_status where dest_id=2。3.2 故障現象與排除
3.2.1 備庫未接收到主庫日志信息
備庫顯示RFS進程序列號為0,主庫查詢歸檔目錄狀態時,備庫端目錄顯示錯誤ORA-12571:TNS包寫入程序失敗。
TNS(Transparence Network Substrate)意為透明網絡底層,專門用來管理和配置Oracle數據庫和客戶端連接[10]。因此,首先懷疑是網絡故障。此時,在主服務器上ping備庫IP地址提示響應超時,但與其他機器連接正常。檢查備庫網絡連接,在備庫端ping主庫和其他地址均能正常響應;再檢查防火墻,在備庫端打開“Windows防火墻”設置,發現防火墻被人啟用了。立刻關閉防火墻,此時主庫ping備庫正常,稍后備庫狀態恢復為有效,從斷點處能正常接收主庫傳來的日志信息并即時成功應用。
3.2.2 歸檔日志文件沒有生成
備庫沒有RFS進程,在主庫查詢歸檔目錄,備庫端目錄顯示錯誤ORA-01031:Insufficient privileges,提示權限不足。
備庫的RFS進程主要用來接受從主庫傳送過來的日志信息,可以直接將日志寫進備庫重做日志或歸檔日志中。此時,主、備數據庫網絡連接正常,能互聯互通。此問題出現是由于主庫因網絡連接服務異常而執行了重新啟動,分析后聯想到Oracle數據庫連接問題。在Oracle數據庫中連接的認證方式有兩種:分別是操作系統認證和密碼認證,遠程連接必須使用密碼認證[11]。主庫sys口令最近被修改過,而Data guard搭建時要求主備庫口令必須一致。由此推斷,主庫重啟后再遠程連接備庫時因密碼改變而導致認證失敗,權限不足。緊接著將主庫sys口令改回原來的口令,一切恢復正常。3.2.3 熱備份數據不能恢復
在恢復熱備份數據過程中啟動實例和恢復數據正常,但在打開數據庫將其變為可用時報錯:
ORA-00449:background process 'DBW 0' unexpectedly terminated with error 16072
ORA-16072:a m inimum of one standby database destination is required
提示至少需要1個備庫。分析原因是設置了保護模式為最大可用性,所以至少需要1個備庫支持。此時,在備用服務器執行恢復命令后,要先將保護模式修改為最大性能,就可以將數據庫打開變為可用。
3.2.4 主服務器反復重啟
故障切換是主數據庫出現計劃外的災難性故障且不可能及時恢復時,將備用數據庫用作新的主數據庫的操作,可以快速實現災難恢復[12-13]。如我院曾出現過主服務器因raid卡控制器故障而不斷重啟導致不能使用,此時主庫癱瘓,立刻啟用備庫,操作如下:
(1)停止應用歸檔:SQL>alter database recover managed standby database finish force;
(2)將STANDBY數據庫切換為PRIMARY數據庫:SQL>alter database commit to switchover to primary;
(3)正常關閉、啟動數據庫并修改IP地址,替代主庫。
4.1 注意事項
在Data Guard建立與使用過程中下面幾點需要注意:①主備庫Oracle數據庫版本必須一致、邏輯結構相同,以免出現數據庫錯誤;②搭建過程中仔細謹慎按照步驟操作,保障環境搭建成功;③建議對主數據庫的可用性和性能與丟失少量數據的風險進行比較衡量,在最高可用性和最高性能兩者中選擇保護模式;④最高可用性必須保證備庫有備用聯機日志文件,并且主庫的日志傳送方式為同步方式;⑤不要對主、備庫的口令和狀態隨意修改,要經常查看主、備庫的Data Guard環境是否正常。
4.2 應用效果
以前我們一直采用熱備份方式備份數據,主機一旦宕機,在備用機應用歸檔日志文件恢復至少需要0.5 h,并且會損失部分數據。應用Oracle Data Guard可以在幾分鐘內完成數據庫切換,恢復正常使用,而且不會丟失數據。相比之下優點明顯[14]:
(1)災難恢復和高可用性。Data Guard 提供了高效全面的災難恢復,易于管理的轉換和故障切換功能允許主備數據庫之間角色轉換,從而使主數據庫中斷所導致的停機時間減到最少。
(2)完全的數據保護。通過自動檢測和解決中斷、防止數據損壞和用戶錯誤的安全保護,保證備庫數據零丟失,與主庫同步。
(3)有效利用系統資源。備用數據庫可用于備份操作、報表、統計和查詢等其他任務,從而減少主數據庫工作負載。
(4)數據保護方式靈活。Data Guard 提供了最大保護、最高可用性和最高性能等模式,可以幫助企業在系統性能要求和數據保護之間取得平衡。
(5)低成本的備份方案。Data Guard具有Oracle數據庫完全集成的功能,不需要單獨安裝,無需任何額外費用。
總之,Data Guard具有優越的性能,使用后能夠迅速、高效地處理難以預見的業務中斷,保護數據不受故障、災難、錯誤和崩潰的影響,值得推廣和使用。
[1]彭紅波,韓晟,蔡宏偉,等.DataGuard在“軍字一號”系統中的應用[J].中國醫療設備,2012,27(3):43-45.
[2]楊劍,王瑜.O racle Data Guard容災技術的研究與實現[J].現代計算機,2012,(13):10-14.
[3]林樹澤,李淵.O racle 數據庫進階-高可用性、性能優化和備份恢復[M].1版.北京:清華大學出版社,2011:140-143.
[4]Larry Carpenter,等.O racle Data Guard 11g 完全參考手冊[M].劉玉達,危建輝,張敏.譯.1版.北京:清華大學出版社,2011:27-58.
[5]李丙洋.涂抹O racle:-三思筆記之一步一步學O racle[M].1版.北京:中國水利水電出版社,2010:200-246.
[6]劉冬梅,秦方鈺,馬建萍.Oracle數據庫遠程備份的設計及實現[J].信息安全與技術,2012,(12):84-86.
[7]張帆,李響,張紅君.軍衛一號O racle8i到O racle11g在異構環境下的升級過程[J].醫學信息學雜志,2014,(1):26-28,32.
[8]趙志慧.數據容災備份的方法與實現[J].計算機光盤軟件與應用,2012,(8):36.
[9]李民.基于O racleDataGuard構建醫院信息系統的容災備份方案[J].醫療衛生裝備,2012,33(8):45-47.
[10]Bryla B,Loney K.O racle Database 11g DBA 手冊[M].劉偉琴.譯.1版.北京:清華大學出版社,2009.
[11]臧建蓮,張宇敬.O racle 數據庫安全技術與策略[J].電子技術與軟件工程,2014,(2):203.
[12]潘傳迪.基于Data Guard和RMAN的Oracle數據庫容災方案[J].醫院管理論壇,2014,31(1):51-54.
[13]江英琴.基于日志復制的醫院容災備份系統的構建與應用[D].杭州:浙江工業大學,2014.
[14]王靖,劉麗杰.O racle Data Guard容災監控方案探討[J].信息通信,2012,(6):201-203.
App lication of Oracle Data Guard in the Hospital Information System Database
YANG Yan-hong1, LIU Chang-xing1, JIANG Yue-feng2
1.Department of Information, Jinan M ilitary General Hospital, Jinan Shandong 250031, China;2.College of Control Science and Engineering, Shandong University, Jinan Shandong 250014, China
Oracle Data Guard is a high-availability protection technology of database. Backup and disaster tolerance can be realized by using Data Guard w ith low cost and high performance. This paper introduced the steps of building Oracle Data Guard environment in the hospital information system database, and summarized several usages under the environment, which provided references and deserved w ider application.
hospital information system;Data Guard;database backup;database disaster tolerance
TP319
A
10.3969/j.issn.1674-1633.2015.09.029
1674-1633(2015)09-0096-03
2015-03-14
2015-05-13
蔣閱峰,副教授。
通訊作者郵箱:jyfyyh@163.com