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_SIZE为512K,SORT_AREA_RETAINED_SIZE为256K,那么服务器进程最初查询数据会用512K的内存区排序数据,但排序完成后,排序去会收缩为256K,剩下的数据会被写到临时表空间中。
HASH_AREA_SIZE:服务器进程在内存中存储散列表所用的内存量。
SORT_AREA_SIZE- SORT_AREA_RETAINED_SIZE这部分内存一般从PGA中分配。
而SORT_AREA_RETAINED_SIZE会在UGA中分配。
在使用 *_area_size 参数时,需要记住以下重要的几点:
1.这些参数控制着SORT,HASH和BITMAP MERGE操作所用的最大内存量。
2.这些设置并非对会话的限制,它们只是对一个操作的限制,一个查询中可以有多个排序操作。
3.这些内存区都是根据需要来分配的,比如把排序区设置为1GB,并不是你要分配1GB的RAM,而是说Oracle进程为一个排序/散列操作最多分配1GB的内存。
自动PGA内存管理
从9i开始,又引进了一种新的方法来管理PGA内存,即自动PGA内存管理。
当自动PGA内存管理时,PGA_AGGREGATE_TARGET会控制实例为完成数据排序和散列的所有工作区共分配多少内存。
警告:
在9i版本中,若使用共享服务器模式,则无法使用自动PGA内存管理,而是使用SORT_AREA_SIZE和HASH_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内存泄露,经历1个月的时间,终于搞定该问题,对于学习ORACLE 内存泄露是一次比较好的总结。
Oracle Tuning (Oracle 性能调整)的一些总结关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比 如SGA、PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化。做好这两个方面的 优化...
oracle 的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是 SGA和 PGA(process global area or private global area)。
关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比如SGA、PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化。做好这两个方面的优化,就可以使一套完整的Oracle应用系统处于良好...
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,...10.7 总结 525
作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
12c新特性:不可见字段,DDL日志,RMAN中的表恢复和分区恢复,限制PGA的大小,对表分区维护的增强
转机今日点评优化小技巧 STATSPACK报告分析之DB Cache1优化小技巧 STATSPACK报告分析之PGA6月15日 青岛今日点评优化小技巧 如何 优化闩锁6月16日 SQL 优化效果今日点评优化小技巧 如何转储数据块优化小技巧 通过树...
深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 出 版 社:人民邮电出版社 出版时间:2009-1-1 页 数:527 内容简介 针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数... 10.7 总结
深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 出 版 社:人民邮电出版社 出版时间:2009-1-1 页 数:527 内容简介 针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数... 10.7 总结
深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 出 版 社:人民邮电出版社 出版时间:2009-1-1 页 数:527 内容简介 针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数... 10.7 总结
普及一下oracle的基础知识,总结一下,oracle 是由实例和数据库组成。结构如下: oracle数据库由实例、数据库组成: * 数据库由数据文件(包含oracle 数据、索引、表结构等数据)、控制文件(包括每个表的操作信息...
充分利用内存,优化sga、pga等(11g已经实现了sga+pga自动化,但有的时候仍然需要手动进行调整),适当的将小表keep到cache中。 4.优化sql语句 1)减少对数据库的查询次数,即减少对系统资源的请求,使用快照和显形图...
全书一共12章:第1章从系统工程的角度总结了性能问题可以分为哪些阶段去考虑、性能问题有哪些种类,以及性能改进的工程方法等;第2章详细讲解了在数据库的设计阶段如何去考虑数据库的性能问题;第3~6章从物理数据库...