龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle内存结构研究的相关内容介绍(1)(2)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
三、SGA设置 没有通用的设置,所有Oracle内存结构设置都要根据系统的负载、业务需求和硬件环境来进行调整。这里只是总结出大体的设定,避免因SGA设置

三、SGA设置

没有通用的设置,所有Oracle内存结构设置都要根据系统的负载、业务需求和硬件环境来进行调整。这里只是总结出大体的设定,避免因SGA设置不当引起的问题。

1,自动SGA内存管理

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

需要注意一下几点:

要使用自动SGA内存管理,STATISTICS_LEVEL参数必须设为TYPICAL或ALL,系统自动收集相应的信息用来动态调整SGA设定。

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

可动态调整的参数:

DB_CACHE_SIZE,SHARED_POOL_SIZE,LARGE_POOL_SIZE,JAVA_POOL_SIZE。

需手动设置的参数:

LOG_BUFFER,STREAMS_POOL,DB_NK_CACHE_SIZE,DB_KEEP_CACHE_SIZE,DB_RECYCLE_CACHE_SIZE。

2,手动SGA内存管理

1) 32bit和64bit限制

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

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

2) 查看Oracle版本:

  1. SQL> select * from v$version;  
  2. BANNER  
  3. Oracle Database 10g Enterprise Edition Release
     10.2.0.1.0 - Prod  
  4. PL/SQL Release 10.2.0.1.0 - Production  
  5. CORE 10.2.0.1.0 Production  
  6. TNS for 32-bit Windows: Version 10.2.0.1.0 - 
    Production  
  7. NLSRTL Version 10.2.0.1.0 – Production 

3) 各组件设置:

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

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

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

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

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

总结

32位Oracle:

1G内存:SHARED_POOL_SIZE=100MB,DB_CACHE_SIZE=0.5GB;

2G内存:SHARED_POOL_SIZE=150MB,DB_CACHE_SIZE=1.25GB;

64位Oracle

4G内存:SHARED_POOL_SIZE=200MB,DB_CACHE_SIZE=2.5GB;

8G内存:SHARED_POOL_SIZE=400MB,DB_CACHE_SIZE=5GB;

12G内存:SHARED_POOL_SIZE=500MB,DB_CACHE_SIZE=8GB

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

精彩图集

赞助商链接