(一)Private SQL Area
1、保存了当前会话的绑定信息以及运行时内存结构。这些信息
2、每个执行sql语句的会话,都有一个private sql area。
3、当多个用户执行相同的sql语句,此sql语句保存在一个称为shared sql area。此share sql area被指定给这些用户的private sql area。 这句话是说会从共享池中把别人的SQL拿过来!
4 专用服务器模式:private sql area位于PGA中
(二)Cursor、SQL Areas
保存游标,就在指针,设定SESSION_CACHE_CURSORS OPEN_CURSOR 参数。实际需要的空间在这里实现。
(三)Work Area
PGA的一大部分被分配给Work Area,用来执行如下操作:
a.基于操作符的排序,group by、order by、rollup和窗口函数。 参数为sort_area_size
b.hash散列连接, 参数为hash_area_size
c.位图合并,参数为bitmap_merge_area_size
d.位图创建,参数为create_bitmap_area_size
e.批量装载操作使用的写缓存
(四)Session memory
保存了会话的变量,如登录信息及其他与会话相关的信息,共享服务器模式下,Session memory是共享的。
(五)自动PGA管理
设置PGA_AGGREGATE_TARGET为非0,则启用PGA自动管理,并忽略所有*_area_size的设置。如sort_area_size,hash_area_size等。
默认为启用PGA的自动管理,Oracle根据SGA的20%来动态调整PGA中专用与Work Area部分的内存大小,最小为10MB。
用于实例中各活动工作区(work area)的PGA总量,为PGA_AGGREGATE_TARGET减去其他组件分配的PGA内存。得到的结果,按照特定需求动态分配给对应的工作区。
1)设置PGA_AGGREGATE_TARGET大小的步骤
a.设置PGA_AGGREGATE_TARGET为SGA的20%,对于DSS系统,此值可能过低。
b.运行典型的负载,通过oracle收集的pga统计信息来调整PGA_AGGREGATE_TARGET的值。
c.根据oracle的pga建议调整PGA_AGGREGATE_TARGET大小。
2)禁用自动pga管理
为向后兼容,设置PGA_AGGREGATE_TARGET为0,即禁用pga的自动管理。可使用关联的*_area_size参数调整对应工作区的最大大小。
bitmap_merge_area_size
create_bitmap_area_size
hash_area_size
sort_area_size
目前12C PGA可以指定了上限! 一般情况下不会PGA设置成手动模式,除非你的是DDS系统,需要大量的排序HASH JOIN。
请留言




