佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Oracle 管道 解決Exp/Imp大量數(shù)據(jù)處理問(wèn)題

Oracle 管道 解決Exp/Imp大量數(shù)據(jù)處理問(wèn)題

熱門(mén)標(biāo)簽:網(wǎng)站排名優(yōu)化 呼叫中心市場(chǎng)需求 AI電銷(xiāo) 服務(wù)外包 Linux服務(wù)器 鐵路電話(huà)系統(tǒng) 百度競(jìng)價(jià)排名 地方門(mén)戶(hù)網(wǎng)站

先由exp把數(shù)據(jù)卸出到文件系統(tǒng), 產(chǎn)生一個(gè).dmp文件, 然后必要時(shí)再由imp將數(shù)據(jù)裝入數(shù)據(jù)庫(kù). 對(duì)于一般中小型數(shù)據(jù)庫(kù)來(lái)說(shuō), 全數(shù)據(jù)庫(kù)的exp所產(chǎn)生的dmp文件可能小于2GB, 但對(duì)稍大型的數(shù)據(jù)庫(kù), 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ù). 這是問(wèn)題之一. 另一個(gè)問(wèn)題是隨著數(shù)據(jù)庫(kù)的不斷增大, exp所需時(shí)間越來(lái)越長(zhǎng)以致實(shí)際上很難實(shí)施. 本文針對(duì)以上兩個(gè)問(wèn)題討論相應(yīng)對(duì)策.

我們以UNIX為例首先看看怎么樣超越2GB限制. 這需利用UNIX的通用技術(shù), 如管道(named pipe), 數(shù)據(jù)拷貝工具dd以及數(shù)據(jù)壓縮(compress). 下面分別討論這幾種技術(shù).

·管道 是一種偽文件. 它存在于內(nèi)存中, 用于快速I(mǎi)/O操作. 管道的緩沖區(qū)采用先進(jìn)先出機(jī)制, 即寫(xiě)管道進(jìn)程寫(xiě)到緩沖區(qū)頭部而讀管道進(jìn)程讀取管道尾部. 建立管道的命令為”mknod filename p".
·dd 允許我們從一個(gè)設(shè)備拷貝數(shù)據(jù)到另一個(gè)設(shè)備.
·compress 為UNIX數(shù)據(jù)壓縮工具.
實(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文件大小超過(guò)2GB限制. 我們利用UNIX的管道技術(shù), 具體步驟如下,
1. 啟動(dòng)compress進(jìn)程, 使之從管道讀取數(shù)據(jù)并輸出到磁盤(pán)文件.
$ mknod /tmp/exp_pipe p
$ compress /tmp/exp_pipe > export.dmp.Z
2. exp到管道.
$ exp file=/tmp/exp_pipe ...
imp時(shí)情況類(lèi)似.
再看看直接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類(lèi)似.以上方法都可使我們避免2GB限制.
下面討論怎么樣縮短exp索需時(shí)間的問(wèn)題. 目前多數(shù)用戶(hù)會(huì)采用exp到磁帶的方法只因沒(méi)有足夠的剩余硬盤(pán)空間. 而整個(gè)exp過(guò)程所花時(shí)間的大部分都在寫(xiě)磁帶上. 通過(guò)我們上面對(duì)UNIX工具的討論, 我們可以做到先exp到管道, 再將管道數(shù)據(jù)壓縮后輸出到磁帶上. 這樣寫(xiě)磁帶的數(shù)據(jù)量可大大減少, 從而在相當(dāng)程度上縮短寫(xiě)磁帶時(shí)間. 另外從Oracle內(nèi)部角度講, 從7.3版開(kāi)始, Oracle允許用戶(hù)做direct path export, 即跳過(guò)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í)千萬(wàn)要注意一點(diǎn), 即一定要保證在使用expst/impst時(shí)不能有任何其他用戶(hù)在使用Oracle數(shù)據(jù)庫(kù), 否則數(shù)據(jù)庫(kù)會(huì)產(chǎn)生不可預(yù)知的后果甚至毀壞.
A:昨天在網(wǎng)上一個(gè)朋友問(wèn)我,如何導(dǎo)入一個(gè)通過(guò)pipe導(dǎo)出并壓縮過(guò)的文件,我特意做了一次試驗(yàn):
  Oracle的導(dǎo)出和導(dǎo)入不能直接引用標(biāo)準(zhǔn)的輸出和輸入,但通過(guò)unix pipe可是實(shí)現(xiàn),通過(guò)管道可以加快exp/imp速度
  通過(guò)管道導(dǎo)出數(shù)據(jù)
  1.通過(guò)mknod -p建立管道
  mknod /home/exppipe p --在目錄/home下建立一個(gè)管道exppipe 注意參數(shù)p
  2.通過(guò)exp和gzip導(dǎo)出數(shù)據(jù)到建立的管道并壓縮
  exp test/test@orcl file=/home/exppipe
  gzip /home/exppipe > exp.dmp.gz
  3.導(dǎo)出成功完成之后刪除建立的管道
  rm -rf /home/exppipe
  根據(jù)我的測(cè)試,壓縮導(dǎo)出文件只是普通大小的十分之一
  通過(guò)管道導(dǎo)入生成的文件
  1.建立管道
mknod /home/exppipe p
  2.導(dǎo)入生成的壓縮文件
  imp system/passwd@orcl file=/home/exppipe fromuser=test touser=macro
  gunzip exp.dmp.gz > /home/exppipe
  這樣就導(dǎo)入成功,之后刪除管道
  3.刪除管道
 
  rm /home/exppipe
  以上總結(jié),PiPe真不錯(cuò),能加快速度,同時(shí)還可以避免單個(gè)文件大于2G的限制。

您可能感興趣的文章:
  • oracle中exp,imp的使用詳解
  • Oracle 數(shù)據(jù)庫(kù)導(dǎo)出(exp)導(dǎo)入(imp)說(shuō)明
  • Oracle EXP和IMP用法和介紹
  • 使用imp和exp命令對(duì)Oracle數(shù)據(jù)庫(kù)進(jìn)行導(dǎo)入導(dǎo)出操作詳解

標(biāo)簽:衡水 湖南 蘭州 崇左 銅川 仙桃 黃山 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle 管道 解決Exp/Imp大量數(shù)據(jù)處理問(wèn)題》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266
    汉中市| 福清市| 罗平县| 百色市| 三亚市| 垣曲县| 云安县| 东乌珠穆沁旗| 嘉祥县| 兴和县| 常德市| 宁夏| 瓦房店市| 河北省| 城固县| 柯坪县| 苏尼特左旗| 水城县| 九江县| 衡南县| 唐河县| 个旧市| 商南县| 安岳县| 鄂州市| 榕江县| 长宁区| 南投县| 军事| 孟州市| 黑河市| 剑河县| 海宁市| 若尔盖县| 陆丰市| 内丘县| 怀化市| 壤塘县| 乡宁县| 磐安县| 四平市|