日期:2014-05-16 浏览次数:20449 次
个人归纳总结:SGA 占用总数据库实例内存的30%左右,PGA占用到70%左右。
?
修改简单归纳为:
alter system set sga_max_size=XXXM from spfile;
alter system set sga_target=XXXM from spfile;
alter system set pga_aggregate_target=XXXM from spfile;
?
重启数据库。
在11GR2中修改了sga_max_size,从8G到2G没有生效。设置好PGA和SGA target参数后,oracle自动计算了sga_max_size为4G,不能低于4G.。
?
怎么修改也无法生效了。
?
?
转载自:http://log-cd.iteye.com/blog/562052
一、名词解释
(1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
(2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Library
cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)。?
共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。
(3)缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。
(4)大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境。
(5)Java池:Java Pool为Java命令的语法分析提供服务。
(6)PGA:Process Global Area是为每个连接到Oracle database的用户进程保留的内存。
二、分析与调整
(1)系统全局域:
? SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/3到1/2。
a.共享池:
查看共享SQL区的使用率:
这个使用率应该在90%以上,否则需要增加共享池的大小。
查看数据字典缓冲区的使用率:
这个使用率也应该在90%以上,否则需要增加共享池的大小。
修改共享池的大小:
b.缓冲区高速缓存:
查看数据库数据缓冲区的使用情况:
计算出来数据缓冲区的使用命中率=1-(physical reads/(db block gets+consistent gets)),这个命中率应该在90%以上,否则需要增加数据缓冲区的大小。