Oracle9i自动PGA管理的新特性
文章作者 100test 发表时间 2007:03:14 13:50:31
来源 100Test.Com百考试题网
在oracle9i之前,pga的计算和控制都是比较复杂的事情,从oracle9i开始,oracle提供了一种sql内存管理的新方法:自动化sql执行内存管理(automated sql execution memory management),使用这个新特性,oracle可以自动调整s q l内存区,而不用关闭数据库,这一改进大大简化了dba的工作,同时也提高了oracle数据库的性能。
为实现自动的pga管理,oracle引入了几个新的初始化参数:
1.pga_aggregate_target-此参数用来指定所有session总计可以使用最大pga内存。这个参数可以被动态的更改,取值范围从10m —— (4096g-1 )bytes. 2.workarea_size_policy-此参数用于开关pga内存自动管理功能,该参数有两个选项:auto 和 manual,当设置为auto时,数据库使用oracle9i提供的自动pga管理功能,当设置为manual时,则仍然使用oracle9i前手工管理的方式。
缺省的,oracle9i中workarea_size_policy被设置为auto.
需要注意的是,在oracle9i中,pga_aggregate_target参数仅对专用服务器模式下(dedicated server)的专属连接有效,但是对共享服务器(shared server)连接无效;从oracle10g开始pga_aggregate_target对专用服务器连接和共享服务器连接同时生效。
pga_aggregate_target 参数同时限制全局pga分配和私有工作区内存分配:
1.对于串行操作,单个sql操作能够使用的pga内存按照以下原则分配:min(5% pga_aggregate_target,100mb)
2.对于并行操作30% pga_aggregate_target /dop (dop=degree of parallelism 并行度)
要理解pga的自动调整,还需要区分可调整内存(tunable memory size)与不可调整内存(untunable memory size)。可调整内存是由sql工作区使用的,其余部分是不可调整内存。
启用了自动pga调整之后, oracle仍然需要遵循以下原则:
untunable memory size tunable memory size <= pga_aggregate_target
数据库系统只能控制可调整部分的内存分配,如果可调整的部分过小,则oracle永远也不会强制启用这个等式。
另外,pga_aggregate_target参数在cbo优化器模式下,对于sql的执行计划会产生影响。oracle在评估执行计划时会根据pga_aggregate_target参数评估在sort,hash-join或bitmap操作时能够使用的最大或最小内存,从而选择最优的执行计划。
对于pga_aggregate_target参数的设置,oracle提供这样一个建议方案1.对于oltp系统pga_aggregate_target = ( * 80%) * 20% 2.对于dss系统pga_aggregate_target = ( * 80%) * 50%
也就是说,对于一个单纯的数据库服务器,通常我们需要保留20%的物理内存给操作系统使用,剩余80%可以分配给oracle使用。oracle使用的内存分为两部分sga和pga,那么pga可以占用oracle消耗总内存的20%(oltp系统)至50%(dss系统)。
这只是一个建议设置,更进一步的我们应该根据数据库的具体性能指标来调整和优化pga的使用。