天天看點

ORA-01555 快照過舊産生原因

1、session A 對表AAA執行一個select語句,記錄時間time1

2、session B 對表AAA執行一個update語句,記錄時間time2

3、當session A 讀到session B修改的行時,發現這一行的更新時間比time1晚,此時就需要在undo構造一個一緻性視圖,CR塊,然後繼續執行,記錄時間time3

4、session B又執行update操作,修改某行資料并送出,此時更新了之前的一緻性視圖,記錄時間time4

5、如果session B 執行了某個批量操作,由于空間不足導緻一緻性視圖被覆寫,記錄時間time5

6、如果session A讀到第四步被修改的資料,發現更新時間晚于time1,這時就去找undo中的一緻性視圖,但是已經被覆寫,此時就會報錯。

解決辦法:

(1)增加UNDO表空間大小

(2)增加undo_retention 時間,預設隻有15分鐘

(3)優化出錯的SQL,減少查詢的時間(首選)

(4)避免頻繁的送出