徐 曼
(哈爾濱鐵路局 信息技術所,哈爾濱 150001)
Oracle數(shù)據(jù)庫的備份與恢復
徐 曼
(哈爾濱鐵路局 信息技術所,哈爾濱 150001)
介紹Oracle數(shù)據(jù)庫常用的3種備份方法,即:RMAN備份、邏輯備份和冷備份。RMAN備份以數(shù)據(jù)庫文件存儲,分別以采用文件系統(tǒng)方式和ASM自動磁盤管理方式的兩個項目為例,介紹RMAN備份的不同寫法。邏輯備份說明了expdp和impdp數(shù)據(jù)泵導入導出技術的使用和相關的角色權限。最后闡述了冷備份的優(yōu)缺點。這3種備份方法在實際工作中應用廣泛,給Oracle數(shù)據(jù)庫的穩(wěn)定運行提供了有力的保障。
數(shù)據(jù)庫;備份;恢復
隨著計算機技術的普及,數(shù)據(jù)庫技術得到了廣泛的應用,各種數(shù)據(jù)的安全性和重要程度也越來越被人們所重視。作為信息安全的一個重要內(nèi)容,備份技術應運而生,系統(tǒng)備份如RAID技術,雙機熱備,集群技術等都是提高了系統(tǒng)的備份和高可用性,同時也一定程度地解決了數(shù)據(jù)庫的備份問題,以幾個項目為例,詳細介紹Oracle數(shù)據(jù)庫的備份與恢復。
RMAN是指Oracle提供的實用程序Recovery Manager,即恢復管理器。RMAN是一個智能和自動化的備份恢復工具,使用RMAN可以輕松實現(xiàn)數(shù)據(jù)庫的所有備份任務如備份整個數(shù)據(jù)庫,備份特定的表空間或者數(shù)據(jù)文件,增量備份,備份文件的差錯檢驗等。RMAN的架構如圖1所示[1]。

圖1 RMAN結構組成
RMAN備份根據(jù)數(shù)據(jù)庫文件存儲方式的不同有不同的寫法,下面以鐵路貨運計劃系統(tǒng)和哈爾濱鐵路局電子公文系統(tǒng)為例,分別介紹數(shù)據(jù)庫文件存儲采用文件系統(tǒng)方式和ASM自動磁盤管理方式的不同的RMAN備份寫法。
鐵路貨運計劃系統(tǒng)采用小型機雙機集群,數(shù)據(jù)庫為雙節(jié)點oracle9i RAC。在2號小型機上部署crontab定時任務,定時啟用數(shù)據(jù)庫備份腳本,數(shù)據(jù)庫開啟歸檔模式。數(shù)據(jù)庫數(shù)據(jù)文件備份腳本如下:

控制文件和歸檔日志文件備份腳本如下:


哈爾濱鐵路局電子公文系統(tǒng)采用小型機雙機集群,數(shù)據(jù)庫為Oracle11g 雙節(jié)點并發(fā) RAC,ASM自動存儲管理,數(shù)據(jù)庫開啟歸檔模式。在2號小型機上部署crontab定時任務,定時啟用數(shù)據(jù)庫備份腳本。數(shù)據(jù)庫數(shù)據(jù)文件備份腳本如下:

控制文件和歸檔日志文件備份腳本如下:


RMAN備份的文件自動保存在恢復目錄下,實現(xiàn)數(shù)據(jù)恢復操作時,指令簡潔,RMAN自動尋找需要的文件實現(xiàn)數(shù)據(jù)恢復。數(shù)據(jù)庫在歸檔模式和非歸檔模式下均可進行恢復,可進行完全恢復,也可以進行控制文件、數(shù)據(jù)文件和重做日志文件的單獨恢復。
邏輯備份是指使用Oracle提供的數(shù)據(jù)遷移工具如EXPDP,EXP等,導出數(shù)據(jù)庫對象的邏輯結構以及數(shù)據(jù),并存入一個二進制轉(zhuǎn)儲文件(.dmp文件)中。EXP/IMP是Oracle比較傳統(tǒng)地數(shù)據(jù)庫邏輯備份工具實現(xiàn)全庫或表空間的邏輯備份,但是它不支持用戶的交互模式,即在備份過程中無法控制或切換備份進程,而Oracle11g及以上版本提供的數(shù)據(jù)泵技術可以很好的實現(xiàn)用戶交互,支持網(wǎng)絡操作以及重啟失敗的備份作業(yè),所以Oracle建議使用數(shù)據(jù)泵技術來代替EXP和IMP實用程序。
數(shù)據(jù)泵工具可以從命令行實用程序expdp和impdp中調(diào)用,或者通過PL/SQL程序包DBMS_ DATAPUMP調(diào)用。
數(shù)據(jù)泵技術的特點:
(1)導入/導出的所有工作都由數(shù)據(jù)庫實例完成。
(2)可以使用DBMS_DATAPUMP PL/SQL API建立、檢測和調(diào)整數(shù)據(jù)泵任務。
(3)可以對IMPDP/EXPDP導入/導出任務進行重新啟動(類似于網(wǎng)絡下載的斷點續(xù)傳)
2.1 數(shù)據(jù)泵導出數(shù)據(jù)
使用數(shù)據(jù)泵導出時,如果不是直接導出到遠程數(shù)據(jù)庫中,應首先創(chuàng)建目錄對象。
(1)創(chuàng)建目錄對象的代碼
Windows環(huán)境下:

