undo_retention的作用

kakaxi9521發表於2021-11-24

ORA-31693: Table data object "SCHEMA"."TABLE" 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 26 with name "_SYSSMU26_2551973035$" too small


Oracle 提供的事務隔離級別,預設的隔離級別是Read committed Isolation level。

  • Read committed isolation level

  • Serializable isolation level

  • Read-Only Isolation level

匯出的表大小為70G, UNDO 表空間的大小為25G。

開始以為在進行expdp 匯出操作時會將整個大表讀入到undo 表空間中。如果表過大,UNDO 表空間沒有表大時,會報ORA-01555。

其實不是, 只有在進行insert,delete, update操作時會將被修改的前資料儲存一份到UNDO 中。

在此次expdp 匯出資料時報ORA-01555錯的原因是表過大,匯出時間長,超過undo_retention的設定,有些段會失效所致。

將undo_retention 的值設定的大一些就能解決此問題。

修改undo_retention 的值:

alter system set undo_retention=10800 scope=both;


參考連結:

undo_retention作用

https://blog.csdn.net/fenglin20115588/article/details/50818216

修改預設的undo_retention引數設定

https://www.cnblogs.com/lcword/p/5982527.html

ORA-01555快照過舊說明

https://www.cnblogs.com/lcword/p/5982507.html








來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2843859/,如需轉載,請註明出處,否則將追究法律責任。