在Oracle9i之前,PGA的内存使用估算一直比较复杂;从Oracle 9i开始,Oracle的自动PGA管理新特性使得Oracle的内存规划得以简化。
根据Oracle的建议,Oracle最多可以使用80%的物理内存,其余20%保留给操作系统使用,在这80%的内存中,对于OLTP系统,Oracle建议分配20%给PGA使用;对于DSS系统,可以分配50%给PGA使用,再引述一下前文的等式:
·对于OLTP系统,PGA_AGGREGATE_TARGET=(*80%)*20%;
·对于DSS系统,PGA_AGGREGATE_TARGET=(*80%)*50%。
进一步归纳一下就是:
SGA+PGA *80%
也就是:
SGA_MAX_SIZE+PGA_AGGREGATE_TARGET <= *80%
现在Oracle Database 11g引入了自动内存管理,这个公式得以进一步简化:
MEMORY_TARGET <= MEMORY_MAX_TARGET <= *80%
这是一个可以参考的数值,在为Oracle规划内存使用时,我们必须清楚,如果Oracle耗用的内存过高,甚至超过了系统的物理内存,那么系统的性能就会受到严重的影响,当系统执行任务时,如果没有足够的内存,那么系统就会进行分页或交换,以完成当前活动事务。
当系统执行分页时,会将当前没有使用的信息从内存转移到硬盘上,这样就可以为当前需要内存的程序分配内存。如果频繁发生分页,系统性能就会严重降低,从而导致很多程序的执行时间变长。
当系统执行交换时,会将某些进程所分配的不活跃内存页(根据LRU算法)从内存转移到硬盘上,这样另一个活动进程就可以得到所需要的内存。交换基于系统循环时间。如果交换太过频繁,系统甚至会出现宕机。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8183550/viewspace-659605/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8183550/viewspace-659605/