ITPub博客

首页 > Linux操作系统 > Linux操作系统 > log buffer(日志缓冲区)

log buffer(日志缓冲区)

原创 Linux操作系统 作者:pingley 时间:2012-02-06 20:50:38 0 删除 编辑
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)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26110315/viewspace-715718/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    169
  • 访问量
    717903