Oracle

在作業結束前移動 expdp 零件文件

  • February 24, 2022

我有一個在Enterprise Linux 6.6伺服器上執行的Oracle 11gr2數據庫。

我使用以下命令將 expdp 轉儲文件拆分為 10G 大小的塊:

expdp userid=/ DIRECTORY=dmpdir dumpfile=dump%u.dmp filesize=10G schemas=user1

這會創建 4 個文件,我應該將它們移動到另一台伺服器(rsync 然後 rm)。

我可以在 expdp 開始創建以下文件後立即移動文件嗎?我該怎麼做?我有類似 while (next_file not exists) 等的想法。

謝謝你。

不建議在導出作業完成之前移動文件。原因是導出時,實用程序“在作業期間建構和維護主表。在導出作業結束時,主表的內容被寫入轉儲文件集中的文件中。” (請參閱以下地址的 Oracle 文件:https ://docs.oracle.com/database/121/SUTIL/GUID-6BDC1CC8-8596-402D-B016-602985B97AB6.htm#SUTIL814 )如果您在作業之前移動轉儲文件完成後,您就有可能破壞該過程並使工作失敗。

您是否有理由需要在數據泵作業完成之前移動文件?如果沒有,只需等待作業完成即可。雖然能夠在文件不使用時立即移動它們對於大型導出/導入作業非常有用,但在操作轉儲文件之前讓導出完成可以為您節省大量時間。

expdp 使用多個轉儲文件的原因有兩個:

在後一種情況下,Oracle Database, Utilities, 12c Release 1 (12.1.0.2)中 FILESIZE 參數的描述說

如果轉儲文件集的任何成員達到大小,則該文件將關閉並嘗試創建一個新文件,(…)

關閉文件後,我希望不再需要它,可以複製、移動或刪除它。

因此,如果由於未設置 PARALLEL 參數而僅導出一個程序,則可以在創建下一個轉儲文件後將文件移動到另一台伺服器。

注意:我沒有對此進行測試,而是從文件中推斷出來的。

引用自:https://dba.stackexchange.com/questions/224021