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