现在的位置: 首页 > 综合 > 正文

Oracle 10g SGA设置

2014年02月24日 ⁄ 综合 ⁄ 共 1453字 ⁄ 字号 评论关闭

没有通用的Oracle SGA设置,那么所有Oracle SGA设置都需要根据系统的负载、相关的业务需求与某些硬件环境来对其进行调整。Oracle9i及以前版本中,只能用手动SGA内存管理,不存在参数SGA_TARGET,而且参数 SGA_MAX_SIZE只是一个上限,而不是动态目标,但10G中时SGA_TARGET设置不能超过它

1、自动SGA内存管理

Oracle 10g中引入了自动SGA内存管理特性,DBA可以设定SGA_TARGET(默认等于SGA_MAX_SIZ)告诉Oracle可用的SGA内存为多大,由Oracle根据系统负载来动态调整各组件大小,相应的数据会保存在控制文件中,即使数据库重启后也记得各组件大小。

需要注意一下几点:

要使用自动SGA内存管理,STATISTICS_LEVEL参数必须设为TYPICALALL

可以设定某个组件的值,Oracle SGA使用此值为该组件的最小大小。

可动态调整的参数:

DB_CACHE_SIZESHARED_POOL_SIZELARGE_POOL_SIZEJAVA_POOL_SIZE

需手动设置的参数:

LOG_BUFFER,STREAMS_POOL,DB_NK_CACHE_SIZE,DB_KEEP_CACHE_SIZEDB_RECYCLE_CACHE_SIZE

2、手动SGA内存管理

1) 32bit64bit限制

32位的操作系统中,Oracle最大可用内存为1.75g,也就是说SGA+PGA<=1.75g,超过这一限制的内存将不会被Oracle用到。

32位的Oracle可以装到64位的操作系统上,64位的Oracle SGA不可以装到32位的操作系统上。

2) 查看Oracle版本

SQL> select * from v$version;

3) 各组件设置:

JAVA_POOL_SIZE:如果没用到数据库端java的系统,30MB足够。

LOG_BUFFER:默认为MAX(512KB,128KB*CPU个数)。一般系统1MB足够,运行大型事务的系统可以设为2MB,让1/3满写入日志文件时可以继续写入缓冲,再大也没有意义。

SHARED_POOL_SIZE:过大过小都会严重影响系统性能,1GB内存可以设为100MB2GB内存可设为150MB4GB内存可设为300MB。共享池命中过低首先要调整的是应用程序而不是扩大共享池。使用绑定变量可以减少共享池需求、提高命中率,减少共享池管理负担和LATCH竞争。

LARGE_POOL_SIZE:使用专用服务模式可设为30MB,除非必要,不然不建议使用共享服务器模式。

DB_CACHE_SIZE:除去上述内存外其他可用内存都分配给该区域。

SGA手动设置总结

32Oracle SGA

1G内存:SHARED_POOL_SIZE=100MBDB_CACHE_SIZE=0.5GB

2G内存:SHARED_POOL_SIZE=150MBDB_CACHE_SIZE=1.25GB

64Oracle SGA

4G内存:SHARED_POOL_SIZE=200MBDB_CACHE_SIZE=2.5GB

8G内存:SHARED_POOL_SIZE=400MBDB_CACHE_SIZE=5GB

12G内存:SHARED_POOL_SIZE=500MBDB_CACHE_SIZE=8GB

以上只是避免因SGA设置不当引起问题的大体设置,需要根据具体的系统负载和业务逻辑结合StackpackAWR等工具细调。

 

抱歉!评论已关闭.