oracle ITL槽

winston_DBA發表於2015-04-07
1.每個資料塊頭都有一個ITL(interested transaction list),ITL裡記錄了在本資料塊內擁有行鎖(row lock)、已提交的記錄和未提交的記錄的事務資訊。
2.ITL指向undo段裡的事務表,事務表裡有對資料庫做的所有記錄。
3.從某種意義上說,資料塊頭利用ITL記錄了一段時間以來事務對資料塊所做的改變。
4.Oracle的鎖機制是一種輕量級的鎖定機制,不是透過構建鎖列表來進行資料的鎖定管理,而是直接將鎖作為資料塊的屬性,儲存在資料塊首部。這個是透過ITL來實現的,一個事務要修改塊中的資料,必須獲得該塊中的一個itl(透過initrans預先分配的或者是透過free space構建的)。
5.ITL槽的事務提交或回滾後,才可以被其他事務覆蓋,當新事務發現不夠ITL槽時,會動態建立一個新的ITL槽(如果存在空閒空間)。
initrans:每個資料塊預設ITL槽數目,預設值為2
maxtrans:ITL會根據需要動態擴充,最多達到maxtrans數量(假設塊上有足夠的空閒空間)。
6.每當一個事務要更新資料塊裡的資料時,必須先得到一個ITL槽,然後將當前事務ID,事務所用的undo資料塊地址,SCN號,當前事務是否提交等資訊寫到ITL槽裡。也就是說ITL槽包含資訊: 1.事務ID;2.事務所用UNDO塊地址;3.SCN號;4.事務是否提交標記。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30167136/viewspace-1524039/,如需轉載,請註明出處,否則將追究法律責任。

相關文章