这篇“log buffer日志缓冲区问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“log buffer日志缓冲区问题怎么解决”文章吧。
log buffer(日志缓冲区)
change vector is a modification applied to something; executing DML statements
generates change vectors applied to data.
日志缓冲区是一个很小的,短期集结(change vectors)改变量的地方。
日志文件用于确保数据库中的数据不会丢失。应用于数据块的(change vectors)将会写
入日志文件中。会话产生日志信息到日志缓冲区,日志信息是通过后台进程LGWR写入日
志文件的。因为重做日志信息几乎实时的写入重做日志文件中,所以它比一般的oracle
内存结构组件小。所以该缓冲区不需要很大,接受推荐的大小就可以了(基于服务器的
CPU个数的推荐值)。但是不能设置重做日志缓冲区小于默认的值,如果这样oracle会自
动的设置为默认的值。调优的时候也是从默认值开始调整。日志缓冲区的大小在系统运
行期间是不可调整的,除非重启系统。可能在DML操作的高峰,日志信息产生的速度快于
LGWR的速度,这是DML操作会暂停毫秒。DML的操作速度不可能快过LGWR写重做日志的速度
(The process of flushing the log buffer to disk is one of the ultimate
bottlenecks in the Oracle architecture.)
If redo generation is the limiting factor in a database’s performance, the only
option is to go to RAC. In a RAC database, each instance has its own log buffer,
and its own LGWR. This is the only way to parallelize writing redo data to disk.
The size of the log buffer is static, fixed at instance startup. It cannot be
automatically managed.
查看日志缓冲区大小
SQL> show parameter log_buffer;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_buffer integer 5603328
注:触发LGWR写日志缓冲区的条件是:
一个会话执行了commit。
日志信息达到了日志缓冲区大小的三分之一,或者日志信息达到1mb。
DBWR打算写数据缓冲区中的脏数据(没有commit的数据)。
SQL> alter system set log_buffer=5m scope=spfile;
alter system set log_buffer=5m scope=spfile
ORA-02095: 无法修改指定的初始化参数
log_buffer是不能动态调整的。最简单的方法就是在init.ora文件中添加一句 "log_buffer=value"。
然后用这个init.ora重启Oracle(SQL>startup pfile=init.ora)
以上就是关于“log buffer日志缓冲区问题怎么解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。