Chinaunix首页 | 论坛 | 博客
  • 博客访问: 344074
  • 博文数量: 94
  • 博客积分: 1500
  • 博客等级: 上尉
  • 技术积分: 1020
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-11 09:23
文章分类
文章存档

2011年(76)

2010年(18)

分类: Oracle

2011-01-10 21:48:31

shmmax 并不是shared memory 的最大SIZE
它指的是 单个 shared memory segment 的最大SIZE

所以,并不是说它限制了SGA的大小。换句话说,SGA的大小可以超过shmmax 的设置
如 shmmax 设为 1G
SGA可以设为 2.5G
只是造成这个instance的SGA被切成了N 块,每块都不大于 1G.
我的某个系统shmmax设为 4G
SGA为5G
SGA分成3 块attach 到 Oracle process上
[php]
ps -ef|grep pmon
1234 ……
pmap 1234
……
0000000380000000   4096K read/write/exec/shared  [ ism shmid=0xcc ]
0000040000000000 2621440K read/write/exec/shared  [ ism shmid=0x5 ]
00000400C0000000 2625536K read/write/exec/shared  [ ism shmid=0x6 ]
……
当然,由于SGA被切开了,可能导致性能会有所下降(具体不清楚有多大影响)
所以,正常情况最好shmmax 的设置要大于设计的SGA值。
PGA影响到的是*area_size
最主要是sort_area_size 和 hash_area_size

所以根据你的排序操作的多少/大小,hash_join的多少/大小来决定,当然,同时需要考虑可用内存的情况了。

PGA是可以动态调节的。

尽可以先设一个值,试运行一段,再根据v$pgastat和v$system_event里的direct path read/write sorts (disk/memory)等值再来做进一步调整。(呵呵,statspack可以帮到你很多)
 
一般地:
   在线联机事务处理:sga=80%,pga=20%
   数据仓库:sga=20%,pga=80%
 

数据库系统中,应保证有足够大的内存。在UNIX系统中,如果系统的物理内存小于1GB,可将交换区的大小设为内存的4倍,否则,可设为内存的2倍,交换区要放在磁盘速度最快的硬盘上。Oracle 的SGA区大小直接关系到数据库操作的性能,一般来说,SGA区的大小可设为系统可用内存的55%到57%,SGA区过多占用系统内存反而会降低性能。在应用系统运行中,应定期监测系统的内存使用情况,对关键应用进行分析,根据应用适时调整SGA区各部分的大小。Oracle9i可在不重新启动数据库的情况下修改SGA区的参数,实时改变SGA区的大小。

阅读(1399) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-07 14:31:56

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com