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