undo的段頭存在著一個SEQ值,當回滾段使用從A區(qū)到B區(qū)的時候,相對應的SEQ值便會加1,例如A區(qū)的SEQ值是6,則undo段使用到B區(qū)的時候變會成為7。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,鳩江企業(yè)網(wǎng)站建設,鳩江品牌網(wǎng)站建設,網(wǎng)站定制,鳩江網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,鳩江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
但是undo空間是循環(huán)使用的,當該undo段中的事務提交過了之后,相對應的塊就可以被覆蓋掉。如下:

當3號區(qū)使用完全之后,oracle將會重新使用1號區(qū),并將其SEQ值加一,改為7,以此類推,新1號區(qū)使用完了之后,2號區(qū)也會被覆蓋,SEQ值改為8.
但是undo空間是循環(huán)使用的,當該undo段中的事務提交過了之后,相對應的塊就可以被覆蓋掉。如下:

當3號區(qū)使用完全之后,oracle將會重新使用1號區(qū),并將其SEQ值加一,改為7,以此類推,新1號區(qū)使用完了之后,2號區(qū)也會被覆蓋,SEQ值改為8.
undo塊覆蓋的原則是即將被覆蓋的undo塊必須小于前一個已經(jīng)覆蓋過的SEQ值。如果如下圖,

2號區(qū)一直有一個事務占住未被釋放,等到undo再次重用到1號區(qū)的時候,1號區(qū)的值變?yōu)?0。這個時候由于2號區(qū)的事務一直未被釋放,oracle無法對2號區(qū)進行覆蓋,也不能跳過2號區(qū)去重用3號區(qū)的undo塊。這個時候oracle便會進行一次extend,在一號區(qū)和二號區(qū)中間新增一個undo區(qū),我們稱為新2號區(qū)。然后oracle便會在新2號區(qū)進行覆蓋,在新2號區(qū)覆蓋完成之后,如果老2號區(qū)還未提交事務,oracle便會再次申請extend,直到事務提交。這樣會造成undo段短時間內(nèi)消耗大量空間。如下:

如果該2號區(qū)在undo段的開頭部分,這樣會導致undo段大部分空間不能重用,所以oracle增加了一種steal機制。
首先確定的是undo偷竊機制的基本單位是區(qū)。例如發(fā)生上述情況:

原二號區(qū):即三號區(qū)一直有事務在占用部分塊,導致其無法被覆蓋。那oracle的undo偷竊機制會啟到作用,其他undo段將會把4號區(qū)偷走,此undo段便會剩下三個區(qū),然后在新2號區(qū)后進行extend。

但是如果三號區(qū)的事務一直不提交,oracle會一直extend,導致3號區(qū)之前的區(qū)一直無法被重用,undo段一直在增加,可能會報錯undo空間無法擴展。所以事務無論大小,還是要盡快提交。
當前文章:undo的extend和steal機制
當前路徑:http://www.chinadenli.net/article44/peiohe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站營銷、外貿(mào)建站、網(wǎng)頁設計公司、移動網(wǎng)站建設、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)