各地現場的log_buffer都不一樣,有的現場設定為200M,有的現場設定500K。到底應該設多大呢?
log_buffer是Redo log的buffer。
是以在這裡必須要了解Redo Log的觸發事件(LGWR)
1、當redo log buffer的容量達到1/3
2、設定的寫redo log時間間隔到達,一般為3秒鐘。
3、redo log buffer中重做日志容量到達1M
4、在DBWn将緩沖區中的資料寫入到資料檔案之前
5、每一次commit--送出事務。
上面的結論可以換句話說
1、log_buffer中的内容滿1/3,緩存重新整理一次。
2、最長間隔3秒鐘,緩存重新整理一次
3、log_buffer中的資料到達1M,緩存重新整理一次。
4、每次送出一個“事務”,緩存重新整理一次
由此可以得出log_buffer一般在3-5M就足夠了。超過3-5M,僅僅是浪費記憶體;當然太小了,也可能影響性能。在記憶體不太昂貴的今天,且如果你有大量“大事務”,log_buffer就設定為5M吧。
1、如何檢視log_buffer大小?
SQL>show parameter log_buffer
2、如何設定log_buffer?
log_buffer是不能線上調整的。最簡單的方法就是在init.ora檔案中添加一句 "log_buffer=5000000"。 然後用這個init.ora重新開機Oracle(SQL>startup pfile=init.ora)