ORACLE一致读与ORA-01555
生活随笔
收集整理的這篇文章主要介紹了
ORACLE一致读与ORA-01555
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
ORACLE一致讀與ORA-01555
用戶user1對表進行了更新操作,用戶user2在user1還沒有進行提交前讀表中數據,而且是大批量的讀取(打個比方:耗時3分鐘)而在這3分鐘內user1進行了提交操作,那又會產生什么影響呢?這個時候怎么保證讀寫一致性呢?這個時候DBMS就要保證有足夠大的undo表空間來存放修改前的數值,,以保證user2讀取的數據是修改前的一致數據.然后下次再讀取時候就是更新后的數據了. ora-01555快照過舊就是因為undo空間不夠大,其中一部分undo數據被覆蓋了,用戶無法獲得修改前的數據。 undo數據分為三種: 活動的undo:未提交事務的undo數據,這些undo數據永遠不能覆蓋,用于回滾rollback事務。 過期的undo:已提交事務的undo數據,這些undo數據可以覆蓋。 未過期的undo:事務已提交,但事務提交前,有些查詢正在進行,它要讀取的是提交前的數據,這部分數據就是未過期數據。如果這部分undo數據被覆蓋了,就會發生ora-01555錯誤。一個解決方法是,指定undo表空間參數UNDO_TABLESPACE,并將undo空間管理方法設置成自動擴展:UNDO_MANAGEMENT=AUTO。 這種方法可能產生的結果是: 因為undo表空間裝了太多未過期(unexpired)的undo數據,新的transaction無法向其中寫入undo數據,這時transaction就會發生ORA-30036錯誤。?
轉載于:https://my.oschina.net/u/138995/blog/204338
總結
以上是生活随笔為你收集整理的ORACLE一致读与ORA-01555的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字王谈M1字形与个人云字库
- 下一篇: 顺丰速运app推广原因