從今天開(kāi)始講解awr報(bào)告Top 5 Timed Events部分
今天講log file sync等待事件
log file sync
如何發(fā)生的
要弄懂log file sync,我們首先說(shuō)下他們是如何發(fā)生的
當(dāng)用戶提交(commit)語(yǔ)句時(shí),一個(gè)進(jìn)程會(huì)建立一個(gè)redo 記錄并把它拷貝至SGA中的log buffer中,然后這個(gè)進(jìn)程會(huì)通知LGWR進(jìn)程再將log buffer中的內(nèi)容寫入日志文件(redo file)中,同時(shí)清空l(shuí)og buffer的內(nèi)容,最后返回完成消息,這就完成了一次commit操作
commit動(dòng)作在LGWR進(jìn)程沒(méi)有返回完成消息前是不會(huì)完成的,我們把LGWR將log buffer中的內(nèi)容寫入日志文件(redo file)以及返回完成消息的這段時(shí)間標(biāo)記為log file sync等待事件,它有個(gè)1s的超時(shí)時(shí)間
這個(gè)等待事件往往伴隨著log file parallel write等待事件,這個(gè)下期講解
log buffer大小
這里需要注意的是LGWR寫log buffer內(nèi)容至日志文件有多種情況
每三秒鐘
每一次commit
當(dāng)其 1/3滿的時(shí)候
當(dāng)其達(dá)到1M的時(shí)候
查看LGWR進(jìn)程等待情況(整體)
通過(guò)上面的講解我們知道log file sync事件和LWGR進(jìn)程相關(guān),我們可以查詢
select sid, event, time_waited, time_waited_micro
from v$session_event
where sid in (select sid from v$session where program like '%LGWR%')
order by 3
通過(guò)上圖我們可以看到LGWR進(jìn)程主要的等待有哪些,哪些等待比較嚴(yán)重
rdbms ipc message 表示LGWR正在等待寫redo log,表示其處于空閑狀體,我們不必理會(huì)
log file single/parallel write 即我們今天所說(shuō)的LGWR寫redo 文件
其他的暫不討論,大家可自行搜索
注意該視圖中的數(shù)字是從實(shí)例啟動(dòng)起來(lái)的累計(jì)值
查詢當(dāng)前LGWR進(jìn)程狀態(tài)(實(shí)時(shí))
select a.*
from v$Session_wait a, v$session b
where a.sid = b.sid
and b.program like '%LGWR%';
通過(guò)上圖我們發(fā)現(xiàn)當(dāng)前LGWR進(jìn)程處于空閑狀態(tài),如發(fā)現(xiàn)為log file write等說(shuō)明目前 LGWR進(jìn)程正在繁忙
原因及改善
如果log file sync 等待事件占有過(guò)多的CPU時(shí)間,我們就需要注意了
低速的磁盤可能會(huì)導(dǎo)致LGWR進(jìn)程寫文件較慢從而導(dǎo)致log file sync等待,我們可以簡(jiǎn)單的通過(guò)avg waits 來(lái)判斷,如超過(guò)15ms則說(shuō)明磁盤可能是瓶頸,需要放到高速的磁盤,另外加日志組中成員文件放在不同的磁盤中
服務(wù)器CPU內(nèi)存資源不足會(huì)導(dǎo)致進(jìn)程相應(yīng)緩慢,同樣會(huì)增加log file sync等待,所以在調(diào)優(yōu)時(shí)首先保證系統(tǒng)資源充足
數(shù)據(jù)庫(kù)鎖及l(fā)atch也會(huì)影響log file sync等待
過(guò)大的log buffer 大小,log buffer過(guò)大可能導(dǎo)致刷新過(guò)于次數(shù)過(guò)低,從而導(dǎo)致單次刷新過(guò)慢
過(guò)多的commit操作,通過(guò)上面我們知道每次commit操作都會(huì)導(dǎo)致LGWR寫操作,如commit過(guò)多則該等待則會(huì)明顯的上升
下期預(yù)告
log file parallel write
其他專題
[AWR報(bào)告] Instance Efficiency Percentages總結(jié)
[Python運(yùn)維]Python監(jiān)控Oracle數(shù)據(jù)庫(kù)總結(jié)
[Python運(yùn)維]使用Python監(jiān)控Oracle索引總結(jié)
[Python自動(dòng)化運(yùn)維] 監(jiān)控linux/Unix服務(wù)器性能及Oracle日志
聯(lián)系客服