oracle sga与pga,shmmax和oracle的sga和pga,三者之间的关系

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区的大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值