韓勇鵬



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