`

Oracle PGA 总结

 
阅读更多

Oracle 内存结构

 

 

PGA(Program Global Area):进程全局区

是包含一个服务器进程的数据和控制信息的私有的内存区域。

 

UGA(User Global Area):

用户全局区,就是你的会话信息。

采用专用服务器模式时,UGA会在PGA中分配。若采用共享服务器连接时,UGA会在SGA中分配。

 

手动分配PGA内存管理:

 

 

PGA受数据库初始化参数WORKAREA_SIZE_POLICY的影响,而且可以在会话级别修改。AUTO表示自动内存管理,Manual表示手动管理。

 

PGA中除了会话中PL/SQL表和其他变量分配的内存外,有些参数对PGA大小影响最大:

SORT_AREA_SIZE:用于对信息排序的RAM总量,若分配的大小不足以在内存中排序,则会用到临时表空间进行排序。

SORT_AREA_RETAINED_SIZE:排序完成后用于保存已排序的内存总量。比如SORT_AREA_SIZE512KSORT_AREA_RETAINED_SIZE256K,那么服务器进程最初查询数据会用512K的内存区排序数据,但排序完成后,排序去会收缩为256K,剩下的数据会被写到临时表空间中。

HASH_AREA_SIZE:服务器进程在内存中存储散列表所用的内存量。

 

SORT_AREA_SIZE- SORT_AREA_RETAINED_SIZE这部分内存一般从PGA中分配。

SORT_AREA_RETAINED_SIZE会在UGA中分配。

在使用 *_area_size 参数时,需要记住以下重要的几点:

1.这些参数控制着SORTHASHBITMAP MERGE操作所用的最大内存量。

2.这些设置并非对会话的限制,它们只是对一个操作的限制,一个查询中可以有多个排序操作。

3.这些内存区都是根据需要来分配的,比如把排序区设置为1GB,并不是你要分配1GBRAM,而是说Oracle进程为一个排序/散列操作最多分配1GB的内存。

 

自动PGA内存管理

 

 

9i开始,又引进了一种新的方法来管理PGA内存,即自动PGA内存管理。

当自动PGA内存管理时,PGA_AGGREGATE_TARGET会控制实例为完成数据排序和散列的所有工作区共分配多少内存。

警告:

9i版本中,若使用共享服务器模式,则无法使用自动PGA内存管理,而是使用SORT_AREA_SIZEHASH_AREA_SIZE参数来确定为各个操作分配多少RAM

 

1.PGA是一个上限目标,而不是启动数据库时预分配的内存大小。

2.串行会话会使用PAG_AGGREGATE_TARGET的很少一部分,一个排序/散列操作只会用到%5左右,但经过实际测试,Oracle为了防止磁盘的排序,排序/散列操作往往会超出%5的比例,而操作完成后,分配给当前的进程PGA内存会下降到%5

3.随着服务器上负载量的增加,分配给各个工作区的PGA内存量会减少。

4.一个并行查询最多可以使用PAG_AGGREGATE_TARGET%30,也就是说每个平行进程能使用的内存量是0.3*PGA_AGGREGATE_TARGET的量。

 

手动和自动内存管理的选择

 

默认情况下,我倾向于自动PGA内存管理。

这样,Oracle会自动根据工作负载来调整每个会话的PGA大小,用户越多,每个用户使用的RAM就越少,用户越少,每个用户能使用的RAM就越多。这就像有一位DBA整天坐在控制台前,不断根据数据库中的完成工作量来设置SORT_AREA_SZIE,HASH_AREA_SIZE参数。

 

手动内存管理适用于大型批处理作业,它们在特殊的时刻运行,例如凌晨2点要做一个大型的批处理,要完成大型的散列连接,建立索引等工作,对于这样一个作业,它应该使用机器上所有的资源,尚若如此,就应该使用alter session在你的会话中禁用自动内存管理(而不影响其他会话),并根据需要设置SORT_AREA_SZIE,HASH_AREA_SIZE参数。 

分享到:
评论

相关推荐

    PGA导致oracle内存泄露

    PGA导致oracle内存泄露,经历1个月的时间,终于搞定该问题,对于学习ORACLE 内存泄露是一次比较好的总结。

    Oracle Tuning (Oracle 性能调整)的一些总结

    Oracle Tuning (Oracle 性能调整)的一些总结关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比 如SGA、PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化。做好这两个方面的 优化...

    oracle 内存分配和调优 总结

    oracle 的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是 SGA和 PGA(process global area or private global area)。

    oracle的tuning技术总结

    关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比如SGA、PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化。做好这两个方面的优化,就可以使一套完整的Oracle应用系统处于良好...

    深入解析Oracle.DBA入门进阶与诊断案例

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,...10.7 总结 525

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    Oracle12c新特性在业务中的一些实践总结

    12c新特性:不可见字段,DDL日志,RMAN中的表恢复和分区恢复,限制PGA的大小,对表分区维护的增强

    Oracle优化日记:一个金牌DBA的故事 白鳝.扫描版

    转机今日点评优化小技巧 STATSPACK报告分析之DB Cache1优化小技巧 STATSPACK报告分析之PGA6月15日 青岛今日点评优化小技巧 如何 优化闩锁6月16日 SQL 优化效果今日点评优化小技巧 如何转储数据块优化小技巧 通过树...

    深入解析OracleDBA入门进阶与诊断案例 4/4

    深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 出 版 社:人民邮电出版社 出版时间:2009-1-1 页 数:527 内容简介  针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数... 10.7 总结

    深入解析OracleDBA入门进阶与诊断案例 3/4

    深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 出 版 社:人民邮电出版社 出版时间:2009-1-1 页 数:527 内容简介  针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数... 10.7 总结

    深入解析OracleDBA入门进阶与诊断案例 2/4

    深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 出 版 社:人民邮电出版社 出版时间:2009-1-1 页 数:527 内容简介  针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数... 10.7 总结

    oracle 数据库学习 基本结构介绍

    普及一下oracle的基础知识,总结一下,oracle 是由实例和数据库组成。结构如下: oracle数据库由实例、数据库组成: * 数据库由数据文件(包含oracle 数据、索引、表结构等数据)、控制文件(包括每个表的操作信息...

    Oracle 数据库优化实战心得总结

    充分利用内存,优化sga、pga等(11g已经实现了sga+pga自动化,但有的时候仍然需要手动进行调整),适当的将小表keep到cache中。 4.优化sql语句 1)减少对数据库的查询次数,即减少对系统资源的请求,使用快照和显形图...

    Oracle数据库性能优化的艺术 (文平) 高清PDF扫描版

    全书一共12章:第1章从系统工程的角度总结了性能问题可以分为哪些阶段去考虑、性能问题有哪些种类,以及性能改进的工程方法等;第2章详细讲解了在数据库的设计阶段如何去考虑数据库的性能问题;第3~6章从物理数据库...

Global site tag (gtag.js) - Google Analytics