Oracle
ORA-01555: 執行 expdp 命令期間的快照太舊錯誤
在生產數據庫(Oracle 11g - linux)中執行 expdp 命令後:
expdp abc/123 DIRECTORY=data_pump DUMPFILE=SA10_%u.dmp LOGFILE=SA10.log TABLES="abc"."/1FE/019" PARALLEL=4 CONTENT=DATA_ONLY COMPRESSION=ALL EXCLUDE=statistics STATUS=60
完成導出需要超過 13 小時,並且完成時出現以下錯誤消息:
ORA-31693: Table data object "abc"."/1FE/019" 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 56 with name "_SYSSMU56_1611713889$" too small
任何人請建議我該如何解決這個錯誤?
PS 我不允許更改保留政策!
如果你不能改變你的“保留政策”(又名 UNDO_RETENTION),你應該尋找其他方法來提高你的 expdp 性能。
您可以嘗試以下一項(或多項):
- 嘗試提高您的並行參數;
- 使用更快的磁碟到 expdp 目標;
- 如果您的 CPU 很少且速度較慢,請不要使用 COMPRESS。
ORA-01555: 快照太舊錯誤
原因:
很簡單,如果要歸檔的表(在 Oracle 中)很大並且對錶的 SELECT 查詢需要時間來提取數據,則 Oracle DB 會出現此問題。當任何 SELECT 查詢在 Oracle 中執行時,Oracle 將嘗試保持讀取一致性機制。
解決方案:
- 恢復作業並確保在作業執行時沒有會話更新要歸檔的表。
- 增加UNDO表空間。
- 將
UNDO_RETENTION
參數設置為高值,以便 UNDO 中的數據在被覆蓋之前保留很長時間。對於您的 ref Here,Here和Encountering “Snapshot too old” 執行 expdp 命令期間的錯誤“