?
? undo的作用是:解決oracle多用戶讀寫一致性,以及操作可撤銷或者回滾。
?
1.undo表空間是從10g開始進行自動管理的,幾個參數如下:
? undo_management:回滾段手動管理還是自動管理
? undo_tablespace:為undo單獨定義的表空間;在自動管理模式下,使用哪個表空間
? undo_retention:在自動管理模式下,回滾段在非活動狀態下,回滾段中的數據被覆蓋前,系統的保留時間(秒)。
?
2.回滾段存儲的內容
? ?insert操作:只記錄插入記錄的rowid,回滾時,只需要根據該rowid刪除記錄即可
? ?update操作:記錄要更新字段的鏡像,回滾時,通過該鏡像,覆蓋之前的值
? ?delete操作:完整地記錄一條數據,回滾時,通過一個反向操作恢復數據。
? ? ? 通過上面比較,delete的花銷最大。所以,一個批量刪除失敗,回滾會花銷比較長的時間。同時,回滾的操作
?還要記錄redo日志。
?
3.oracle讀寫一致性
? ? ? ? ? ??
? ? 用戶A、B;一個在update,一個在select;
? ? 如果(1):Ty< T<Tz<Tx , 即在查詢中,數據有更新;但在update 的commit前,查詢結束;雖然有update操作,但select依然
? ? ? ? ? ? ? ? 可以通過回滾段的數據鏡像查詢出結果,這樣數據就保持了讀取一致性。
? ? 如果(2):Ty< T<Tx<Tz ,在查詢中,數據有更新;但在update 的commit前,查詢還未結束;這就導致select的查詢回滾段的數據
? ? ? ? ? ? ? ?鏡像有可能被覆蓋,進而查詢失敗;oracle提示ora-01555錯誤。
?
? ?oracle為解決ora-01555問題:
? ? ?從10g 開始,oracle 對undo_retention 參數進行了調整。默認情況下,這個參數是啟用的。oracle自動調整回滾段數據保留時間;
? 當然,如果undo表空間不足,系統自動滿足長時間的查詢,而不需要手動調整。
? ? ?同時,oracle還對undo表空間增加了guaratee控制,即用戶可以指定undo表空間必須滿足undo_retention 限制。
? ? ?>alter tablespace undotbs1 ? ?retention guaratee;
??
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
