龔瑋瑋 黃建軍 肖英劍
摘要:21世紀(jì)是一個(gè)信息化的時(shí)代,傳統(tǒng)的紙質(zhì)記錄信息已經(jīng)不能滿足我們的需求。Oracle數(shù)據(jù)庫是目前世界上主流的數(shù)據(jù)庫,具有存儲(chǔ)量大、穩(wěn)定性強(qiáng)、靈活性高等特點(diǎn),被廣泛應(yīng)用于國防、航空、醫(yī)療等領(lǐng)域。數(shù)據(jù)庫可能會(huì)因?yàn)樵O(shè)備故障、病毒攻擊、操作系統(tǒng)故障等因素造成數(shù)據(jù)的丟失,如果DBA沒有對(duì)數(shù)據(jù)庫進(jìn)行備份,那么將會(huì)帶來巨大的損失,因此我們必須認(rèn)識(shí)到備份與恢復(fù)的重要性,做到防患未然。本文將對(duì)oracle數(shù)據(jù)庫的備份與恢復(fù)策略展開介紹。
關(guān)鍵詞:Oracle數(shù)據(jù)庫;備份;RMAN
中圖分類號(hào):TP311 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)13-0008-02
大數(shù)據(jù)的時(shí)代,信息化和數(shù)字化也是各行業(yè)企業(yè)的發(fā)展趨勢,因此我們對(duì)數(shù)據(jù)的安全性有了更高的要求,對(duì)數(shù)據(jù)的備份和數(shù)據(jù)的恢復(fù)技術(shù)的重要性更加突出。對(duì)于目前運(yùn)行正常的Oracle數(shù)據(jù)庫來說,雖然發(fā)生故障的可能性很小,但發(fā)生的可能性還是存在,還是存在丟失數(shù)據(jù)的可能性。目前還有很多生產(chǎn)數(shù)據(jù)庫依然沒有備份,一旦當(dāng)災(zāi)難來臨的時(shí)候,就會(huì)因?yàn)闆]有備份或者沒有完善的恢復(fù)流程而手忙腳亂。對(duì)數(shù)據(jù)庫進(jìn)行備份就相當(dāng)于買了保險(xiǎn),這個(gè)保險(xiǎn)可以使DBA在Oracle發(fā)生故障時(shí)胸有成竹。
數(shù)據(jù)庫的物理備份、恢復(fù)和日常的備份、恢復(fù)文檔類似。簡單來說,物理備份數(shù)據(jù)庫就是將文件從一個(gè)地方物理地復(fù)制到另一個(gè)地方,數(shù)據(jù)庫的恢復(fù)就是將損壞的文件從備份中復(fù)制回來。目前較為常用的三種備份方法是熱備份、冷備份、RMAN備份。下面就基于Oracle ?11g數(shù)據(jù)庫的三種常用的備份恢復(fù)策略進(jìn)行探討。
1數(shù)據(jù)庫的備份與恢復(fù)策略的研究
1.1引起Oracle故障的類型
一個(gè)運(yùn)行很正常的數(shù)據(jù)庫可能會(huì)因?yàn)橐恍┮蛩貙?dǎo)致數(shù)據(jù)庫發(fā)生故障,常見的類型故障有:介質(zhì)故障、用戶進(jìn)程故障、實(shí)例故障、用戶錯(cuò)誤故障等,下面將介紹幾種常見故障的類型。
⑴介質(zhì)故障
介質(zhì)故障是導(dǎo)致一個(gè)或者多個(gè)數(shù)據(jù)庫文件(數(shù)據(jù)文件、控制文件或重做日志文件)丟失或損壞的故障,該故障會(huì)導(dǎo)致數(shù)據(jù)庫文件或者磁盤不能讀或者不能寫。
⑵用戶進(jìn)程故障
當(dāng)用戶程序出錯(cuò)而無法訪問Oracle數(shù)據(jù)庫時(shí),就會(huì)發(fā)生用戶進(jìn)程故障。用戶進(jìn)程故障只會(huì)導(dǎo)致當(dāng)前用戶無法操作數(shù)據(jù)庫,但不會(huì)影響其他用戶進(jìn)程,當(dāng)用戶進(jìn)程出現(xiàn)故障時(shí),進(jìn)程監(jiān)控程序(PMON)會(huì)自動(dòng)執(zhí)行故障恢復(fù)。
⑶實(shí)例故障
當(dāng)Oracle數(shù)據(jù)庫實(shí)例由于硬件或軟件問題而無法繼續(xù)運(yùn)行時(shí),就會(huì)發(fā)生實(shí)例故障,硬件問題包括意外斷電,而軟件問題可能是服務(wù)器操作系統(tǒng)崩潰。如果發(fā)生實(shí)例故障,Oracle會(huì)自動(dòng)完成實(shí)例修復(fù)。實(shí)例修復(fù)將數(shù)據(jù)庫恢復(fù)到與故障之前的事務(wù)一致狀態(tài),Oracle會(huì)自動(dòng)回滾未提交的數(shù)據(jù)。
⑷用戶錯(cuò)誤
應(yīng)用程序邏輯錯(cuò)誤或者用戶錯(cuò)誤更新、刪除導(dǎo)致數(shù)據(jù)庫的數(shù)據(jù)更改錯(cuò)誤。
1.2 數(shù)據(jù)庫的備份策略角度分類
Oracle數(shù)據(jù)庫的備份是對(duì)數(shù)據(jù)庫中的數(shù)據(jù)文件、控制文件、在線日志文件等進(jìn)行備份。根據(jù)數(shù)據(jù)庫的備份角度可以分為以下3種。
⑴全備份
數(shù)據(jù)庫的全備份又稱作0級(jí)備份,全備份是備份某一個(gè)時(shí)間點(diǎn)上的所有數(shù)據(jù),這種備份的優(yōu)點(diǎn)是操作簡單、備份較完整,缺點(diǎn)是恢復(fù)的數(shù)據(jù)量相當(dāng)大,存在很多的重復(fù)信息,需要花費(fèi)的時(shí)間和空間比較大。
⑵差異增量備份
差異增量備份是只備份上一次備份以后發(fā)生變化的文件,上一次備份可以是全備份也可以是差異增量備份或者積累增量備份,該備份的優(yōu)點(diǎn)是備份數(shù)據(jù)量小,需要時(shí)間短,節(jié)省空間,缺點(diǎn)是要依賴之前的備份記錄。例如:星期天做了全備份,星期一至星期六則分別備份前一天變化的數(shù)據(jù)文件。
⑶累計(jì)增量備份
累計(jì)增量備份是備份上一次全備份以后發(fā)生變化的文件,這種備份需要備份所有增量備份的數(shù)據(jù),備份消耗的時(shí)間比差異備份時(shí)間長。例如:星期天做了全備份,星期一至星期六則備份自星期天以來發(fā)生變化的數(shù)據(jù)文件。
1.3 數(shù)據(jù)庫備份恢復(fù)原理
(1) 數(shù)據(jù)庫的冷備份及恢復(fù)
數(shù)據(jù)庫的冷備份指的是數(shù)據(jù)庫處于關(guān)閉或者M(jìn)OUNT狀態(tài)下的備份,又稱作脫機(jī)備份。備份文件包括數(shù)據(jù)文件,日志文件和控制文件。
盡管冷備份適用于任何模式下的數(shù)據(jù)庫,但還是建議開啟歸檔模式后進(jìn)行冷備份。當(dāng)數(shù)據(jù)庫發(fā)生災(zāi)難時(shí),只要?dú)w檔日志和在線日志存在,歸檔模式下的冷備份可以做到數(shù)據(jù)不丟失。
如果數(shù)據(jù)庫處于非歸檔模式下的話只能使用冷備份的方式進(jìn)行備份,當(dāng)發(fā)生災(zāi)難的時(shí)候,只要控制文件,歸檔日志文件、在線日志文件沒有損壞,可以將冷備份的數(shù)據(jù)文件和復(fù)制到原目錄中,然后應(yīng)用歸檔日志和在線日志,就可以做到數(shù)據(jù)的不丟失。
(1)數(shù)據(jù)庫的熱備份及恢復(fù)
數(shù)據(jù)庫的熱備份指的是處于open狀態(tài)下利用操作系統(tǒng)命令備份數(shù)據(jù)庫,又稱作聯(lián)機(jī)備份。熱備份常用于7*24小時(shí)不斷運(yùn)行的數(shù)據(jù)庫的備份,該備份需要備份數(shù)據(jù)文件,歸檔日志文件,并且該備份必須要求數(shù)據(jù)庫處于歸檔模式。
由于熱備份是在數(shù)據(jù)庫處于運(yùn)行狀態(tài)下進(jìn)行,備份可能會(huì)碰到分裂塊的問題,所以在數(shù)據(jù)文件頭部通過Begin Backup設(shè)置標(biāo)記位,判斷是否需要在日志文件中保存發(fā)生變化的數(shù)據(jù)塊信息。
熱備份的數(shù)據(jù)庫恢復(fù)是通過操作系統(tǒng)命令將熱備份的數(shù)據(jù)文件復(fù)制到原目錄中,然后應(yīng)用歸檔日志文件,將數(shù)據(jù)庫打開。
(3)使用RMAN備份和恢復(fù)數(shù)據(jù)庫
RMAN可以通過語句實(shí)現(xiàn)數(shù)據(jù)庫、數(shù)據(jù)文件、控制文件等文件的備份,運(yùn)用該方法備份數(shù)據(jù)文件一般要求數(shù)據(jù)庫處于歸檔模式,如果數(shù)據(jù)庫處于非歸檔模式下,則只能在MOUNT狀態(tài)下使用RMAN備份數(shù)據(jù)庫。
RMAN可以對(duì)數(shù)據(jù)文件進(jìn)行全備份,也可以對(duì)增量備份,但是控制文件和日志文件只能進(jìn)行全備份,如果進(jìn)行增量備份,RMAN也會(huì)讀取整個(gè)數(shù)據(jù)文件,但只會(huì)備份上次備份以后發(fā)生變化的那一部分。 RMAN備份可以不備份空白數(shù)據(jù)塊,從而縮短了備份的時(shí)間,也減小了一定的空間。
RMAN備份恢復(fù)具有一些明顯的優(yōu)勢,該備份執(zhí)行期間不需要人工干預(yù),減少了誤操作的機(jī)會(huì),并且RMAN可以有效地將備份和恢復(fù)結(jié)合起來,它可以自動(dòng)生成備份日志和自動(dòng)備份控制文件。但是RMAN也存在一些缺點(diǎn),因?yàn)镽MAN是全自動(dòng)的,所以備份過程是不透明的,RMAN備份的數(shù)據(jù)只有通過RMAN才能恢復(fù),其他恢復(fù)的方法是沒有用的。
2 數(shù)據(jù)庫的備份與恢復(fù)策略的實(shí)現(xiàn)
2.1 熱備份數(shù)據(jù)庫
鎖定數(shù)據(jù)文件頭的SCN值
alter database begin backup;
更改數(shù)據(jù)庫為歸檔模式
alter database archivelog;
將數(shù)據(jù)庫設(shè)置為備份模式
alter tablespace user begin backup;
查看處于備份狀態(tài)的所有文件
select * from v$backup;
備份表空間的數(shù)據(jù)文件
host copy D:\dkir\zhangsan.DBF ?E\lisi;
2.2 熱備份的數(shù)據(jù)庫恢復(fù)
將備份文件恢復(fù)到原目錄中
host copy E:\lisi\zhangsan.BDF ?D:\dkir\zhangsan.BDF;
表空間設(shè)置為聯(lián)機(jī)狀態(tài)
alter tablespace online;
2.3 RMAN備份數(shù)據(jù)庫
數(shù)據(jù)庫的全量備份,該方法不會(huì)備份空白數(shù)據(jù)塊
backup database;
數(shù)據(jù)庫的鏡像備份,該方法產(chǎn)生的備份集大小和表空空間大小相同
Backup as copy database;
表空間的全量備份,不會(huì)備份空白數(shù)據(jù)塊(zhangsan為表空間名)
backup tablespace zhangsan;
備份數(shù)據(jù)文件(5為5號(hào)數(shù)據(jù)文件)
backup datafile 5;
備份控制文件
backup current controlfile;
備份SPFILE參數(shù)文件
backup spfile;
備份歸檔日志文件
Backup ?archivelog all;
2.4 RMAN備份的數(shù)據(jù)庫恢復(fù)
數(shù)據(jù)庫的恢復(fù)
recover database;
表空間的恢復(fù)(zhangsan為表空間名)
recover tablespace zhangsan;
恢復(fù)數(shù)據(jù)文件(5為5號(hào)數(shù)據(jù)文件)
recover datafile 5;
恢復(fù)控制文件
restore controlfile from ‘orac/backup/sns.bpk;
恢復(fù)SPFILE參數(shù)文件
Restore ?spfile to ?‘/oracle/spfile/spfilea.ora from ‘ordata/backup/file.bkp;
恢復(fù)歸檔日志文件(恢復(fù)56號(hào)到58號(hào)歸檔日志)
Restore ?archivelog from logseq ?56 until logseq 58;
3 結(jié)語
本文首先介紹了Oracle備份恢復(fù)在日常工作生活中的重要性,然后介紹了引起Oracle故障的幾種常見類型,再介紹了三種常用的Oracle數(shù)據(jù)庫備份恢復(fù)策略的原理,最后介紹了三種備份恢復(fù)策略的具體實(shí)現(xiàn)。數(shù)據(jù)庫DBA應(yīng)該透徹理解備份恢復(fù)的原理,然后根據(jù)具體問題選擇相應(yīng)的策略,從而保證數(shù)據(jù)的安全性。
參考文獻(xiàn):
[1] 林樹澤,盧芬,柳冬青.Oracle DBA 高可用、備份恢復(fù)與性能優(yōu)化[M].清華大學(xué)出版社,2015.
[2][美]Thomas Kyte Darl Kuhn.Oracle編程藝術(shù)-深入理解數(shù)據(jù)庫體系結(jié)構(gòu)(第3版) [M].人民郵電出版社,2016.
[3][美]塔里克法魯克(Tariq Farooq)邁克阿爾特(MikeAult Paulo Portugal).Oracle數(shù)據(jù)庫問題解決方案和故障排除手冊(cè)[M].電子工業(yè)出版社,2018.
[4]楊少敏,王紅敏.Oracle 11g數(shù)據(jù)庫應(yīng)用簡明教程[M]. 清華大學(xué)出版社,2010.
[5] 劉憲軍.Oracle備份、恢復(fù)與遷移[M].機(jī)械工業(yè)出版社,2017.
【通聯(lián)編輯:光文玲】