oracle的log buffer,LOG_BUFFER设置与变迁
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设置与变迁
在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*fromv$versionwhererownum <2;
BANNER
------------------------------------------------------------
----
OracleDatabase10g Enterprise Edition Release 10.2.0.4.0 -
Prod
SQL>select*fromv$sgainfowherenamein('Fixed SGA
Size','Redo Buffers','GranuleSize');
NAMEBYTES RES
-------------------------------- ---------- ---
Fixed SGASize1267212No
Redo Buffers 15507456No
GranuleSize16777216No
SQL>selectsum(bytes)/1024/1024fromv$sgainfowherename
in('Fixed SGA Size','Redo Buffers');
SUM(BYTES)/1024/1024
--------------------
15.99757
而在另外一个生产系统中,共分配了2个Granule,每个4MB。SQL>select*fromv$sgainfowherenamein
('Fixed SGA Size','Redo Buffers','Granule Size');
NAMEBYTES RES
-------------------------------- ---------- ---
Fixed SGASize1263320No
Redo Buffers 7122944No
GranuleSize4194304No
SQL>selectsum(bytes)/1024/1024fromv$sgainfo
wherenamein('Fixed SGA Size','Redo Buffers');
SUM(BYTES)/1024/1024
--------------------
7.99776459
【责任编辑:董书 TEL:(010)68476606】
点赞 0
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)