?

“軍衛一號”數據庫不同類型文件損壞的恢復方法*

2018-03-21 01:10王興強
實用醫藥雜志 2018年8期
關鍵詞:數據文件聯機日志

王興強,孟 娜

[作者單位]250031山東濟南,原濟南軍區總醫院信息科(王興強,孟娜)

[關鍵字] 軍衛一號;數據庫;恢復

筆者所在醫院“軍衛一號”信息系統運行十余年,his數據庫經歷了由 oracle 8i升級至 oracle 10g,由32位升級至64位,數據庫服務器也不斷更新換代,從而保障了業務系統的正常運行,但數據庫的安全性及穩定性仍然是醫院信息部門維護的重中之重,硬件故障、軟件故障、網絡故障、進程故障和系統故障都會造成數據庫的宕機,導致數據的丟失,給醫院的業務造成非常嚴重的后果。醫院信息部門需要根據數據庫不同的異常情況,采取相應的恢復方法[1-6],對數據庫進行有針對性的恢復。

該文提出了“軍衛一號”數據庫不同類型數據庫文件損壞的恢復方法,可以規避數據庫宕機而數據無法恢復的嚴重后果,保障了“軍衛一號”數據庫的安全穩定運行。

1 數據庫恢復的含義

當數據庫正常運行時,由于計算機系統的某些故障(如內存錯誤、硬盤壞道、系統崩潰、意外掉電等)會影響數據庫系統的操作,影響數據庫中數據的正確性、可靠性、數據一致性,有時甚至破壞數據庫,使數據庫中全部或部分數據丟失。因此當發生上述故障后重構這個完整的數據庫,即為數據庫恢復。數據庫文件損壞所需要的恢復為數據庫文件介質的恢復 (“軍衛一號”his數據庫對數據的安全性有著嚴格的要求,該文介紹的數據庫恢復方法均在數據庫歸檔模式下,且進行完全數據恢復,同時可減少宕機時間)。

2 不同文件類型損壞的恢復方法

“軍衛一號”his數據庫包括數據文件、聯機日志文件、控制文件、回滾數據文件、臨時數據文件等多種文件類型。

2.1 數據文件損壞的恢復方法 損壞或丟失單個數據文件,利用備份數據庫和歸檔日志進行恢復,可以減少宕機時間,并進行數據庫的完全恢復,從備份后到數據庫崩潰時的數據都不會丟失。(1)啟動數據庫錯誤,脫機該數據文件。操作如下:startup;啟動數據庫報 ora-01157、ora-01110錯誤;alter database datafile n offline drop;脫機數據文件,n為文件序號。(2)打開數據庫,拷貝備份數據文件,恢復該數據文件,并聯機。操作如下:alter database open; 打開數據庫;copy d:databakapcomm.dbf d:oracleoradataorcl;拷貝備份文件從備份處;recover datafile n;恢復該數據文件;alter database datafile n online;恢復成功,聯機該數據文件。

需要注意的是,在恢復過程中,如果有多個數據文件損壞,可以采用一個一個數據文件的恢復方法(需要對數據文件一一脫機,再對數據文件分別恢復),也可以采用整個數據庫的恢復方法;但如果是系統表空間文件損壞,不能采用此方法。

2.2 聯機日志文件損壞的恢復方法 聯機日志文件分為當前聯機日志文件和非當前聯機日志文件,兩種聯機日志文件的損壞恢復方法不同,非當前聯機日志文件損壞可通過clear命令解決問題,當前聯機日志文件損壞需要recover命令進行不完全數據恢復。

非當前聯機日志文件恢復:(1)啟動數據庫。startup;啟動數據庫報ora-00312或ora-00313錯誤,提示日志組n的數據文件損壞。(2)查看v$log視圖,用clear命令重建該日志文件。select group#,sequence#,archived,status from v$log; 查看損壞的組n是否為非當前狀態,查看是否已經歸檔。alter database clear logfile group n;已歸檔,重建日志,或alter database clear unarchived logfile group n;未歸檔,重建日志。(3)打開數據庫。alter database open。

