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

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