史斌
摘要:針對Oracle數(shù)據(jù)庫,說明備份與恢復(fù)的重要性,討論了如何定制恰當(dāng)?shù)膫浞莶呗?,以RMAN為例,分別從改變數(shù)據(jù)庫的歸檔模式、創(chuàng)建RMAN用戶并授權(quán),創(chuàng)建恢復(fù)目錄并注冊目標(biāo)數(shù)據(jù)庫,備份與恢復(fù)數(shù)據(jù)庫文件幾個(gè)方面探討RMAN恢復(fù)管理器的使用。
關(guān)鍵詞: Oracle;備份策略; RMAN
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)21-5037-03
數(shù)據(jù)庫備份是數(shù)據(jù)庫恢復(fù)至關(guān)重要的一步,能夠進(jìn)行什么樣的恢復(fù)依賴于有什么樣的備份,備份的好壞直接影響數(shù)據(jù)庫恢復(fù)的精確性和及時(shí)性。
備份和恢復(fù)是兩個(gè)互相聯(lián)系的概念,備份和恢復(fù)的目的是為了保證在各種故障發(fā)生后,數(shù)據(jù)庫中的數(shù)據(jù)都能從錯(cuò)誤狀態(tài)恢復(fù)到某種邏輯一致的狀態(tài)。Oracle提供了物理備份和邏輯備份兩種方式。其中RMAN(Recovery Manager)技術(shù)是DBA常用的備份技術(shù)。
1 RMAN備份特點(diǎn)
RMAN是ORACLE提供的恢復(fù)和備份工具,是隨Oracle服務(wù)器軟件一同安裝的工具軟件,它可以用來備份和恢復(fù)數(shù)據(jù)庫文件、歸檔日志和控制文件,用來執(zhí)行完全或不完全的數(shù)據(jù)庫恢復(fù)。與傳統(tǒng)工具相比,RMAN具有獨(dú)特的優(yōu)勢:跳過未使用的數(shù)據(jù)塊。當(dāng)備份一個(gè)RMAN備份集時(shí),RMAN不會(huì)備份從未被寫入的數(shù)據(jù)塊,而傳統(tǒng)的方式無法獲知那些是未被使用的數(shù)據(jù)塊。RMAN使用Oracle特有的二進(jìn)制壓縮模式,與傳統(tǒng)備份的壓縮方式相比,能夠最大程度地壓縮數(shù)據(jù)塊中的一些典型數(shù)據(jù)。
2定制備份策略
正確的備份策略不僅能保證數(shù)據(jù)庫服務(wù)器高效率高性能的運(yùn)行和使用,還能確?;謴?fù)與備份的有效性和可靠性。
目前,Oracle的備份方法主要有全備份、增量備份和差分備份。全備份(Full Backup)是每次轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫全部數(shù)據(jù),生成所有數(shù)據(jù)的備份。這種備份即占用時(shí)間又不經(jīng)濟(jì),所以除非是小型數(shù)據(jù)庫,一般情況對Oracle數(shù)據(jù)的備份不采用完全備份方式;增量備份(Incremental Backup)只轉(zhuǎn)儲(chǔ)上次轉(zhuǎn)儲(chǔ)后更新過的數(shù)據(jù)。全轉(zhuǎn)儲(chǔ)與增量轉(zhuǎn)儲(chǔ)相比,從恢復(fù)角度看,使用海量轉(zhuǎn)儲(chǔ)全備份得到的后備副本進(jìn)行恢復(fù)往往更方便,但對于大型數(shù)據(jù)庫,事務(wù)處理又十分頻繁,所以增量轉(zhuǎn)儲(chǔ)方式更實(shí)用更有效;差分備份(Differential Backup)融合以上兩種備份的優(yōu)點(diǎn),首先進(jìn)行完全備份,其次在以后的每次備份中只備份每個(gè)數(shù)據(jù)文件較上次完全備份所更新的部分(差分?jǐn)?shù)據(jù)),所以,數(shù)據(jù)文件損壞后,利用該時(shí)間點(diǎn)之前最近一次的完全備份進(jìn)行恢復(fù),然后再使用時(shí)間點(diǎn)A的差分?jǐn)?shù)據(jù)即可完成所有數(shù)據(jù)的恢復(fù)。
在制定Oracle備份策略應(yīng)時(shí)應(yīng)注意根據(jù)不同企業(yè),不同系統(tǒng)的特點(diǎn)定制不同備份策略。選擇完全備份,增量備份,還是差分備份。另外,做好溝通工作,數(shù)據(jù)庫管理員DBA需要使企業(yè)管理人員獲知維護(hù)數(shù)據(jù)庫的可用性的代價(jià),因此首先需評(píng)估恢復(fù)需要的花費(fèi),以及若丟失數(shù)據(jù)給企業(yè)帶來的損失。這一點(diǎn),銀行的數(shù)據(jù)庫要求就極其嚴(yán)格,需要7* 24的可用性,那么備份重要性就高于其它任何工作。其次,對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行重要程度的分類,作為確定備份頻率的依據(jù)。即數(shù)據(jù)庫系統(tǒng)都需全面保護(hù),但要分主次,重要的數(shù)據(jù)要經(jīng)常備份。再次需要考慮數(shù)據(jù)庫變化的情況。對于經(jīng)常進(jìn)行insert,update,delete的表和表結(jié)構(gòu)發(fā)生變化的表,應(yīng)重點(diǎn)對待經(jīng)常備份。對于查詢比較多的表,更重要的工作則是做好查詢優(yōu)化。實(shí)際情況是對大部分的DBA來說,更會(huì)傾向多極備份:1)每半年做一個(gè)數(shù)據(jù)庫的全備份(包括所有.dbf文件);2)每一個(gè)月做一次零級(jí)備份(不包含只讀表空間);3)每個(gè)星期做一次一級(jí)備份;4)每天做一次二級(jí)備份。
3 RMAN應(yīng)用
3.1數(shù)據(jù)庫的備份模式
根據(jù)是否將聯(lián)機(jī)重做日志文件進(jìn)行歸檔,可以將Oracle數(shù)據(jù)庫的日志操作模式分為NOARCHIVELOG(非歸檔)和ARCHIVELOG(歸檔)兩種類型。
當(dāng)建立數(shù)據(jù)庫的時(shí)候,如果不指定日志操作模式,則默認(rèn)的操作模式為 NOARCHIVELOG。NOARCHIVELOG是指不保留重做歷史記錄的日志操作模式,在這種模式下,如果進(jìn)行日志切換,那么在不保留原有重做日志內(nèi)容的情況下,日志組的新內(nèi)容會(huì)直接覆蓋其原有內(nèi)容。ARCHIVELOG則保留重做日志的歷史記錄。
以下語句將數(shù)據(jù)庫從NOARCHIVELOG狀態(tài)轉(zhuǎn)為ARCHIVELOG狀態(tài)SHUTDOWN IMMEDIATE
STARTUP MOUNT /*數(shù)據(jù)庫已裝載,但并沒有打開*/
ALTER DATABASE ARCHIVELOG
ALTER DATABASE OPEN
3.2創(chuàng)建RMAN目錄
1)為目錄創(chuàng)建一個(gè)單獨(dú)的表空間
SQL>alter database open;
SQL> create tablespace rmants datafile c: mants.ora size 20M ;
2)創(chuàng)建RMAN用戶SQL>create user rman identified by rman default tablespace rmants temporary tablespace temp quota unlimited on rmants;
3)給RMAN授予權(quán)限
SQL>Grant connect,recovery_catalog_owner,resource to rman;
4)打開RMAN,連接到恢復(fù)目錄數(shù)據(jù)庫,如圖1。
$>RMAN catalog rman/rman
圖1進(jìn)入RMAN,連接恢復(fù)目錄數(shù)據(jù)庫
5)創(chuàng)建恢復(fù)目錄,如圖2。
RMAN>Create catalog tablespace rmants.
圖2創(chuàng)建RMAN恢復(fù)目錄
恢復(fù)目錄是RMAN在數(shù)據(jù)庫中建立的一種由RMAN自動(dòng)維護(hù)的存儲(chǔ)對象,使用RMAN執(zhí)行備份和恢復(fù)時(shí)RMAN將從目標(biāo)數(shù)據(jù)庫控制文件中獲取數(shù)據(jù)庫結(jié)構(gòu),歸檔日志等信息,它們將被存儲(chǔ)在恢復(fù)目錄中。
3.3注冊目標(biāo)數(shù)據(jù)庫
恢復(fù)目錄創(chuàng)建成功后,需要連接和注冊目標(biāo)數(shù)據(jù)庫,如圖3。目標(biāo)數(shù)據(jù)庫既需要備份、轉(zhuǎn)儲(chǔ)和恢復(fù)操作的數(shù)據(jù)庫,一個(gè)恢復(fù)目錄可以注冊多個(gè)目標(biāo)數(shù)據(jù)庫,注冊目標(biāo)數(shù)據(jù)庫的語句為:
RMAN>connect target sys/oracle RMAN>Register database;
3.4 RMAN使用腳本來備份數(shù)據(jù)庫
RMAN使用腳本來備份數(shù)據(jù)庫經(jīng)常包括:
1)備份整個(gè)數(shù)據(jù)庫;2)備份一個(gè)表空間;3)備份歸檔日志。
該文分別以備份日志文件和數(shù)據(jù)文件為例:
舉例1:備份數(shù)據(jù)文件:
RMAN>
run{
allocate channel c1 type disk;
backup tag tbs_users_read_only format"c: bs_users1%t"
(tablespace users);
release channel c1;}
恢復(fù)數(shù)據(jù)文件:
RMAN>RESTORE TABLESPACE USERS
RMAN>Recover tablespace users。
完成數(shù)據(jù)文件備份與恢復(fù)工作。
舉例2:備份日志文件
RMAN> run{
allocate channel dev1 type disk;
backup archivelog all;
release channel dev1;}
恢復(fù)日志文件
run{
allocate channel dev1 type disk;
restore archivelog all;
release channel dev1;}
RMAN恢復(fù)管理器中常用的命令BACKUP,RESTORE,RECOVER命令。理解恢復(fù)目錄,RMAN可以在沒有恢復(fù)目錄(NOCATA LOG)下運(yùn)行,這個(gè)時(shí)候備份信息保存在控制文件,勢必會(huì)加重控制文件的負(fù)擔(dān),控制文件是一個(gè)較小的二進(jìn)制文件,其中記錄了數(shù)據(jù)庫的物理結(jié)構(gòu),用于打開、存取數(shù)據(jù)庫。Oracle數(shù)據(jù)庫系統(tǒng)在運(yùn)行前要首先轉(zhuǎn)到控制文件。以檢查數(shù)據(jù)庫是否良好,存在控制文件的備份信息是很危險(xiǎn)的,因此建議采用恢復(fù)目錄的方式備份。
4總結(jié)
提高數(shù)據(jù)庫受損后恢復(fù)的可靠性正越來越多地受到人們的關(guān)注,該文根據(jù)個(gè)人在實(shí)際項(xiàng)目開發(fā)過程中的經(jīng)驗(yàn)及恢復(fù)時(shí)的靈活性對Oracle數(shù)據(jù)庫的備份及恢復(fù)進(jìn)行了探討,并提出了典型的備份策略,以RMAN備份為例,從改變數(shù)據(jù)庫的歸檔模式、創(chuàng)建RMAN用戶并授權(quán),創(chuàng)建恢復(fù)目錄并注冊目標(biāo)數(shù)據(jù)庫,備份與恢復(fù)數(shù)據(jù)庫文件幾個(gè)方面探討。
參考文獻(xiàn):
[1] Sarin S.Oracle數(shù)據(jù)庫管理員技術(shù)指南[M].北京:機(jī)械工業(yè)出版社,2001.
[2] Hart M.Oracle Database 10gRMAN備份與恢復(fù)[M].北京:清華大學(xué)出版社,2008.
[3]馬和邦,周建中,趙萍.基于RMAN的Oracle數(shù)據(jù)庫備份與恢復(fù)機(jī)制[J].計(jì)算機(jī)與數(shù)字工程,2008(3).
[4]田光付.企業(yè)如何選擇恰當(dāng)?shù)膫浞莶呗訹N].中國計(jì)算機(jī)報(bào),2008-01-21.