需要注意的是,當前聯機日志文件的恢復方法與非當前聯機日志文件的恢復方法不同在于,在進行上述步驟(2)查看v$log視圖時,確認損壞的組n為當前狀態,直接執行recover database until cancel,先選擇auto,恢復可以利用的歸檔日志,然后重新執行 recover database until cancel,輸入cancel,完成不完全恢復,也就是說恢復兩次。最后執行alter database open resetlogs打開數據庫。

2.3 控制文件損壞的恢復方法 單個控制文件損壞可通過復制其他正常的控制文件替換損壞的控制文件來解決?!败娦l一號”his數據庫控制文件為3個,而且都互為鏡像,只要拷貝一個就可以。如所有的控制文件都損壞,則需要重新建立控制文件。操作如下:(1)在備用服務器上用sys用戶備份控制文件腳本。alter database backup control file to trace;備份控制文件腳本。腳本文件位于product10.2.0adminorcludump目錄下,名稱為orcl_ora_*.trc。(2)提取以 startup nomount開頭,以 alter database open結束的腳本段。在主服務器上執行,啟動數據庫。

2.4 回滾數據文件損壞的恢復方法 回滾段表空間中的一個數據文件丟失或者損壞導致數據庫無法識別它,在啟動數據庫的時候會出現ora-1157,ora-1110的錯誤,或者操作系統級別的錯誤,例如ora-7360。在關閉數據庫的時候 (normal或者immediate)會出現 ora-1116,ora-1110 的錯誤,或者操作系統級別的錯誤,例如ora-7368。(1)offline存在丟失或損壞的數據文件的回滾段表空間中的所有回滾段:alter rollback segment<rollback_segment>offline。(2)刪除掉那個包含損壞文件的回滾段表空 間 :drop tablespace<tablespace_name>including contents。(3)重建回滾段并online聯機。

2.5 臨時數據文件損壞的恢復方法 臨時數據文件的恢復比較簡單,因為臨時數據文件中不涉及其他的有用的數據,所以可以刪除后重建。

3 討論

“軍衛一號”系統自1997年在軍內外醫院推廣至今,應用已有近千家醫院,運行良好,其基礎架構穩固,數據結構完整規范,模塊支持自定義擴展維護[7]。但運行期間,部分醫院也因硬盤壞道、系統崩潰、意外掉電等原因造成數據庫宕機系統癱瘓,甚至出現醫療數據丟失的情況。某綜合醫院還因定期切換數據庫服務器時操作錯誤,部分醫療數據被覆蓋,造成醫療數據丟失且不可挽回[8,9]。 所以采取適當的數據庫備份和恢復方法非常重要。

該文介紹了“軍衛一號”his數據庫的不同數據庫文件類型的文件損壞的恢復方法。針對不同類型的損壞數據文件采用不同的恢復方法,能夠在第一時間完成數據恢復,保障系統正常運行?!败娦l一號”his數據庫容災要求數據零丟失,災難恢復時宕機時間短,不影響正常醫院業務運行。數據丟失會給醫院的業務工作帶來負面影響,所以在數據庫容災恢復時要求采取數據完全恢復。這要求醫院信息部門做好數據庫的日常備份和容災工作。目前常用的“軍衛一號”數據庫備份方案,除了軍衛系統自帶的熱備份軟件加日志文件異地同步備份方案外,還有一種oracle數據庫的dataguard技術方案。dataguard方案是一種高可用性數據庫方案,是目前理想的數據庫全庫備份方案。筆者所在醫院已實現 “軍衛一號”his數據庫的dataguard數據異地容災[10-13],并成功運行2年時間,實現his數據庫實時同步備份,數據零丟失,保障了醫院業務的正常運行。

猜你喜歡
數據文件聯機日志
一名老黨員的工作日志
扶貧日志
海爾發布全球首個物聯多聯機云服務平臺
雅皮的心情日志
數據文件恢復專題問答
數據文件安全管控技術的研究與實現
SQL數據文件恢復工具
游學日志
高溫多聯機空調系統的控制方式研究
CALIS聯機合作編目中的授權影印書規范著錄
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合