UNDO SEGMENT的擴充套件和收縮
當發生一個DML操作時,伺服器程式會選擇一個undo segment。AUM採用的是事務繫結undo segment的演算法:
1、首先嚐試將每個undo段繫結一個事務,也就是每個undo segment上只被一個事務使用。
2、如果不能發現完全空閒的(也就是沒有與任何事務繫結)undo segment,則系統會嘗試將其他離線的undo segment離線。
3、如果沒有可用的undo segment進行聯機,則會嘗試建立一個新的undo segment。
4、如果上面步驟都不可行,也就是建立新的undo segment也沒有可用空間了,則事務繫結演算法才會嘗試去找最早被使用的那個undo segment。這種情況下,才可能出現多個事務在同一個undo segment中存在。
undo segment的收縮通過SMON實現:
1、每隔12個小時收縮一次,刪除那些idle狀態的extents。
2、當前臺程式進行DML而需要undo時,發現空間不夠用,則會喚醒SMON收縮一次。也就是說將其他undo segment裡暫時不用的extents拿來用。
使用AUM,並設定了undo_retention,undo塊存在四種狀態:
Active:正在使用該undo的事務還沒有提交或回滾。
Inactive:該undo上沒有活動的事務,該狀態的undo可以被其他事務覆蓋。
Expired:該undo持續inactive的時間超過undo_retention設定時間。
Free:該undo塊是空的,從來沒有被使用過。
當活動的事務使用undo segment時,在AUM模式下,事務可以在不同的undo segment之間交換undo空間,也就是在不同的undo segment
裡交換extents。當一個正在執行的事務需要更多的undo空間時,首先會重用當前undo segment裡的可用空間;如果當前undo segment
裡的可用空間不足,則會按照下面的步驟獲得所需要的extents:
1、獲取undo表空間裡可用的、空的extents。
2、獲取其他undo裡的expired狀態的extents。
3、如果undo表空間裡的資料檔案啟動了自動擴充套件(autoextend on),則資料檔案進行自動擴充套件。
4、如果undo表空間裡的資料檔案沒有啟用自動擴充套件,則獲取其他undo segment裡的inactive狀態的extents。
5、如果以上步驟均無法獲得可用空間時,報空間不足的錯誤。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24496749/viewspace-1045311/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- greenplum擴充套件segment套件
- 請教一下關於回滾段的擴充套件和收縮!套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- PHP的LZF壓縮擴充套件工具PHP套件
- 壓縮/擴充套件qcow2磁碟套件
- PHP的bz2壓縮擴充套件工具PHP套件
- oracle UNDO表空間一個bug——undo表空間快速擴充套件Oracle套件
- php7安裝redis擴充套件和memcache擴充套件PHPRedis套件
- 伸縮擴充套件Node.JS應用套件Node.js
- 使用Slice擴充套件伸縮OpenJPA 應用套件
- 博通將收購博科擴充套件儲存業務套件
- Oracle Undo SegmentOracle
- 乾貨丨如何水平擴充套件和垂直擴充套件DolphinDB叢集?套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 非推倒重來式的讀/寫伸縮擴充套件套件
- PHPmemcache和memcached擴充套件的區別PHP套件
- Scale-up(縱向擴充套件)和Scale-out(橫向擴充套件)套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 安裝Swoole框架和擴充套件框架套件
- 位擴充套件和位截斷套件
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件
- 擴充套件歐幾里得套件
- DOM擴充套件套件
- 擴充套件ACL套件
- Lua擴充套件套件
- 照片擴充套件套件
- 擴充套件篇套件
- disable or 擴充套件套件
- 擴充套件表套件
- Mybatis擴充套件MyBatis套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- 表空間自動擴充套件 AUTOALLOCATE 的擴充套件規律套件
- iOS開發的分類和擴充套件iOS套件
- iOS 協議的繼承和擴充套件iOS協議繼承套件
- 正則的擴充套件套件