ITPub博客

首页 > Linux操作系统 > Linux操作系统 > log_buffer的内存分配规律

log_buffer的内存分配规律

原创 Linux操作系统 作者:BTxigua 时间:2007-09-19 00:00:00 0 删除 编辑
关于log_buffer的实验

环境windows xp,Oracle9i Release 9.2.0.1.0 - Production
对于log_buffer的分配,在实例启动以后,我们可以发现在v$parameter、v$sgastat、v$sga查询的值是不一样的。
select name, value/1024 from v$parameter where name='log_buffer';
select name, bytes/1024 from v$sgastat where name='log_buffer';
select name, value/1024 from v$sga where name='Redo Buffers';
v$parameter是我们可以自己设定的值,也可以设定为0,这时候,oracle降会以默认的最小值来设置v$sgastat的值,同时v$sga也是最小的值。下面的数据是在log_buffer参数值修改的过程中,其他两个值对应变化的情况,从中也可以发现一些规律。
v$parameter v$sgastat v$sga
0 130 140
60k 130k 140k
78.5 144 152
80.5 146 156
87 152 160
89 154 164
90 155 164
91 156 164
92 157 168
101k 166k 176k
146.5k 276k 284k
176k 305k 316k

观察上面的结果,我想我们可以这样猜测:
v$sgastat的值是基于参数log_buffer的设定值,再根据一定的计算公式得到的。biti曾经说,v$sgastat是一组离散的组,如果是离散的值,那就应该是再某一个区间的log_buffer设置,对会对应同一个v$sgastat值,但事实上,我们看到log_buffer=87k-92k之间的变化可以看到,v$sgastat并不是一组离散的值。v$sgastat 再设定的时候会有最小值,在这个环境中,最小值为130k。
v$sga的值,则是根据v$sgastat的值,然后选择再加上8k-11k的一个值,得到min(n*4k)的一个值。就是说得到的结果是4k的整数倍,也就是说v$sga是以4k的单位递增的。

1、v$sgastat中log_buffer的值是连续的,不是离散的值。具体是根据参数log_buffer的设定来计算的。
2、v$sga的log bfuuer的值是一组以4k递增的序列。具体的值是根据v$sgastat的值再加上8k到11k之间的一个值得到的。具体选择8,9,10,11中的哪个,就是相加的结果被4整除为准。


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

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

注册时间:2008-01-31

  • 博文量
    101
  • 访问量
    278238