解決Oracle中Exp Imp大量資料處理問題

2021-04-26 13:23:17 字數 1931 閱讀 6298

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資料庫, 否則資料庫會產生不可預知的後果甚至毀壞。

oracle中exp,imp的使用詳解

基本語法和例項 1 exp 有三種主要的方式 完全 使用者 表 1 完全 exp system manager buffer 64000 file c full.dmp full y 如果要執行完全匯出,必須具有特殊的許可權 2 使用者模式 exp sonic sonic buffer 64000 ...

oracle中exp,imp的使用詳解

基本語法和例項 1 exp 有三種主要的方式 完全 使用者 表 1 完全 exp system manager buffer 64000 file c full.dmp full y 如果要執行完全匯出,必須具有特殊的許可權 2 使用者模式 exp sonic sonic buffer 64000 ...

oracle中exp,imp的使用詳解

基本語法和例項 1 exp 有三種主要的方式 完全 使用者 表 1 完全 exp system manager buffer 64000 file c full.dmp full y 如果要執行完全匯出,必須具有特殊的許可權 2 使用者模式 exp sonic sonic buffer 64000 ...