1. 程式人生 > >對於大型表的DataPump匯出(EXPDP)失敗,錯誤ORA-1555(文件 ID 1086414.1)

對於大型表的DataPump匯出(EXPDP)失敗,錯誤ORA-1555(文件 ID 1086414.1)

症狀

在某個表上執行expdp通常需要一個小時。 但是,它現在運行了一天。 問題似乎與一個表(資料庫中最大的)有關。 當DataPump匯出(expdp)啟動時,它處理的第一個表的估計處理時間超過24小時。

Processing object type SCHEMA_EXPORT/TABLE/MATERIALIZED_VIEW_LOG
ORA-31693 : Table data object "MERIDIAN"."LINEPAST" failed to load/unload and is being skipped due to error:
ORA-02354 : error in exporting/importing data
ORA-01555 : snapshot too old: rollback segment number 1 with name "_SYSSMU1$" too small
該表沒有任何LOB列。 增加UNDO_RETENTION引數沒有幫助。

當從另一臺伺服器執行相同的匯出時,它會顯示同一個表的大約20分鐘的耗用時間。

變更

表格中的大部分行最近都進行了更新。

原因

更新表中的行導致高碎片(鏈/遷移行),這大大增加了執行此表匯出的時間。

解決方案

1.確認UNDO_RETENTION引數已設定得足夠大,以確保在整個EXPDP持續時間內保留undo記錄
2.通過以下操作重新建立碎片表:
SQL> create table <new_table_name> as(select * from <fragmented_table>);
然後drop碎片表。
您可以將<new_table_name>重新命名為舊錶名。
3.執行expdp作業。 (這次它在幾分鐘內結束)