解決Oracle中Exp/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 <...> &
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資料庫, 否則資料庫會產生不可預知的後果甚至毀壞.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84678/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle exp和impOracle
- oracle資料匯出匯入(exp/imp)Oracle
- 使用imp/exp遇到兩個問題
- 【exp/imp不同版本】Oracle不同版本的exp/imp使用注意事項Oracle
- exp和imp詳解
- Oracle資料庫中的逐行處理問題NEOracle資料庫
- exp匯出報錯EXP-00106問題處理
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- Oracle日常問題處理-資料庫無法啟動Oracle資料庫
- 資料處理--pandas問題
- Oracle資料庫處理壞塊問題常用命令Oracle資料庫
- 銀河麒麟系統安裝ORACLE資料庫問題處理Oracle資料庫
- oracle SP2-問題處理Oracle
- 用exp、imp遷移包含物化檢視日誌的資料
- [20190520]exp imp on th fly.txt
- exp匯出遭遇IMP-00020
- exp&imp的使用方法
- MySQL查詢中Sending data佔用大量時間的問題處理MySql
- 大量資料如何做分頁處理
- 小程式處理大量資料列表的方法
- 乾貨丨RPA工程中的資料處理問題
- Oracle日常問題處理ORA-04031Oracle
- ORACLE問題處理十個指令碼Oracle指令碼
- 不同版本exp/imp使用注意事項
- Jison解決JS處理後端返回的Long型資料精度丟失問題JS後端
- 大資料處理需留意哪些問題大資料
- python中多程式處理資料庫連線的問題Python資料庫
- 前端如何處理十萬級別的大量資料前端
- linux處理oracle問題常用命令LinuxOracle
- 主庫千萬級的資料更新後,STANDBY日誌應用大量延遲的問題處理
- 在 React 中處理資料流問題的一些思考React
- oracle遊標批次處理資料Oracle
- Oracle CPU使用率過高問題處理Oracle
- ORACLE懸疑分散式事務問題處理Oracle分散式
- 簡述高併發解決思路-如何處理海量資料(中)
- 解決Oracle序列跳號問題Oracle
- JDBC Oracle executeUpdate 卡死問題解決JDBCOracle
- 億萬級資料處理的高效解決方案