Oracle SGA PGA UGA

原创 2011年01月21日 20:32:00

SGA 系统全局区(System Global Area),几乎所有进程都会访问SGA中某一个点。

PGA 进程全局区(Process Global Area),进程或者线程专属内存区,其它进程或线程不能访问,由进程或者线程本地分配,在专用模式下

       PGA内存包含UGA,PGA其它区用于排序,位图合并,以及散列

UGA 用户全局区(User Global Area),这段内存与会话相关联,共享服务模式下UGA在SGA区,专用服务器模式下UGS在SGA区

 

SGA由谁在分配?

每个进程都有一个PGA区?PGA是一段内存,这段内存供各个进程和线程用,关于排序和散列操作,会有一个工作区的概念,每一个排序都会有一个工作区。

 

 

PGA 中进UGA 内存 手动管理与自动管理:

手动管理:采用这种方法管理,需要指定如果一个特定的进程允许使用多少内存来完成排序或散列

自动管理:只需要指定在系统范围内可以使用多少内存。

 

手动内存管理相关参数:

SORT_AREA_SIZE:在信息换出磁盘之前,用于对信息排序的内存总量

SORT_AREA_RETAINED_SIZE:排序完成后用于保存已排序数据的内存总量,也就是说,如果
          SORT_AREA_SIZE 是512 KB,SORT_AREA_RETAINED_SIZE 是256 KB,那么服务器进程最初处理查
          询时会用512 KB 的内存对数据排序。等到排序完成时,排序区会“收缩”为256 KB,这256 KB
          内存中放不下的已排序数据会写出到临时表空间中。

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

          散列联结时会使用这些散列表结构,通常把一个大集合与另一个集合联结时就会用到这些结构。两个集合中较小的一
         个会散列到内存中,散列区中放不下的部分都会通过联结键存储在临时表空间中。

SORT_AREA_SIZE~SORT_AREA_ RETAINED_SIZE 这部分内存一般从PGA 分配,SORT_AREA_RETAINED_SIZE 这部分内存会在UGA 中分配

 

使用*_AREA_SIZE 参数时,需要记住以下重要的几点:
这些参数控制着SORT、HASH 和/或BITMAP MERGE 操作所用的最大内存量。一个查询可能有多个操作,这些操作可能都要使用这个内存,这样会创建多个排序/散列区。要记住,可以同时打开多个游标,每个游标都有自己的SORT_AREA_RETAINED 需求。所以,如果
把排序区大小设置为10 MB,在会话中实际上可以使用10 MB、100 MB、1 000 MB 或更多RAM。这些设置并非对会话的限制;它们只是对一个操作的限制。你的会话中,一个查询可以有多个排序,或者多个查询需要一个排序。这些内存区都是根据需要来分配的。如果像我们一样,将排序区大小设置为1 GB,这并不是说你要分配1 GB 的RAM,而只是说,你允许Oracle 进程为一个排序/散列操作最多分配1 GB
的内存。

 

一般地,随着在一个数据库上运行类似应用的用户数的增加,排序/散列所用的内存量也会线性增长。如果有10 个并发用户,排序区大小为1 MB,这就会使用10 MB 的内存,100 个并发用户可能使用100 MB,1 000 个并发用户则可能使用1 000MB,依此类推。

 

内存控制:根据上一条,手动分配很难保证Oracle 实例“合法”地使用内存,甚至不可能保证。你不能控制实例要用的内存量,因为你根本无从控制会发生多少并发的排序/散列。很有可能要使用的实际内存(真正的物理空闲内存)过多,而机器上并没有这么多可用内存。

 

 

自动管理

 

,理论上讲,如果一台机器有2 GB 的物理内存,可以分配768 MB 内存给SGA,768 MB内存分配给PGA,余下的512 MB 内存留给操作系统和其他进程。

 

 WORK_SIZE_POLICY:这个参数可设置为MANUAL或者AUTO,如果是MANUAL,会使用排列区和散列区大小参数来控制分配内存量;如果是AUTO,分配的内存量会根据数据库中当前工作负载而变化。默认为AUTO,推荐使用AUTO

 

PGA_AGGREGATE_TARGET:这个参数会控制实例为完成排序,散列的所有工作区总共应分配多少内存,

 

 

oracle 的SGA与PGA分析

Oracle 的SGA与PGA的详细分析
  • Ezitai
  • Ezitai
  • 2016年12月08日 10:07
  • 1576

PGA与SGA的区别,PGA的功能介绍

当用户进程连接到数据库并创建一个对应的会话时,Oracle服务进程会为这个用户专门设置一个PGA区,用来存储这个用户会话的相关内容。当 这个用户会话终止时,数据库系统会自动释放这个PAG区所占用的内...
  • u012298337
  • u012298337
  • 2013年10月22日 11:13
  • 1945

sql语句脚本之查询PGA,sga等命中率

PGA,sga命中sql查询 经常忘记,记录这里,以便备查: PGA的内存命中: SELECT name profile,cnt,decode( total, 0, 0, rou...
  • haiross
  • haiross
  • 2014年12月31日 15:09
  • 2009

Oracle如何调整SGA和PGA的大小

Oracle 10G开始支持使用SGA_TARGET参数进行SGA自动,Oracle可自动调节共享池和数据缓冲池的大小,以下是OS:RH AS4 U7 64bit环境 Oracle 10.2.0.1版...
  • counterm
  • counterm
  • 2012年11月07日 17:43
  • 6194

Oracle11g修改SGA和PGA ORA-00845

修改步骤 [oracle@ywqdb ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon Apr 1...
  • Zha_PenFee
  • Zha_PenFee
  • 2016年04月21日 23:01
  • 481

13.oracle的dump理解十二 dump heap

13.oracle的dump理解十二 dump heap 欢迎转载,转载请标明出处: 这个用的较多的是DUMPSGA的HEAP来查看空闲的哈希链和LRU链。使用时候容易将系统HANG住,可能导致在几分...
  • notbaron
  • notbaron
  • 2016年04月29日 22:18
  • 30387

查看oracle系统临时表空间、undo表空间、SGA和PGA大小

查看系统临时表空间使用情况: SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,  USED_SPACE "USED_...
  • jojojojo2002
  • jojojojo2002
  • 2015年04月02日 12:42
  • 1653

Oracle11g MEMORY(SGA+PGA)的自动管理

1、查看spfile位置 show parameter spfile;   2、备份spfile  create pfile='/oracle/PID/bak/spfileECP.ora 'from...
  • xiegh2014
  • xiegh2014
  • 2015年07月08日 11:39
  • 1777

oracle12c新特性(9)--限制PGA的大小

ALTER SYSTEM SET PGA_AGGREGATE_LIMIT 一般不大于系统的40%,或者就是系统总的内存减去sga后,剩余部分的一般不大于120%。 pga_aggregate_t...
  • seeyouc
  • seeyouc
  • 2016年11月29日 18:26
  • 675

Oracle之内存结构(SGA、PGA)

转自:http://blog.itpub.net/25264937/viewspace-694917/ 一、内存结构 SGA(System Global Area):由所有服务进程和后台进程共享...
  • jinzhilong580231
  • jinzhilong580231
  • 2015年06月01日 22:10
  • 3481
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle SGA PGA UGA
举报原因:
原因补充:

(最多只允许输入30个字)