ORA-01555 snapshot too old解決辦法

   首先,先了解下此錯誤產生的原因。

 其根本原因是,undo表空間裏的commit過的數據被覆蓋。這種事件最容易發生在遊標cursor中。當用戶A運行一個長時間的cursor,而此時用戶B已對cursor查詢所使用的原始數據做了修改。長時間運行中的cursor,查詢到的數據是未修改前的數據。這些數據是存放在undo表空間裏的,如果undo表空間太小,隨着修改的增加,cursor所用的數據就會被commit後的數據覆蓋。這時候cursor就查詢不到修改以前的數據了,就會報錯。

   還有就是cursor運行的時間過長,而undo retention 默認保留的時間是900秒,900過後undo裏存放的原始數據也會丟失,這個時候,當cursor再來查詢時也是找不到數據,也會報ora -01555錯誤。

知道原因解決起來就容易了。方法有兩種:

一是加大undo表空間。

二是加大undo retention的時間比cursor運行所需的時間長。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章