《軍隊療養院信息管理系統》中Oracle數據庫備份與恢復策略
310002 南京軍區杭州療養院海勤療養區 王雷 周曉明 肖征
從保障數據庫安全的角度出發,探討Oracle數據庫備份與恢復在《軍隊療養院信息管理系統》維護中的應用,通過使用恢復管理器(Recovery Manager,RMAN),制定合理的備份策略,實現數據庫的完全備份與恢復,解決了Oracle數據庫因計算機系統故障引起的數據損壞或丟失等問題。
Oracle數據庫;恢復管理器;備份;恢復
《軍隊療養院信息管理系統》在全軍各療養院的推廣應用,極大地提高了各療養院的療養管理效率,其中Oracle作為該系統的后臺數據庫發揮了重要作用。隨著醫療數據的日益增加,對Oracle數據庫的安全穩定運行提出了更高的要求,但是無論數據庫系統如何配置和優化,都不能確保數據庫系統絕對安全穩定。當數據庫遭到破壞時,數據庫管理員必須利用數據庫備份對數據庫進行及時有效地恢復,確保數據安全。因此,數據庫的備份與恢復是數據庫管理員的重要職責。
1.1 數據庫備份 數據庫備份是對數據庫物理結構文件,包括數據文件、日志文件和控制文件的備份。Oracle數據庫有物理備份和邏輯備份兩種備份方法,其中物理備份又分為冷備份和熱備份。
1.2 冷備份 冷備份通常是在數據庫正常關閉后,對其使用過的各個文件都進行備份,這些文件構成數據庫關閉時的一個完整印象,通常而言,冷備份是最快和最安全的方法[1]。但是冷備份必須在數據庫關閉的情況下進行,當數據庫處于打開狀態時,執行數據庫文件系統備份是無效的。
1.3 熱備份 熱備份是指當數據庫打開時,對數據庫進行的物理備份,這種備份方式稱為聯機備份,熱備份要求數據庫運行在歸檔方式下。熱備份可以通過Oracle提供的可視化工具實現,也可以通過預先創建好的命令文檔實現。
1.4 邏輯備份 邏輯備份利用Oracle提供的Export命令將數據從數據庫中提取出來,生成一個二進制的導出轉儲文件,此文件包含完全重建全部所選對象所需的命令,與熱備份相同,系統不必為邏輯備份而關閉。
1.5 數據庫恢復 數據庫備份的目的是為了數據庫發生故障后能及時恢復,數據庫恢復根據故障類型分為實例恢復與介質恢復。實例恢復將數據庫恢復到故障之前的事務一致狀態;介質恢復主要用于因介質故障引起的數據庫文件破壞時使用。根據數據庫備份性質,Oracle提供了兩種不同的恢復模式——完全恢復與不完全恢復。完全恢復要求數據庫在歸檔方式下運行,可以恢復全部丟失的數據,使數據庫恢復到最新狀態;不完全恢復是指將數據庫恢復到故障之前的某個時間節點。
2.1 RMAN原理 RMAN是Oracle公司在Oracle 8.0以后推出的數據庫備份與恢復工具。RMAN通過自動啟動操作系統進程將數據備份到磁盤或磁帶上。與常用的物理數據庫備份、邏輯數據庫備份不同,RMAN使用數據庫對數據庫進行備份的原理,RMAN必須運行在一個數據庫上,在RMAN數據庫中存儲了對于遠程數據庫的備份信息,它有自身的語法形式,可以通過命令行方式或企業管理器控制臺圖形方式控制,提供第三方介質管理,極大地簡化了備份與恢復流程。
2.2 RMAN配置步驟及示例 ①創建一個恢復數據庫并在該數據庫中創建恢復目錄所用表空間,示例如下:SQL>create tablespace rmants datafile'c:oracleoradata mants.ora’。②在目錄數據庫中創建RMAN用戶并授權,示例如下:SQL>create user rman identified by rman default tablespace rmants temporary tablespace temp quota unlimited on rmants;SQL>grant recovery_catalog_owner to rman。③在目錄數據庫中創建恢復目錄,示例如下:RMAN>create catalog tablespace rmants。④注冊目標數據庫到恢復目錄,示例如下:RMAN>connect catalog rman/rman@cc;RMAN>connect register system/manager@aspsrv;RMAN>register database。
3.1 RMAN備份模式 RMAN提供了兩種備份模式:完全備份、增量備份。完全備份包括了所有有數據的數據塊;增量備份僅備份上一次同一級別或更低級備份被修改過的數據塊,有兩種方式:DIFFERENTIAL(差異)和CUMULATIVE(累積),默認情況下RMAN創建的增量備份是DIFFERENTIAL方式,執行增量備份時必須首先執行基礎備份(0級備份),增量備份因備份數據量較小,占用較少的網絡帶寬和較低的存儲空間,成為實施策略備份的主流。
3.2 策略制定 根據《軍隊療養院信息管理系統》中Oracle數據庫的特點,采用DIFFERENTIAL方式,在周三、日對數據庫進行0級備份,在周一、二、四、五、六對數據庫進行1級備份[2],這樣無論數據在哪一天發生故障,都可以利用備份文件、歸檔日志文件及聯機日志文件對數據庫進行完全恢復。備份策略的實施(圖1)。
主要實現代碼示例如下[3]:①0級備份 (每周日、三用 ):run{allocate channel d1 type disk;backup incremental level=0 databaseformat ‘d:/db_%d_%s_%p_%t‘tag=‘WHOLE_INC0’;}②1級備份(每周一、二、四、五、六用):run{allocate channel d1 type disk;backup incremental level=1 database format ‘d:/db_% d_% s_% p_% t‘tag=‘WHOLE_INC1’;}
3.3 RMAN備份確認 備份確認是保證數據庫是否成功進行了備份,一般可以通過RMAN提供的LIST命令對數據文件、控制文件、日志文件的備份進行確認。
RMAN恢復是將一個失效的數據庫調整返回到有序的工作狀態的過程,根據數據的故障性質及恢復的實際需要,可以對數據庫進行完全恢復或不完全恢復。RMAN通過還原(Restore)與恢復(Recover)這兩個命令對數據庫進行恢復。
4.1 完全恢復 完全恢復是將數據庫恢復到故障發生前的那一刻,在利用RMAN進行完全恢復時,所有在線和歸檔重做日志文件的記錄都會被用來恢復數據庫,從備份中恢復已經損壞的文件,然后應用日志文件將該數據文件恢復到當前的時間點,代碼示例如下:run{allocate channel d1 type disk;restore controlfile;restore database;recover database;}
4.2 不完全恢復 不完全的恢復首先還原在期望恢復的時間點之前進行備份集,并且在這個時間之前的備份是可用的,不完全恢復意味著整個數據庫必須被還原到以前的某個時間點,包括控制文件,有效地執行時間點恢復的技巧在于set命令的設置,代碼示例如下:run{set until time “TO_DATE(‘02/10/2010 12:02:10’,‘MM/DD/YYYY HH24:MI:SS’)”;allocatechanneld1 typedisk; restore database;recover database;alter database open resetlogs}
Oracle數據庫管理員在掌握RMAN備份與恢復原理及常用的命令后,通過制定合理的備份與恢復策略,可以確保數據庫發生故障時能夠及時完全恢復,保障數據庫的安全穩定。
[1]滕永昌.Oracle9i數據庫管理員使用大全[M].北京:清華大學出版社,2004:589-598.
[2]張云帆.Oracle數據庫備份與恢復策略[J].計算機工程,2009,35(15):85-87.
[3]曹美琴.基于RMAN技術的Oracle數據庫備份恢復研究[J].安徽大學學報:自然科學版,2007,32(2):25-28.
1005-619X(2010)11-0980-03
2010-04-17)