■ 烏魯木齊 孫湘蓉
編者按:Oracle數(shù)據(jù)泵是Oracle提供的更新、更快、更靈活的數(shù)據(jù)導(dǎo)入、導(dǎo)出工具。本文通過(guò)對(duì)Oracle數(shù)據(jù)泵與原有IMP/EXP導(dǎo)入導(dǎo)出功能使用對(duì)比分析,著重討論了基于Oracle數(shù)據(jù)泵的Oracle數(shù)據(jù)導(dǎo)入導(dǎo)出方法。
Oracle備份方式主要分為邏輯備份和物理備份。Oracle熱備份與冷備份都屬于物理備份。用數(shù)據(jù)泵導(dǎo)出數(shù)據(jù)備份方式則屬于邏輯備份。Oracle數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出工具,可以使用exp/imp,但這是比較早期的工具。Oracle 10g開(kāi)始后引入數(shù)據(jù)泵的方式。相對(duì)于傳統(tǒng)的exp命令來(lái)說(shuō),執(zhí)行效率更高。
Oracle 10g開(kāi)始引入數(shù)據(jù)泵,與傳統(tǒng)exp/imp相比,數(shù)據(jù)泵可以作業(yè)分離,允許掛起和恢復(fù)導(dǎo)入導(dǎo)出任務(wù),可以從失敗點(diǎn)重新啟動(dòng)失敗的作業(yè),還可以控制導(dǎo)入導(dǎo)出的版本(version)。
在使用數(shù)據(jù)泵前,必須創(chuàng)建DIRECTORY并獲得訪問(wèn)這么對(duì)象的權(quán)限,語(yǔ)句如下:
創(chuàng)建dump_scott目錄
create directory dump_scott as'/home/oracle/dump/scott'
為dump_scott目錄授權(quán)
Grant read,write on directory dump_scott toscott
1.expdp命令
(1)常用參數(shù)
content :導(dǎo)出數(shù)據(jù)還是只導(dǎo)出元數(shù)據(jù)(表和索引創(chuàng)建語(yǔ)句等),選項(xiàng)有:ALL、DATA_ONLY、METADATA_ONLY
directory:dumpfile和logfile的目錄對(duì)象
dumpfile/logfile
exclude:不導(dǎo)出指定的對(duì)象(與這些對(duì)象有依賴的也不會(huì)導(dǎo)出)eg:exclude=table:"lik e'DBA_%'"
include:導(dǎo)出指定的對(duì)象,與exclude功能相反,用法相同
job_name:定 義導(dǎo)出作業(yè)的名稱
attach:附加到已經(jīng)在運(yùn)行的現(xiàn)有作業(yè),用于管理作業(yè)
full:默認(rèn)值為n,full=y表示導(dǎo)出所有對(duì)象
nologfile:=y表示不寫(xiě)expdp的日志文件,默認(rèn)值為n
tables/tablespaces:運(yùn)行導(dǎo)出指定表/表空間,包括與這個(gè)表/表空間有依賴關(guān)系的所有對(duì)象
version:限制要導(dǎo)出的對(duì)象到指定版本的數(shù)據(jù)庫(kù)
(2)舉例
導(dǎo)出數(shù)據(jù)庫(kù)所有對(duì)象
Expdp system/pwd@ip/ORACLE_SID dumpfile=dumpdir:db_%U.dmp logfile=dumpdir:db_exp_%U.log job_name=exp_db full=y
2.impdp命令
(1)常用參數(shù)
content :導(dǎo)入數(shù)據(jù)還是只導(dǎo)入元數(shù)據(jù)(表和索引創(chuàng)建語(yǔ)句等),選項(xiàng)有:ALL、DATA_ONLY、METADATA_ONLY
directory:dumpfile和logfile的目錄對(duì)象
dumpfile/logfile
include:導(dǎo)入指定的對(duì)象,eg:exclude=table:"lik e'DBA_%'"
job_name:定義導(dǎo)入作業(yè)的名稱
attach:附加到已經(jīng)在運(yùn)行的現(xiàn)有作業(yè),用于管理作業(yè)
full:默認(rèn)值為n,full=y表示導(dǎo)出所有對(duì)象
nologfile:=y表示不寫(xiě)expdp的日志文件,默認(rèn)值為n
tables/tablespaces:運(yùn)行導(dǎo)出指定表/表空間,包括與這個(gè)表/表空間有依賴關(guān)系的所有對(duì)象
table_exists_action:定義當(dāng)表已經(jīng)存在時(shí)執(zhí)行的操作
(2)舉例
導(dǎo)入數(shù)據(jù)庫(kù)所有對(duì)象:
impdp system/pwd@ip/ORACLE_SID dumpfile=pumpdir:db_01.dmp logfile=pumpdir:db_imp_%U.log job_name=imp_db full=y
1.導(dǎo)入導(dǎo)出數(shù)據(jù)泵(expdp/impdp)是服務(wù)器端工具。所謂的服務(wù)器端工具,簡(jiǎn)單理解就是這樣,你執(zhí)行命令可以在服務(wù)器上,也可以在客戶端做,但是命令其實(shí)是在Oracle數(shù)據(jù)庫(kù)里建job,所以即使你的session斷掉了,這個(gè)操作一樣會(huì)繼續(xù),并最終完成。對(duì)于這個(gè)job,你還可以進(jìn)入交互模式并加以控制。
導(dǎo)入導(dǎo)出工具(exp/imp)是客戶端工具。所謂客戶端工具,簡(jiǎn)單理解就是這樣,你執(zhí)行命令可以在服務(wù)器上,也可以在客戶端做,不過(guò)實(shí)際上Oracle是通過(guò)這個(gè)建立起來(lái)的session來(lái)完成操作,一旦session終端,那么操作也會(huì)失敗。
2.導(dǎo)入導(dǎo)出數(shù)據(jù)泵(expdp/impdp)是Oracle 10g的新特性,他的文件格式采用XML。他的操作速度要遠(yuǎn)遠(yuǎn)快于exp/imp。
3.導(dǎo)入導(dǎo)出數(shù)據(jù)泵的數(shù)據(jù)只能存儲(chǔ)在本地服務(wù)器目錄,Oracle需要你首先創(chuàng)建目錄對(duì)象,并授予用戶正確的讀寫(xiě)權(quán)限。
4.導(dǎo)入導(dǎo)出數(shù)據(jù)泵導(dǎo)出文件取數(shù)據(jù)庫(kù)字符集,而exp/imp工具生成文件取的字符集受客戶端環(huán)境變量NLS_LANG影響。
筆者單位利用Oracle數(shù)據(jù)泵的特性成功解決了LIMS實(shí)驗(yàn)室信息管理系統(tǒng)因數(shù)據(jù)龐大造成數(shù)據(jù)備份還原經(jīng)常失敗的問(wèn)題。LIMS系統(tǒng)從2007年運(yùn)行至今,數(shù)據(jù)庫(kù)中已存儲(chǔ)大量的數(shù)據(jù)量。尤其是隨著煉油廠色譜分析儀接入數(shù)量的增加,色譜儀自動(dòng)分析結(jié)果傳輸數(shù)據(jù)量的增加,現(xiàn)有的Oracle(32位)數(shù)據(jù)庫(kù)性能已不能滿足現(xiàn)有業(yè)務(wù)應(yīng)用需求,因此我們新搭建一套LIMS數(shù)據(jù)庫(kù)系統(tǒng),在操作系統(tǒng)Windows Server 2003(64位)上安裝Oracle 10g(64位)。利 用Oracle 10g數(shù)據(jù)泵工具,成功建立了數(shù)據(jù)庫(kù)的自動(dòng)備份機(jī)制。將數(shù)據(jù)庫(kù)備份時(shí)間縮短到20分鐘,減小數(shù)據(jù)庫(kù)壓力,提高系統(tǒng)穩(wěn)定性。