Unix環(huán)境下:

(2)為目錄對象授權
對具體的用戶授予權限:

將目錄對象設置為公共讀寫:

在dba_directories視圖中可查看常見的目錄對象:

expdp的導出方式如表1所示。

表1 expdp的導出方式
2.1.1 數(shù)據(jù)庫導出方式
完整的數(shù)據(jù)庫導出要求用戶擁有EXP_FULL_ DATABASE角色權限。
示例:

2.1.2 用戶模式導出方式
示例:

可以省略full=y參數(shù),使用schemas=schema_ list參數(shù)來表示要導出的用戶列表,如果有多個用戶,則用戶之間用逗號分隔。要想導出多個用戶,必須具備EXP_FULL_DATABASE角色權限。
2.1.3 表導出方式
示例:

主要參數(shù):
nologfile=y:表示不會將操作日志寫入磁盤,不過仍然會在終端顯示出來。
content=data_only:表示只導出表中的數(shù)據(jù)而不導出元數(shù)據(jù);如果是content=medata_only,則表示只導出元數(shù)據(jù)而不導出表中的數(shù)據(jù)。如果不寫這個參數(shù),則二者全都導出。
2.1.4 表空間導出
示例:
expdp system/passwd directory=pbdir dumpfile =person_ts.dmp tablespaces=person
導出person表空間所有數(shù)據(jù)庫對象及相依對象
主要參數(shù):
tablespaces=tablespace_list:指定要導出表空間。
要求數(shù)據(jù)庫用戶擁有EXP_FULL_DATABASE角色權限。
2.2 數(shù)據(jù)泵導入數(shù)據(jù)
導入和導出的數(shù)據(jù)庫對象可以是同一個數(shù)據(jù)庫,也可以是不同的數(shù)據(jù)庫。
數(shù)據(jù)泵導入程序impdp可以按照如下方式進行,如表2所示。

表2 impdp的導入模式
導入導出方式匹配如表3所示。
如果導入源是一個替代導出文件集的有效數(shù)據(jù)庫或者要求EXP_FULL_DATABASE角色的導出會話,則需要用戶具有IMP_FULL_DATABASE角色權限。

表3 數(shù)據(jù)泵導入導出方式比較
讀取導出文件pb.dmp,并提取所有的DDL,將其放入到pb文件中。(不對操作日志進行寫入磁盤的操作)

冷備份發(fā)生在數(shù)據(jù)庫已經(jīng)正常關閉的情況下,當正常關閉時會提供給我們一個完整的數(shù)據(jù)庫。冷備份是將關鍵性文件拷貝到另外的位置的一種說法。對于備份Oracle信息而言,冷備份是最快和最安全的方法。
冷備份的優(yōu)點是:
(1)是非常快速的備份方法(只需拷文件);
(2)容易歸檔(簡單拷貝即可);
(3)容易恢復到某個時間點上(只需將文件再拷貝回去);
(4)能與歸檔方法相結合,做數(shù)據(jù)庫“最佳狀態(tài)”的恢復;
(5)低度維護,高度安全。
但冷備份也有如下不足:
(1)單獨使用時,只能提供到“某一時間點上”的恢復。
(2)再實施備份的全過程中,數(shù)據(jù)庫必須要做備份而不能做其他工作。也就是說,在冷備份過程中,數(shù)據(jù)庫必須是關閉狀態(tài)。
(3)若磁盤空間有限,只能拷貝到磁帶等其他外部存儲設備上,速度會很慢。
(4)不能按表或按用戶恢復。
如果可能的話(主要看效率),應將信息備份到磁盤上,然后啟動數(shù)據(jù)庫(使用戶可以工作)并將備份的信息拷貝到磁帶上(拷貝的同時,數(shù)據(jù)庫也可以工作)。冷備份中必須拷貝的文件包括: 所有數(shù)據(jù)文件 、所有控制文件 、所有聯(lián)機REDO LOG文件 和Init.ora文件(可選) 。

本文以實際項目為例,詳細介紹了Oracle數(shù)據(jù)庫的3種常用備份與恢復的方法,RMAN備份與恢復、邏輯備份即數(shù)據(jù)泵導入導出技術和冷備份,以上3種備份方法在實際工作中應用廣泛,給Oracle數(shù)據(jù)庫的穩(wěn)定運行提供了有力的保障。
[1]林樹澤 ,歷鐵帥, 何會軍.Oracle數(shù)據(jù)庫管理之道[M].北京:清華大學出版社 ,2012.
[2]劉 偉.一種Oracle數(shù)據(jù)庫異常遷移現(xiàn)象的解決方法[J].鐵路計算機應用,2012,21(18).
[3]徐 卓.關于Oracle數(shù)據(jù)庫設計、開發(fā)、應用的探索[J].鐵路計算機應用, 2014,23(9).
責任編輯 徐侃春
U29∶TP39
A
2015-08-27
徐 曼,高級工程師。
1005-8451(2016)03-0046-04