日期:2014-05-16  浏览次数:20315 次

SGA PGA的设置

32bit的Oracle的SGA通常最多可使用内存 1.7G

?

经验值,对于OLTP

1G RAM SharedPool 100M, DataBuffer 500M

2G RAM SharedPool 150M, DataBuffer 1200M

?

对于64bit的Oracle,

4G RAM SharedPool 200M, DataBuffer 2500M

8G RAM SharedPool 300M, DataBuffer 5000M


?

经常被问到,在安装Oracle时SGA与PGA占总内存多少比例合适的问题。
这里给出我的一点点经验

假设主机的总物理内存是100G。

如果要部署OLTP系统,可以如下的比例进行分配:
20G -- 操作系统及其他预留
64G -- Oracle的SGA
16G -- Oracle的PGA

如果部署的是DSS或DW类型的数据库,可以适当的加大PGA的大小,可以考虑按照下面的比例进行分配:
20G -- 操作系统及其他预留
40G -- Oracle的SGA
40G -- Oracle的PGA

以上只是我在部署测试环境时一般的分配策略。具体环境要具体分析,尤其是在部署生产环境的时候,要更多的考虑到未来系统主要倾向于什么样的业务类型,对SGA及PGA的比例关系也是各不相同的,在真正上线之前一定要做最充分的“基线测试”。

还有一个小原则要记住:对于主机物理内存小于1G的,并且部署的数据库类型是专有服务器模式(Dedicated),通常Oracle的SGA内存分配不要超过总内存的一半,否则很有可能因为内存紧张导致Oracle运行过程中出现瓶颈。切记切记!

?

?

?

一、名词解释?
(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区的使用率:

Sql代码? ?收藏代码