天天看點

Oracle的log_buffer該設為多大?

各地現場的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)