徐 曼
(哈爾濱鐵路局 信息技術(shù)所,哈爾濱 150001)
Oracle數(shù)據(jù)庫(kù)的備份與恢復(fù)
徐 曼
(哈爾濱鐵路局 信息技術(shù)所,哈爾濱 150001)
介紹Oracle數(shù)據(jù)庫(kù)常用的3種備份方法,即:RMAN備份、邏輯備份和冷備份。RMAN備份以數(shù)據(jù)庫(kù)文件存儲(chǔ),分別以采用文件系統(tǒng)方式和ASM自動(dòng)磁盤(pán)管理方式的兩個(gè)項(xiàng)目為例,介紹RMAN備份的不同寫(xiě)法。邏輯備份說(shuō)明了expdp和impdp數(shù)據(jù)泵導(dǎo)入導(dǎo)出技術(shù)的使用和相關(guān)的角色權(quán)限。最后闡述了冷備份的優(yōu)缺點(diǎn)。這3種備份方法在實(shí)際工作中應(yīng)用廣泛,給Oracle數(shù)據(jù)庫(kù)的穩(wěn)定運(yùn)行提供了有力的保障。
數(shù)據(jù)庫(kù);備份;恢復(fù)
隨著計(jì)算機(jī)技術(shù)的普及,數(shù)據(jù)庫(kù)技術(shù)得到了廣泛的應(yīng)用,各種數(shù)據(jù)的安全性和重要程度也越來(lái)越被人們所重視。作為信息安全的一個(gè)重要內(nèi)容,備份技術(shù)應(yīng)運(yùn)而生,系統(tǒng)備份如RAID技術(shù),雙機(jī)熱備,集群技術(shù)等都是提高了系統(tǒng)的備份和高可用性,同時(shí)也一定程度地解決了數(shù)據(jù)庫(kù)的備份問(wèn)題,以幾個(gè)項(xiàng)目為例,詳細(xì)介紹Oracle數(shù)據(jù)庫(kù)的備份與恢復(fù)。
RMAN是指Oracle提供的實(shí)用程序Recovery Manager,即恢復(fù)管理器。RMAN是一個(gè)智能和自動(dòng)化的備份恢復(fù)工具,使用RMAN可以輕松實(shí)現(xiàn)數(shù)據(jù)庫(kù)的所有備份任務(wù)如備份整個(gè)數(shù)據(jù)庫(kù),備份特定的表空間或者數(shù)據(jù)文件,增量備份,備份文件的差錯(cuò)檢驗(yàn)等。RMAN的架構(gòu)如圖1所示[1]。
圖1 RMAN結(jié)構(gòu)組成
RMAN備份根據(jù)數(shù)據(jù)庫(kù)文件存儲(chǔ)方式的不同有不同的寫(xiě)法,下面以鐵路貨運(yùn)計(jì)劃系統(tǒng)和哈爾濱鐵路局電子公文系統(tǒng)為例,分別介紹數(shù)據(jù)庫(kù)文件存儲(chǔ)采用文件系統(tǒng)方式和ASM自動(dòng)磁盤(pán)管理方式的不同的RMAN備份寫(xiě)法。
鐵路貨運(yùn)計(jì)劃系統(tǒng)采用小型機(jī)雙機(jī)集群,數(shù)據(jù)庫(kù)為雙節(jié)點(diǎn)oracle9i RAC。在2號(hào)小型機(jī)上部署crontab定時(shí)任務(wù),定時(shí)啟用數(shù)據(jù)庫(kù)備份腳本,數(shù)據(jù)庫(kù)開(kāi)啟歸檔模式。數(shù)據(jù)庫(kù)數(shù)據(jù)文件備份腳本如下:
控制文件和歸檔日志文件備份腳本如下:
哈爾濱鐵路局電子公文系統(tǒng)采用小型機(jī)雙機(jī)集群,數(shù)據(jù)庫(kù)為Oracle11g 雙節(jié)點(diǎn)并發(fā) RAC,ASM自動(dòng)存儲(chǔ)管理,數(shù)據(jù)庫(kù)開(kāi)啟歸檔模式。在2號(hào)小型機(jī)上部署crontab定時(shí)任務(wù),定時(shí)啟用數(shù)據(jù)庫(kù)備份腳本。數(shù)據(jù)庫(kù)數(shù)據(jù)文件備份腳本如下:
控制文件和歸檔日志文件備份腳本如下:
RMAN備份的文件自動(dòng)保存在恢復(fù)目錄下,實(shí)現(xiàn)數(shù)據(jù)恢復(fù)操作時(shí),指令簡(jiǎn)潔,RMAN自動(dòng)尋找需要的文件實(shí)現(xiàn)數(shù)據(jù)恢復(fù)。數(shù)據(jù)庫(kù)在歸檔模式和非歸檔模式下均可進(jìn)行恢復(fù),可進(jìn)行完全恢復(fù),也可以進(jìn)行控制文件、數(shù)據(jù)文件和重做日志文件的單獨(dú)恢復(fù)。
邏輯備份是指使用Oracle提供的數(shù)據(jù)遷移工具如EXPDP,EXP等,導(dǎo)出數(shù)據(jù)庫(kù)對(duì)象的邏輯結(jié)構(gòu)以及數(shù)據(jù),并存入一個(gè)二進(jìn)制轉(zhuǎn)儲(chǔ)文件(.dmp文件)中。EXP/IMP是Oracle比較傳統(tǒng)地?cái)?shù)據(jù)庫(kù)邏輯備份工具實(shí)現(xiàn)全庫(kù)或表空間的邏輯備份,但是它不支持用戶的交互模式,即在備份過(guò)程中無(wú)法控制或切換備份進(jìn)程,而Oracle11g及以上版本提供的數(shù)據(jù)泵技術(shù)可以很好的實(shí)現(xiàn)用戶交互,支持網(wǎng)絡(luò)操作以及重啟失敗的備份作業(yè),所以O(shè)racle建議使用數(shù)據(jù)泵技術(shù)來(lái)代替EXP和IMP實(shí)用程序。
數(shù)據(jù)泵工具可以從命令行實(shí)用程序expdp和impdp中調(diào)用,或者通過(guò)PL/SQL程序包DBMS_ DATAPUMP調(diào)用。
數(shù)據(jù)泵技術(shù)的特點(diǎn):
(1)導(dǎo)入/導(dǎo)出的所有工作都由數(shù)據(jù)庫(kù)實(shí)例完成。
(2)可以使用DBMS_DATAPUMP PL/SQL API建立、檢測(cè)和調(diào)整數(shù)據(jù)泵任務(wù)。
(3)可以對(duì)IMPDP/EXPDP導(dǎo)入/導(dǎo)出任務(wù)進(jìn)行重新啟動(dòng)(類似于網(wǎng)絡(luò)下載的斷點(diǎn)續(xù)傳)
2.1 數(shù)據(jù)泵導(dǎo)出數(shù)據(jù)
使用數(shù)據(jù)泵導(dǎo)出時(shí),如果不是直接導(dǎo)出到遠(yuǎn)程數(shù)據(jù)庫(kù)中,應(yīng)首先創(chuàng)建目錄對(duì)象。
(1)創(chuàng)建目錄對(duì)象的代碼
Windows環(huán)境下:
Unix環(huán)境下:
(2)為目錄對(duì)象授權(quán)
對(duì)具體的用戶授予權(quán)限:
將目錄對(duì)象設(shè)置為公共讀寫(xiě):
在dba_directories視圖中可查看常見(jiàn)的目錄對(duì)象:
expdp的導(dǎo)出方式如表1所示。
表1 expdp的導(dǎo)出方式
2.1.1 數(shù)據(jù)庫(kù)導(dǎo)出方式
完整的數(shù)據(jù)庫(kù)導(dǎo)出要求用戶擁有EXP_FULL_ DATABASE角色權(quán)限。
示例:
2.1.2 用戶模式導(dǎo)出方式
示例:
可以省略full=y參數(shù),使用schemas=schema_ list參數(shù)來(lái)表示要導(dǎo)出的用戶列表,如果有多個(gè)用戶,則用戶之間用逗號(hào)分隔。要想導(dǎo)出多個(gè)用戶,必須具備EXP_FULL_DATABASE角色權(quán)限。
2.1.3 表導(dǎo)出方式
示例:
主要參數(shù):
nologfile=y:表示不會(huì)將操作日志寫(xiě)入磁盤(pán),不過(guò)仍然會(huì)在終端顯示出來(lái)。
content=data_only:表示只導(dǎo)出表中的數(shù)據(jù)而不導(dǎo)出元數(shù)據(jù);如果是content=medata_only,則表示只導(dǎo)出元數(shù)據(jù)而不導(dǎo)出表中的數(shù)據(jù)。如果不寫(xiě)這個(gè)參數(shù),則二者全都導(dǎo)出。
2.1.4 表空間導(dǎo)出
示例:
expdp system/passwd directory=pbdir dumpfile =person_ts.dmp tablespaces=person
導(dǎo)出person表空間所有數(shù)據(jù)庫(kù)對(duì)象及相依對(duì)象
主要參數(shù):
tablespaces=tablespace_list:指定要導(dǎo)出表空間。
要求數(shù)據(jù)庫(kù)用戶擁有EXP_FULL_DATABASE角色權(quán)限。
2.2 數(shù)據(jù)泵導(dǎo)入數(shù)據(jù)
導(dǎo)入和導(dǎo)出的數(shù)據(jù)庫(kù)對(duì)象可以是同一個(gè)數(shù)據(jù)庫(kù),也可以是不同的數(shù)據(jù)庫(kù)。
數(shù)據(jù)泵導(dǎo)入程序impdp可以按照如下方式進(jìn)行,如表2所示。
表2 impdp的導(dǎo)入模式
導(dǎo)入導(dǎo)出方式匹配如表3所示。
如果導(dǎo)入源是一個(gè)替代導(dǎo)出文件集的有效數(shù)據(jù)庫(kù)或者要求EXP_FULL_DATABASE角色的導(dǎo)出會(huì)話,則需要用戶具有IMP_FULL_DATABASE角色權(quán)限。
表3 數(shù)據(jù)泵導(dǎo)入導(dǎo)出方式比較
讀取導(dǎo)出文件pb.dmp,并提取所有的DDL,將其放入到pb文件中。(不對(duì)操作日志進(jìn)行寫(xiě)入磁盤(pán)的操作)
冷備份發(fā)生在數(shù)據(jù)庫(kù)已經(jīng)正常關(guān)閉的情況下,當(dāng)正常關(guān)閉時(shí)會(huì)提供給我們一個(gè)完整的數(shù)據(jù)庫(kù)。冷備份是將關(guān)鍵性文件拷貝到另外的位置的一種說(shuō)法。對(duì)于備份Oracle信息而言,冷備份是最快和最安全的方法。
冷備份的優(yōu)點(diǎn)是:
(1)是非常快速的備份方法(只需拷文件);
(2)容易歸檔(簡(jiǎn)單拷貝即可);
(3)容易恢復(fù)到某個(gè)時(shí)間點(diǎn)上(只需將文件再拷貝回去);
(4)能與歸檔方法相結(jié)合,做數(shù)據(jù)庫(kù)“最佳狀態(tài)”的恢復(fù);
(5)低度維護(hù),高度安全。
但冷備份也有如下不足:
(1)單獨(dú)使用時(shí),只能提供到“某一時(shí)間點(diǎn)上”的恢復(fù)。
(2)再實(shí)施備份的全過(guò)程中,數(shù)據(jù)庫(kù)必須要做備份而不能做其他工作。也就是說(shuō),在冷備份過(guò)程中,數(shù)據(jù)庫(kù)必須是關(guān)閉狀態(tài)。
(3)若磁盤(pán)空間有限,只能拷貝到磁帶等其他外部存儲(chǔ)設(shè)備上,速度會(huì)很慢。
(4)不能按表或按用戶恢復(fù)。
如果可能的話(主要看效率),應(yīng)將信息備份到磁盤(pán)上,然后啟動(dòng)數(shù)據(jù)庫(kù)(使用戶可以工作)并將備份的信息拷貝到磁帶上(拷貝的同時(shí),數(shù)據(jù)庫(kù)也可以工作)。冷備份中必須拷貝的文件包括: 所有數(shù)據(jù)文件 、所有控制文件 、所有聯(lián)機(jī)REDO LOG文件 和Init.ora文件(可選) 。
本文以實(shí)際項(xiàng)目為例,詳細(xì)介紹了Oracle數(shù)據(jù)庫(kù)的3種常用備份與恢復(fù)的方法,RMAN備份與恢復(fù)、邏輯備份即數(shù)據(jù)泵導(dǎo)入導(dǎo)出技術(shù)和冷備份,以上3種備份方法在實(shí)際工作中應(yīng)用廣泛,給Oracle數(shù)據(jù)庫(kù)的穩(wěn)定運(yùn)行提供了有力的保障。
[1]林樹(shù)澤 ,歷鐵帥, 何會(huì)軍.Oracle數(shù)據(jù)庫(kù)管理之道[M].北京:清華大學(xué)出版社 ,2012.
[2]劉 偉.一種Oracle數(shù)據(jù)庫(kù)異常遷移現(xiàn)象的解決方法[J].鐵路計(jì)算機(jī)應(yīng)用,2012,21(18).
[3]徐 卓.關(guān)于Oracle數(shù)據(jù)庫(kù)設(shè)計(jì)、開(kāi)發(fā)、應(yīng)用的探索[J].鐵路計(jì)算機(jī)應(yīng)用, 2014,23(9).
責(zé)任編輯 徐侃春
U29∶TP39
A
2015-08-27
徐 曼,高級(jí)工程師。
1005-8451(2016)03-0046-04