轉(zhuǎn)帖|其它|編輯:郝浩|2009-04-01 13:40:34.000|閱讀 577 次
概述:Oracle的exp/imp是許多用戶經(jīng)常使用的兩個(gè)工具。它們常被用來做數(shù)據(jù)庫的邏輯備份,數(shù)據(jù)庫重組和數(shù)據(jù)轉(zhuǎn)移等工作。先由exp把數(shù)據(jù)卸出到文件系統(tǒng),產(chǎn)生一個(gè).dmp文件,然后必要時(shí)再由imp將數(shù)據(jù)裝入數(shù)據(jù)庫。對(duì)稍大型的數(shù)據(jù)庫,exp產(chǎn)生的數(shù)據(jù)動(dòng)輒數(shù)十至上百個(gè)GB。這樣顯然不能由文件系統(tǒng)存放exp產(chǎn)生的數(shù)據(jù)。這是問題之一。另一個(gè)問題是隨著數(shù)據(jù)庫的不斷增大,exp所需時(shí)間越來越長(zhǎng)以致實(shí)際上很難實(shí)施。本文針對(duì)以上兩個(gè)問題討論相應(yīng)對(duì)策。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Oracle的exp/imp是許多用戶經(jīng)常使用的兩個(gè)工具。它們常被用來做數(shù)據(jù)庫的邏輯備份,數(shù)據(jù)庫重組和數(shù)據(jù)轉(zhuǎn)移等工作。先由exp把數(shù)據(jù)卸出到文件系統(tǒng),產(chǎn)生一個(gè).dmp文件,然后必要時(shí)再由imp將數(shù)據(jù)裝入數(shù)據(jù)庫。對(duì)于一般中小型數(shù)據(jù)庫來說,全數(shù)據(jù)庫的exp所產(chǎn)生的dmp文件可能小于2GB,但對(duì)稍大型的數(shù)據(jù)庫,exp產(chǎn)生的數(shù)據(jù)動(dòng)輒數(shù)十至上百個(gè)GB。而現(xiàn)時(shí)多數(shù)操作系統(tǒng)為32位,其文件系統(tǒng)允許的最大文件為2GB。這樣顯然不能由文件系統(tǒng)存放exp產(chǎn)生的數(shù)據(jù)。這是問題之一。另一個(gè)問題是隨著數(shù)據(jù)庫的不斷增大,exp所需時(shí)間越來越長(zhǎng)以致實(shí)際上很難實(shí)施。本文針對(duì)以上兩個(gè)問題討論相應(yīng)對(duì)策。
我們以Unix為例首先看看如何超越2GB限制。這需利用UNIX的通用技術(shù),如管道(named pipe),數(shù)據(jù)拷貝工具dd以及數(shù)據(jù)壓縮(compress)。下面分別討論這幾種技術(shù)。
實(shí)施exp之前,我們可先檢查所產(chǎn)生dmp文件的大小。以下步驟既可實(shí)現(xiàn):
1. 生成管道:
$ mknod /tmp/mypipe p
2. exp結(jié)果輸出到該管道
$ exp file=/tmp/mypipe <……其它exp選項(xiàng)> &
3. 讀取管道并把結(jié)果輸出到管道,只為查看數(shù)據(jù)量:
$ dd if=/tmp/mypipe of=/dev/null
結(jié)果返回exp(。dmp)文件大小,單位為塊(512 bytes)。
現(xiàn)在我們可以著手討論具體方法:
1. 文件壓縮
2. 直接exp到磁帶
3. 綜合方法
首先看文件壓縮方法。利用文件壓縮我們可盡量避免dmp文件大小超過2GB限制。我們利用UNIX的管道技術(shù),具體步驟如下:
1. 啟動(dòng)compress進(jìn)程,使之從管道讀取數(shù)據(jù)并輸出到磁盤文件。
$ mknod /tmp/exp_pipe p
$ compress < /tmp/exp_pipe > export.dmp.Z &
2. exp到管道。
$ exp file=/tmp/exp_pipe …… &
imp時(shí)情況類似。
再看看直接exp到磁帶上的方法。
$ exp file=/dev/rmt/0m volsize=4G
$ imp file=/dev/rmt/0m volsize=4G
最后看看exp到裸設(shè)備上的方法,
$ exp file=/dev/rdsk/c0t3d0s0 volsize=4G
imp類似。以上方法都可使我們避免2GB限制。
下面討論如何縮短exp索需時(shí)間的問題。目前多數(shù)用戶會(huì)采用exp到磁帶的方法只因沒有足夠的剩余硬盤空間。而整個(gè)exp過程所花時(shí)間的大部分都在寫磁帶上。通過我們上面對(duì)UNIX工具的討論,我們可以做到先exp到管道,再將管道數(shù)據(jù)壓縮后輸出到磁帶上。這樣寫磁帶的數(shù)據(jù)量可大大減少,從而在相當(dāng)程度上縮短寫磁帶時(shí)間。另外從Oracle內(nèi)部角度講,從7.3版開始,Oracle允許用戶做direct path export,即跳過Oracle
$ make -f $ORACLE_HOME/rdbms/lib/oracle.mk expst
$ make -f $ORACLE_HOME/rdbms/lib/oracle.mk impst
以上步驟產(chǎn)生的可執(zhí)行文件expst(exp single task)和impst與exp/imp用法完全相同。使用它們比使用exp/imp可節(jié)省多至30%的時(shí)間。但在使用它們時(shí)千萬要注意一點(diǎn),即一定要保證在使用expst/impst時(shí)不能有任何其他用戶在使用Oracle數(shù)據(jù)庫,否則數(shù)據(jù)庫會(huì)產(chǎn)生不可預(yù)知的后果甚至毀壞。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)頁教學(xué)網(wǎng)