PGA 内存自动管理

PGA 内存自动管理
SQL 工作区可以是自动的、全局的管理。DBA 只要设置参数 PGA_AGGREGATE_TARGET 给一个实例的 PGA 内存指定总的大小。
设置这个参数后,Oracle 将它作为一个总的全局限制值,尽量使所有 Oracle 服务进程的 PGA 内存总数不超过这个值。
在这个参数出现之前,DBA 要调整参数SORT_AREA_SIZE、 HASH_AREA_SIZE, 、 BITMAP_MERGE_AREA_SIZE 和
CREATE_BITMAP_AREA_SIZE(关于这些参数,我们会在后面介绍),使性能和 PGA 内存消耗最佳。对这些参数的调整是非常麻烦
的,因为即要考虑所有相关的操作,使工作区适合它们输入数据大小,又要使 PGA 内存不消耗过大导致系统整体性能下降。
9i 以后,通过设置了参数 PGA_AGGREGATE_TARGET,使所有会话的工作区的大小都是自动分配。同时,所有*_AREA_SIZE 参
数都会失效。在任何时候,实例中可用于工作区的 PGA 内存总数都是基于参数 PGA_AGGREGATE_TARGET 的。工作区内存总数等于
参数 PGA_AGGREGATE_TARGET 的值减去系统其他组件(如分配给会话的 PGA 内存)的内存消耗。分配给 Oracle 进程的 PGA 内存
大小是根据它们对内存的需求情况来的。
参数 WORKAREA_SIZE_POLICY 决定是否使用 PGA_AGGREGATE_TARGET 来管理 PGA 内存。它有两个值:AUTO 和 MANUAL。默认是
AUTO,即使用 PGA_AGGREGATE_TARGET 来管理 PGA 内存。其实,从参数 WORKAREA_SIZE_POLICY 的名字上可以看出,Oracle 的 PGA
内存自动管理只会调整工作区部分,而非工作区部分(固定 PGA 区)则不会受影响。
还有注意一点就是:10g 之前,PGA_AGGREGATE_TARGET 只在专用服务模式下生效。而 10g 以后,PGA 内存自动管理在专有服
务模式(Dedicated Server)和 MTS 下都有效。另外,9i 在 OpenVMS 系统上还不支持 PGA 内存自动管理,但 10g支持。
设置了 PGA_AGGREGATE_TARGET 以后,每个进程 PGA 内存的大小也是受限制的:
o<wbr> 串行操作时,每个进程可用的 PGA 内存为MIN(PGA_AGGREGATE_TARGET * 5%, _pga_max_size/2),其中隐含参数<br> _pga_max_size的默认值是200M,同样不建议修改它。<br> o<wbr> 并行操作时,并行语句可用的PGA内存为PGA_AGGREGATE_TARGET * 30% / DOP (Degree Of Parallelism 并行度) </wbr></wbr>

你可能感兴趣的:(nbsp)