濮阳杆衣贸易有限公司

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

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

熱門標(biāo)簽:宜賓外呼系統(tǒng)廠家 南通防封外呼系統(tǒng)運營商 修改高德地圖標(biāo)注 廣州市400電話辦理 地圖標(biāo)注原件 語音電話機器人缺點 百變地圖標(biāo)注 淮安自動外呼系統(tǒng)開發(fā) 語音電話機器人營銷方案

先由exp把數(shù)據(jù)卸出到文件系統(tǒng), 產(chǎn)生一個.dmp文件, 然后必要時再由imp將數(shù)據(jù)裝入數(shù)據(jù)庫. 對于一般中小型數(shù)據(jù)庫來說, 全數(shù)據(jù)庫的exp所產(chǎn)生的dmp文件可能小于2GB, 但對稍大型的數(shù)據(jù)庫, exp產(chǎn)生的數(shù)據(jù)動輒數(shù)十至上百個GB. 而現(xiàn)時多數(shù)操作系統(tǒng)為32位, 其文件系統(tǒng)允許的最大文件為2GB. 這樣顯然不能由文件系統(tǒng)存放exp產(chǎn)生的數(shù)據(jù). 這是問題之一. 另一個問題是隨著數(shù)據(jù)庫的不斷增大, exp所需時間越來越長以致實際上很難實施. 本文針對以上兩個問題討論相應(yīng)對策.

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

·管道 是一種偽文件. 它存在于內(nèi)存中, 用于快速I/O操作. 管道的緩沖區(qū)采用先進先出機制, 即寫管道進程寫到緩沖區(qū)頭部而讀管道進程讀取管道尾部. 建立管道的命令為”mknod filename p".
·dd 允許我們從一個設(shè)備拷貝數(shù)據(jù)到另一個設(shè)備.
·compress 為UNIX數(shù)據(jù)壓縮工具.
實施exp之前, 我們可先檢查所產(chǎn)生dmp文件的大小. 以下步驟既可實現(xiàn),
1. 生成管道:
$ mknod /tmp/mypipe p
2. exp結(jié)果輸出到該管道
$ exp file=/tmp/mypipe ...其它exp選項>
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. 啟動compress進程, 使之從管道讀取數(shù)據(jù)并輸出到磁盤文件.
$ mknod /tmp/exp_pipe p
$ compress /tmp/exp_pipe > export.dmp.Z
2. exp到管道.
$ exp file=/tmp/exp_pipe ...
imp時情況類似.
再看看直接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ù)用戶會采用exp到磁帶的方法只因沒有足夠的剩余硬盤空間. 而整個exp過程所花時間的大部分都在寫磁帶上. 通過我們上面對UNIX工具的討論, 我們可以做到先exp到管道, 再將管道數(shù)據(jù)壓縮后輸出到磁帶上. 這樣寫磁帶的數(shù)據(jù)量可大大減少, 從而在相當(dāng)程度上縮短寫磁帶時間. 另外從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%的時間. 但在使用它們時千萬要注意一點, 即一定要保證在使用expst/impst時不能有任何其他用戶在使用Oracle數(shù)據(jù)庫, 否則數(shù)據(jù)庫會產(chǎn)生不可預(yù)知的后果甚至毀壞.
A:昨天在網(wǎng)上一個朋友問我,如何導(dǎo)入一個通過pipe導(dǎo)出并壓縮過的文件,我特意做了一次試驗:
  Oracle的導(dǎo)出和導(dǎo)入不能直接引用標(biāo)準(zhǔn)的輸出和輸入,但通過unix pipe可是實現(xiàn),通過管道可以加快exp/imp速度
  通過管道導(dǎo)出數(shù)據(jù)
  1.通過mknod -p建立管道
  mknod /home/exppipe p --在目錄/home下建立一個管道exppipe 注意參數(shù)p
  2.通過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ù)我的測試,壓縮導(dǎo)出文件只是普通大小的十分之一
  通過管道導(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真不錯,能加快速度,同時還可以避免單個文件大于2G的限制。

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

標(biāo)簽:南平 嘉峪關(guān) 通化 股票投資 聊城 南平 襄陽 池州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle 管道 解決Exp/Imp大量數(shù)據(jù)處理問題》,本文關(guān)鍵詞  Oracle,管道,解決,Exp,Imp,大量,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle 管道 解決Exp/Imp大量數(shù)據(jù)處理問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于Oracle 管道 解決Exp/Imp大量數(shù)據(jù)處理問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    八宿县| 青岛市| 商城县| 海原县| 达尔| 柳林县| 宁波市| 二手房| 合阳县| 鹿邑县| 温泉县| 吐鲁番市| 宜良县| 东阿县| 鲁甸县| 安仁县| 城固县| 阳原县| 宁陵县| 临漳县| 黑河市| 昂仁县| 沁源县| 大余县| 武城县| 沐川县| 呼伦贝尔市| 封丘县| 句容市| 应城市| 耒阳市| 桐庐县| 关岭| 昂仁县| 五河县| 连云港市| 噶尔县| 崇义县| 苗栗市| 勃利县| 建阳市|