PGA

---------程序全局区 (PGA)


程序全局区 (PGA) 是包含某服务器进程的数据及控制信息的内存区。
这是 Oracle 服务器在服务器进程启动时创建的非共享内存,只有该服务器进程才能访问。
Oracle 实例的所有服务器进程分配的 PGA 总内存,也称为该实例分配的聚集 PGA 内存。
使用共享服务器时,部分 PGA 可位于 SGA 中。

PGA 内存通常包含以下各项:


专用 SQL 区  、游标和 SQL 区、工作区、会话内存

专用 SQL 区
专用 SQL 区包含绑定信息和运行时内存结构等数据。这些信息是每个会话的 SQL 语句调用所特有的;在其它方面,绑定变量有不同的值,游标的状态也不同。发出 SQL 语句的每个会话都有一个专用 SQL 区。提交同一 SQL 语句的每个用户也都有其自己的专用 SQL区,该专用 SQL 区使用一个共享 SQL 区。这样,许多专用 SQL 区可与同一个共享 SQL区关联。专用 SQL 区的位置取决于为会话建立的连接类型。

如果会话是通过专用服务器连接的,则专用 SQL 区位于该服务器进程的 PGA 中。
不过,如果会话是通过共享服务器连接的,则部分专用 SQL 区将保留在 SGA 中。


游标和 SQL 区


Oracle 预编译器程序或 OCI 程序的应用程序开发人员可以显式打开特定专用 SQL 区的游标或句柄,并在该程序的整个执行过程中将它们用作命名资源。数据库为某些 SQL 语句隐式发出的递归游标也使用共享 SQL 区。


工作作区


对于复杂查询(例如,决策支持查询),会将大部分 PGA 供内存密集型运算符分配的
工作区专用,例如:
基于排序的运算符(如 ORDER BY、GROUP BY、ROLLUP)和窗口函数
散列联接
位图合并
位图创建
批量装载操作使用的写缓冲区
排序运算符使用工作区(排序区),对一组行执行内存中排序。与此类似,散列联接运算
符使用工作区(散列区),根据其左侧输入内容生成散列表。

工作区的大小是可以控制和优化的。通常,较大的工作区可以显著改进特定运算符的性能,不过代价是消耗较多的内存。


会话内存


会话内存是用于存放会话的变量(登录信息)以及与会话相关的其它信息的内存。对于共享服务器,会话内存是共享的,而不是专用的。


----------自动 PGA 内存管理


根据 PGA_AGGREGATE_TARGET 参数,动态调整
专用于工作区的 PGA 内存量
有助于最大限度地提高所有内存密集型 SQL 操作的性能
默认情况下是启用的


理想情况下,工作区的大小只要能容纳其相关 SQL 运算符分配的输入数据和辅助内存结构就已足够。这一大小称为工作区的最佳大小。工作区大小小于最佳大小时,响应时间就会增加,因为要对部分输入数据执行额外的传输操作。


自动 PGA 内存管理功能简化并改进了 PGA 内存的分配方式。默认情况下,PGA 内存管理功能是启用的。在此模式下,Oracle 数据库以 SGA 内存大小的 20% 为基准,动态调整
专用于工作区的那部分 PGA 内存的大小。最小值为 10 MB。


在自动 PGA 内存管理模式下运行时,所有会话的工作区大小的调整都是自动的,

在任何给定时间,可用于实例中各活动工作区的 PGA 内存总量自动从
PGA_AGGREGATE_TARGET 初始化参数派生。此内存量设置为
PGA_AGGREGATE_TARGET 值减去系统其它组件分配的 PGA 内存量(例如,会话分配的
PGA 内存)。由此得到的 PGA 内存随后按照各活动工作区的特定内存需求分配给相应的工作区。


--PGA 管理资源


配置新实例时,难以确切知道 PGA_AGGREGATE_TARGET 的适当设置。该设置可以通过

以下三个阶段确定:


1.根据惯例,初步估算 PGA_AGGREGATE_TARGET。默认情况下,Oracle DB 将其设
置为 SGA 大小的 20%。不过,对于大型 DSS 系统而言,此初始设置可能太低。
2.在实例上运行典型工作量,使用 Oracle 收集到的 PGA 统计信息监视性能,查看最大 PGA 大小的配置是过低还是过高。
3.使用 Oracle PGA 建议统计信息来优化 PGA_AGGREGATE_TARGET。


为了能够向后兼容,可以通过将 PGA_AGGREGATE_TARGET 初始化参数值设置为 0,
来禁用自动 PGA 内存管理。禁用了自动 PGA 内存管理功能后,可以使用关联的
*_AREA_SIZE 参数调整工作区的最大大小。以下是这些参数的示例:

SORT_AREA_SIZE 
HASH_AREA_SIZE
BITMAP_MERGE_AREA_SIZE
  CREATE_BITMAP_AREA_SIZE


---------------使用内存指导调整 SGA 的大小


使用内存指导可以优化内存结构的大小。如果启用了自动管理共享内存功能,则可以使
用该功能优化 SGA 的总大小。如果禁用了 ASMM,则可以使用此指导来优化 SGA 的不同组件。

内存指导包括三个指导:
共享池
缓冲区高速缓存
主页---相关链接---指导中心----内存指导----共享池或缓冲区高速缓存--建议


使用内存指导调整 PGA 的大小
可使用内存指导获取有关 PGA 大小的建议。单击“PGA”选项卡,然后单击
“Advice(建议)”。

原文地址:https://www.cnblogs.com/ios9/p/7661002.html