韓勇鵬
摘? 要: 數(shù)據(jù)備份與恢復是保障數(shù)據(jù)庫安全運行和數(shù)據(jù)庫管理員必須掌握的的重要技術。在Oracle數(shù)據(jù)庫中,基于RMAN的兩種增量備份方式是差異增量備份和累積增量備份。介紹了差異增量備份與累積增量備份技術的概況,分析了兩種備份方式的優(yōu)缺點,闡述了累積增量備份及數(shù)據(jù)恢復的實現(xiàn)過程,以期更好地保證數(shù)據(jù)的安全性。
關鍵詞: RMAN備份; 累積增量備份; 差異增量備份; 備份與恢復
中圖分類號:TP392? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2019)04-56-04
Abstract: The backup and recovery are an important technology of database running, and the database administrator must master them. There are two kind of incremental backups for Oracle database, the differential and cumulative backup. This paper introduces the technologies of two incremental backups, analyses the advantages and disadvantages of them, and elaborates the realizing process of database backup and recovery with cumulative backup, in order to better ensure the security of data.
Key words: RMAN backup; cumulative backup; differential backup; backup and recovery
0 引言
數(shù)據(jù)備份與恢復是保障數(shù)據(jù)庫安全運行和數(shù)據(jù)庫管理員必須掌握的重要技術。盡管我們通過各種措施來保證數(shù)據(jù)庫的安全,但仍然有許多不可預知、不可避免的安全隱患,如服務器硬件損壞、系統(tǒng)軟件漏洞、網(wǎng)絡傳輸出現(xiàn)故障和人為的破壞等等。因此,數(shù)據(jù)庫管理員應對重要數(shù)據(jù)做好備份,在系統(tǒng)發(fā)生故障時,利用存儲介質(zhì)上的備份集,恢復數(shù)據(jù)到正常狀態(tài),使數(shù)據(jù)保持一致和完整。基于此,本文就oracle的rman增量備份及還原進行探討。
1 rman技術概述
rman是oracle提供的備份、還原、恢復的數(shù)據(jù)庫工具。rman可以實現(xiàn)數(shù)據(jù)文件datafile、控制文件controlfile以及歸檔日志文件archivelog、數(shù)據(jù)庫服務器參數(shù)文件spfile的備份還原,同時也可以執(zhí)行完全或不完全的數(shù)據(jù)庫恢復。rman主要由可執(zhí)行文件和recover.bsq文件兩部分組成。recover.bsq文件實際上就是一個庫文件,是整個備份還原恢復的中樞。 所以說rman只是一個命令解釋器,主要是協(xié)調(diào)。其協(xié)調(diào)解釋過程如圖1所示。
2 rman的差異增量備份和累積增量備份
Rman的最大特點是支持增量備份。增量備份只備份變化的數(shù)據(jù),大大提高了備份和還原的效率。增量備份分為差異增量備份和累積增量備份,兩者都是在0級的全備份基礎上實現(xiàn)的[1]。
累積增量備份(Cumulative)是備份上一級別或更低級別所有變化的數(shù)據(jù)塊。即累積增量備份會備份那些從0級備份點到現(xiàn)在的所有改動,當使用增量備份還原,恢復數(shù)據(jù)時,只有最近的增量備份才會被使用。示例如圖2所示[2]。
也就是說,差異增量備份只備份當天改動的數(shù)據(jù)塊。之前只進行過0級備份時,差異增量備份只會備份相對0級有改動的數(shù)據(jù)塊,如前面已經(jīng)有過1級備份時,差異增量備份只會備份相對最近的1級備份到現(xiàn)在有改動塊的數(shù)據(jù)塊。如果要使用差異增量備份進行數(shù)據(jù)還原、恢復時,所有1級差異增量備份集都需要被應用。示例如圖3所示。
差異增量備份與累積增量備份相比,主要是空間和資源上的節(jié)省,但是必須要保證1級別的可用性,保證不因為某個1級別的失效而導致數(shù)據(jù)庫不能還原、恢復到失敗點。相反的,累積增量備份相對于差異增量備份更安全,因為其本身的備份就具有變化數(shù)據(jù)塊的重復性,只需要保證最近一次1級別備份可用就可以還原、恢復到失敗點了,而不是所有1級別備份都可用。雖然累積增量備份需要更多的磁盤空間,但是卻免去了時間上的考慮,因此,我們在磁盤空間允許的情況下,可以考慮優(yōu)先使用累積增量備份。
3 用rman實現(xiàn)累積增量備份
3.1 備份環(huán)境查看及設置
首先,確定oracle是否處于歸檔模式。sqlplus下執(zhí)行archive log list,以檢查是否是歸檔模式。因為在歸檔模式下,系統(tǒng)服務不會因為備份操作而停止運行,還原、恢復時也可以將數(shù)據(jù)恢復到數(shù)據(jù)庫管理員需要的任意一個時刻,可以保證數(shù)據(jù)的完整性和一致性。
其次,查看快閃恢復區(qū)的參數(shù)信息??扉W恢復區(qū)保存了rman備份的各個備份集,包括數(shù)據(jù)文件、增量備份、控制文件以及歸檔日志等等。sqlplus下執(zhí)行show parameter db_recovery_file_dest;查看快閃恢復區(qū)的位置及它的最大容量。由于備份集的不斷增大,為了防止磁盤空間不足,導致數(shù)據(jù)備份失敗,因此,我們可以根據(jù)實際情況動態(tài)地調(diào)整該容量的大小。
第三,查看rman備份環(huán)境參數(shù),并根據(jù)需要修改部分參數(shù)。在服務器端執(zhí)行rman target/進入oracle數(shù)據(jù)庫的rman環(huán)境,執(zhí)行show all命令,查看rman備份默認的配置參數(shù)。默認情況備份數(shù)據(jù)庫的數(shù)據(jù)時控制文件是不自動備份的,但是沒有控制文件和初始化參數(shù)文件數(shù)據(jù)庫將不能正常裝載、打開,所以最好是每次備份時都能自動備份控制文件和初始化參數(shù)文件。在rman環(huán)境下執(zhí)行configure controlfileautobackup on修改配置參數(shù)后,RMAN做任何備份操作,都會自動備份控制文件controlfile和初始化參數(shù)文件spfile[3]。
3.2 rman累積增量備份
增量備份是分等級的,最初為0到4級,級別從0開始,一級一級遞增,不過從oracle10開始,級別就只有0級和1級了。實際執(zhí)行增量備份操作時,仍然可以指定多個級別,最大可支持4級的增量備份。0級增量備份是1級別增量備份的基礎,0級備份其實就是一個完全備份,所不同的是0級備份可以作為1級別增量備份的基礎,而普通的完全備份是不能的。從1級別執(zhí)行差異備份,即相對0級備份后有變化的數(shù)據(jù)進行備份。
4 rman累積增量的數(shù)據(jù)恢復
備份的目的是為了在數(shù)據(jù)出現(xiàn)問題的時候能夠安全恢復,rman備份結(jié)合數(shù)據(jù)庫的故障性質(zhì),提供了多種不同的恢復模式。
4.1 完全恢復數(shù)據(jù)文件
進行數(shù)據(jù)文件的完全恢復,前提是數(shù)據(jù)庫的初始化spfile文件、控制文件、重做日志文件、歸檔日志備份都可以正常使用。
4.2 丟失spfile的恢復
數(shù)據(jù)庫啟動會經(jīng)過三個階段,分為實例啟動(NOMOUNT),數(shù)據(jù)庫裝載(mount)和數(shù)據(jù)庫打開(open)。第一階段NOMOUNT使用的就是Spfie服務器參數(shù)文件,系統(tǒng)依據(jù)Spfie文件找到實例信息及控制文件等信息,以便裝載數(shù)據(jù)庫。一旦spfile文件丟失或損壞,將導致實例不能正常啟動。因此,spfie文件的還原恢復很重要,還原恢復的腳本命令如下:
4.3 丟失控制文件的恢復
數(shù)據(jù)庫實例和和后臺進程啟動成功后,將會從控制文件中讀取各種參數(shù)信息,包括數(shù)據(jù)文件和日志文件的位置等等。因此,當控制文件發(fā)生故障時,數(shù)據(jù)庫則不能啟動到MOUNT狀態(tài)。因此,我們要在執(zhí)行恢復時需要在NOMOUNT階段。命令如下[4]:
5 結(jié)束語
Oracle的rman備份與恢復相比于傳統(tǒng)的手工操作、數(shù)據(jù)泵等方式,提供了不同的備份及恢復方式,適用范圍更廣、備份更可靠。而rman的累積增量備份,雖然占用磁盤空間比較大,但是可以最大范圍內(nèi)恢復原有數(shù)據(jù),可以不用考慮每個level1包的可用性,建議在磁盤空間允許的情況下使用rman累積增量備份,以提高工作質(zhì)量和效率。
參考文獻(References):
[1] 曹美琴.基于RMAN技術的ORACLE數(shù)據(jù)庫備份恢復研究[J].安徽大學學報(自然科學版),2007.3:25-28
[2] 彭建明.使用RMAN實現(xiàn)ORACLE數(shù)據(jù)庫的增量備份[J].醫(yī)學信息學,2007.11:1912-1914
[3] 林樹澤等.Oracle 11g R2DBA操作指南[M].清華大學出版社,2013.
[4] 王利.ORACLE數(shù)據(jù)庫高可用性的研究與實現(xiàn)[D].華南理工大學,2014.