- 相關(guān)推薦
Oracle認(rèn)證:Freebufferwaits等待事件總結(jié)
Free buffer waits
1.簡(jiǎn)述:當(dāng)數(shù)據(jù)庫(kù)要在buffer cache中尋找空閑空間來(lái)放置數(shù)據(jù),但發(fā)現(xiàn)空間不足時(shí),就會(huì)產(chǎn)生這個(gè)等待;
2.詳述:
a)在用戶請(qǐng)求塊的DBA上應(yīng)用HASH函數(shù),獲得適當(dāng)?shù)膆ash bucket;
b)檢索bucket對(duì)應(yīng)的chain,確認(rèn)塊頭是否存在,若存在就使用;
c)若不存在,用戶進(jìn)程在LRU鏈上按最近最少使用的順序?qū)ふ铱臻e緩沖區(qū)。若在此過(guò)程中發(fā)現(xiàn)臟塊,則將其移到LRUW列。找到空閑緩沖區(qū)后,就可以從數(shù)據(jù)文件將塊讀到該緩沖區(qū)上;
d)在LRU列上尋找,一般掃描40%的比例,掃完后沒(méi)有發(fā)現(xiàn)空閑緩沖區(qū),就會(huì)停止掃描并驅(qū)使DBWR將臟塊寫(xiě)到磁盤(pán)上;
e)在等待dbwr寫(xiě)臟塊的過(guò)程中,用戶進(jìn)程在等待free buffer waits事件。
3.原因:三部分
1.data buffer太小,導(dǎo)致空閑空間不夠
2.臟塊寫(xiě)得慢。
a)內(nèi)存中的臟數(shù)據(jù)太多,DBWR無(wú)法及時(shí)將這些臟數(shù)據(jù)寫(xiě)到磁盤(pán)中以釋放空間,也就是可能有批量dml操作。
b)dbwr數(shù)太少,db_writer_processes參數(shù)是否設(shè)得過(guò)少,配合os上的ps -ef | grep | grep dbw查看dbwr數(shù)量
c)緩慢的IO子系統(tǒng),db file parallel write較多,v
d)延遲塊清除,即延遲塊頭事務(wù)標(biāo)記清除。
3.要申請(qǐng)的空間過(guò)多
a)低效率的SQL語(yǔ)句導(dǎo)致過(guò)量的物理讀。
4.附錄:前臺(tái)進(jìn)程掃描lru鏈表,看有沒(méi)空閑的空間,一般要掃到預(yù)定義的限度才停止掃描,這個(gè)限度是LRU鏈表的百分比,9i中默認(rèn)40%, 可以通過(guò)查詢。 select * from x where kvittag = 'kcbfsp';或者查詢參數(shù) _db_block_max_scan_pct 也是40. 出現(xiàn)場(chǎng)景:imp,impdp導(dǎo)數(shù)進(jìn)庫(kù)也可能出現(xiàn)這個(gè)等待。 這個(gè)等待事件包含2個(gè)參數(shù):File#: 需要讀取的數(shù)據(jù)塊所在的數(shù)據(jù)文件的文件號(hào)。 Block#: 需要讀取的數(shù)據(jù)塊塊號(hào)。 什么是延遲塊清除? 在事務(wù)提交前,這個(gè)事務(wù)修改得block已經(jīng)被dbwr寫(xiě)到disk中去了。我們知道,塊頭會(huì)記錄這個(gè)塊有活動(dòng)事務(wù)存在,后來(lái)這個(gè)事務(wù)commit 時(shí),oracle不可能再把它讀回到內(nèi)存中來(lái)修改塊頭。只能等下回用它時(shí),到undo段里查詢事務(wù)記錄后,再修改塊標(biāo)志為已commit.比如如果對(duì)一個(gè)大表有delete操作,后續(xù)有人對(duì)這個(gè)表有select操作,因?yàn)檠舆t塊清除的特性,就會(huì)占用大量buffer.這也是為什么select也會(huì)產(chǎn)生 redo的原因。(select的時(shí)候要修改塊頭)delay block cleanout : 主要針對(duì)大事務(wù),可能在commit的時(shí)候,一些數(shù)據(jù)臟快已寫(xiě)入數(shù)據(jù)文件,提交時(shí),無(wú)法把這些數(shù)據(jù)塊標(biāo)記commit,該數(shù)據(jù)塊的下一個(gè)讀者對(duì)其進(jìn)行 delay block cleanout .數(shù)據(jù)塊的下一個(gè)讀者首先檢查該塊的事務(wù)狀態(tài)是否為活動(dòng),不活動(dòng)的話,修改事務(wù)的標(biāo)志(flag)。這樣可以避免不必要的事務(wù)讀。
【Oracle認(rèn)證:Freebufferwaits等待事件總結(jié)】相關(guān)文章:
Oracle認(rèn)證考試06-05
Oracle認(rèn)證:ORACLE綁定變量BINDPEEKING08-26
Oracle認(rèn)證考試科目06-05
Oracle認(rèn)證考試介紹06-20
oracle認(rèn)證考試詳情06-20
Oracle認(rèn)證:Oracle避免全表掃描方式08-26
Oracle認(rèn)證:Oracle內(nèi)存結(jié)構(gòu)研究-PGA篇08-26
Oracle認(rèn)證考試指南08-26