前幾天,Daniel 因知識和經驗不到位鬧出了個大笑話,直至今天還人要因為 Daniel 這個無意的錯誤從遙遙千裡的長沙趕到帝都。
事情的經過是這樣的:
金稅三期重慶試驗剛剛上線一月有餘,國家審計署需要對項目的各廠商的資料玩玩審計,於是老闆就要我將我們目前最全的近期庫全庫
匯出交給國家審計署的工程師,結果笑話就出來了。
接到任務後,我二話不說就直接 expdp 往伺服器一跑,和心理想的一樣,匯出來的 dump 估計至少要 700 多個 G,心裡一涼,近期庫
上平時導 dump 用的盤一共才 500G,更別說剩餘空間才 300 多G,怎麼辦呢?想盡了各種辦法之後,最後只好無賴地在一台有幾T儲存
空間的 ftp 伺服器上安裝了 Oracle 11g 軟體,用 exp 匯出來了。
資料總算是匯出來了,可是可把審計署那小子給傷著了,從25號到今天,從ftp伺服器上下載下來共花了幾天,中途幾次出錯,都被迫
從下,今天走的時候都在給我抱怨,真擔心回長沙後導不進去又得回帝都來……
晚上回來,查了查 data pump 能否將大資料拆分成小檔案匯出,果然可以。
《Oracle? Database Utilities11g Release 2 (11.2)》中就有介紹:
expdp job 的 dumpfile 參數中就可以指定多個檔案,各個檔案之間用英文逗號隔開:
DUMPFILE=[directory_object:]file_name [, ...]
也可以通過使用替換變數%U的模板來指定產生的多個dump檔案的檔案名稱格式。樣本如下:
expdp system/oracle123 dumpfile=test%U.DMP logfile=exp_test.log directory=dpump_dir schemas=scott content=data_only FILESIZE=10M
如果使用%U替換變數,則產生的檔案的檔案名稱中,%U的預留位置替換成01-99的兩位定長遞增的整數。例如 test%U.DMP 將匯出
為 test01.DMP、test02.DMP ...
如果還指定了 filesize 參數,則每個匯出的 dump 檔案都會有一個大小上限,並且不可擴充。如果 dump 檔案集需要更多的
空間,且使用了 %U 替換變數,則只要存放裝置上空間足夠將自動建立一個 filesize 參數所指定的大小的 dump 檔案。
expdp 工具會按照 dumpfile 參數中指定的檔案順序進行處理。如果 expdp job 因為達到檔案大小上限而需要更多的檔案或
執行並行作業,則在指定了%U檔案模板的情況下,會自動建立所修的額外檔案。
儘管我們可以再 dumpfile 參數中指定多個檔案,但是 export job 可能只需要這些檔案中的一部分就可以存放匯出的資料。
export job 結束時顯示的 dump 檔案集才是真正使用到的檔案。這些檔案才是使用此 dump 檔案集只需 import 操作時所
必需的。任何沒有備用到的檔案都可以丟棄。
immdp 匯入樣本如下:
impdp system/oracle123 dumpfile=test%U.DMP directory=dpump_dir schemas=scott logfile=imp_test.log
轉載請註明作者出處及原文連結:
http://blog.csdn.net/xiangsir/article/details/8729037