程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> 解決Oracle中Exp/Imp大量數據處理問題

解決Oracle中Exp/Imp大量數據處理問題

編輯:關於Oracle數據庫

  Oracle的exp/imp是許多用戶經常使用的兩個工具。 它們常被用來做數據庫的邏輯備份,數據庫重組和數據轉移等工作。 先由exp把數據卸出到文件系統, 產生一個。dmp文件, 然後必要時再由imp將數據裝入數據庫。

  對於一般中小型數據庫來說, 全數據庫的exp所產生的dmp文件可能小於2GB, 但對稍大型的數據庫, exp產生的數據動辄數十至上百個GB. 而現時多數操作系統為32位, 其文件系統允許的最大文件為2GB. 這樣顯然不能由文件系統存放exp產生的數據。 這是問題之一。 另一個問題是隨著數據庫的不斷增大, exp所需時間越來越長以致實際上很難實施。 本文針對以上兩個問題討論相應對策。

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

  。管道 是一種偽文件。 它存在於內存中, 用於快速I/O操作。 管道的緩沖區采用先進先出機制, 即寫管道進程寫到緩沖區頭部而讀管道進程讀取管道尾部。 建立管道的命令為“mknod filename p".

  。dd 允許我們從一個設備拷貝數據到另一個設備。

  。compress 為UNIX數據壓縮工具。

  實施exp之前, 我們可先檢查所產生dmp文件的大小。 以下步驟既可實現,

  1. 生成管道:

  $ mknod /tmp/mypipe p

  2. exp結果輸出到該管道

  $ exp file=/tmp/mypipe <……其它exp選項> &

  3. 讀取管道並把結果輸出到管道, 只為查看數據量:

  $ dd if=/tmp/mypipe of=/dev/null

  結果返回exp (。dmp)文件大小, 單位為塊(512 bytes)。

  現在我們可以著手討論具體方法,

  1. 文件壓縮

  2. 直接exp到磁帶

  3. 綜合方法

  首先看文件壓縮方法。 利用文件壓縮我們可盡量避免dmp文件大小超過2GB限制。 我們利用UNIX的管道技術, 具體步驟如下,

  1. 啟動compress進程, 使之從管道讀取數據並輸出到磁盤文件。

  $ 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到裸設備上的方法,

  $ exp file=/dev/rdsk/c0t3d0s0 volsize=4G

  imp類似。以上方法都可使我們避免2GB限制。

  下面討論如何縮短exp索需時間的問題。 目前多數用戶會采用exp到磁帶的方法只因沒有足夠的剩余硬盤空間。 而整個exp過程所花時間的大部分都在寫磁帶上。 通過我們上面對UNIX工具的討論, 我們可以做到先exp到管道, 再將管道數據壓縮後輸出到磁帶上。 這樣寫磁帶的數據量可大大減少, 從而在相當程度上縮短寫磁帶時間。 另外從Oracle內部角度講, 從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

  以上步驟產生的可執行文件expst (exp single task)和impst與exp/imp用法完全相同。 使用它們比使用exp/imp可節省多至30%的時間。 但在使用它們時千萬要注意一點, 即一定要保證在使用expst/impst時不能有任何其他用戶在使用Oracle數據庫, 否則數據庫會產生不可預知的後果甚至毀壞。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved