LOG_BUFFER设置与变迁    关闭

  在Oracle 10g引入了自动的SGA调整之后,Oracle的内存管理变得简单了,但是很多Buffer的技术实现、管理等都发生了重大变化,这也包括LOG_BUFFER。

  在Oracle 10g之前,该参数的默认设置为Max(512 KB,128 KB * CPU_COUNT),按照默认设置,LOG_BUFFER消耗的内存都不会太高,而由于LGWR对Log Buffer内容的写出非常频繁,所以很小的Log Buffer也可以工作得很好,根据经验,有很多对Log Buffer的指导性设置,比如经常提到的3MB大小,但是在Oracle10g中,Redo Log Buffer默认的已经大大超过了原来的想象。

  这和Oracle 9i引入了Granule的概念有关,在动态SGA管理中,Granule是最小的内存分配单元,其大小与SGA及操作系统平台有关。在Oracle 10g中,Oracle的内存分配会为'Fixed SGA Size'和'Redo Buffers'共享整数倍个Granule。看看不同SGA设置下的内存分配情况:

  SQL> select * from v$version where rownum <2;

  BANNER

  ------------------------------------------------------------

  ----

  Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 -

  Prod

  SQL> select * from v$sgainfo where name in ('Fixed SGA

  Size','Redo Buffers','Granule Size');

  NAME BYTES RES

  -------------------------------- ---------- ---

  Fixed SGA Size 1267212 No

  Redo Buffers 15507456 No

  Granule Size 16777216 No

  SQL> select sum(bytes)/1024/1024 from v$sgainfo where name

  in ('Fixed SGA Size','Redo Buffers');

  SUM(BYTES)/1024/1024

  --------------------

  15.99757

  而在另外一个生产系统中,共分配了2个Granule,每个4MB。

  SQL> select * from v$sgainfo where name in

  ('Fixed SGA Size','Redo Buffers','Granule Size');

  NAME BYTES RES

  -------------------------------- ---------- ---

  Fixed SGA Size 1263320 No

  Redo Buffers 7122944 No

  Granule Size 4194304 No

  SQL> select sum(bytes)/1024/1024 from v$sgainfo

  where name in ('Fixed SGA Size','Redo Buffers');

  SUM(BYTES)/1024/1024

  --------------------

  7.99776459

  甲骨文(Oracle)重庆江北WDP中心,您身边的Oracle数据库认证专家!
标签: 暂无标签
Free

写了 22 篇文章,拥有财富 106,被 5 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P5 | 发表于 2012-12-27 10:32:48
呵呵,相老师也讲过
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