当用户进程连接到数据库并创建一个对应的会话时,Oracle服务进程会为这个用户专门设置一个PGA区,用来存储这个用户会话的相关内容。当这个用户会话终止时,系统会自动释放这个PGA区所占用的内存。这个PGA区对于数据库的性能有比较大的影响,特别是对于排序操作的性能。所以,在必要的时候合理管理PGA区,能够在很大程度上提高数据库的性能。

  一、 PGA与SGA的区别。

  PGA(程序缓存区)与SGA (系统全局区)类似,都是Oracle数据库系统为会话在服务器内存中分配的区域。不过两者的作用不同,共享程度也不同。
       SGA 系统全局区,顾名思义,是对系统内的所有进程都是共享的。当多个用户同时连接到一个例程时,所有的用户进程、服务进程都可以共享使用这个SGA区。为此这个SGA的主要用途就是为不同用户之间的进程与服务进程提供一个交流的平台。除了这个作用,另外有一个重要的作用就是各种数据库的操作主要就是在这个SGA区内完成。
  而PGA程序缓冲区,则主要是为了某个用户进程所服务的。这个内存区不是共享的,只有这个用户的服务进程本身才能够访问它自己的PGA区。做个形象的比喻,SGA就好像是操作系统上的一个共享文件夹,不同用户可以以此为平台进行数据方面的交流。而PGA就好像是操作系统上的一个私有文件夹,只有这个文件夹的所有者才能够进行访问,其他用户都不能够访问。虽然程序缓存区不向其他用户的进程开放,但是这个内存区仍然肩负着一些重要的使命,如数据排序、权限控制等等都离不开这个内存区。

  二、 为排序设置合理的排序区大小。

  当用户需要对某些数据进行排序时,数据库是如何处理的呢?首先,数据库系统会将需要排序的数据保存到PGA程序缓存区中的一个排序区内。然后再在这个排序区内对这些数据进行排序。如需要排序的数据有2M,那么排序区内必须至少要有2M的空间来容纳这些数据。然后排序过程中又需要有2M的空间来保存排序后的数据。由于系统从内存中读取数据比从硬盘中读取数据的速度要快几千倍,为此如果这个数据排序与读取的操作都能够在内存中完成,无疑可以在很大程度上提高数据库排序与访问的性能。如果这个排序的操作都能够在内存中完成,显然这是很理想的。但是如果PGA区中的排序区容量不够,不能够容纳排序后的数据,那会如何呢?此时,系统会从硬盘中获取一个空间,用来保存这需要排序的数据。此时排序的效率就会降低许多。为此在数据库管理中,如果发现用户的很多操作都需要用到排序,那么为用户设置比较大的排序区,可以提高用户访问数据的效率。
  在Oracle数据库中,这个排序区主要用来存放排序操作产生的临时数据。一般来说,这个排序区的大小占据PGA程序缓存区的大部分空间,这是影响PGA区大小的主要因素。在小型应用中,数据库管理员可以直接采用其默认的值。但是在一些大型的应用中,或者需要进行大量记录排序操作的数据库系统中,管理员可能需要手工调整这个排序区的大小,以提高排序的性能。如果系统管理员需要调整这个排序区大小的话,需要通过初始化参数SORT_AREA_SIZE来实现。为了提高数据访问与排序的性能,数据库系统利用内存比硬盘要快几千倍的事实,会将准备排序的数据临时存放到这个排序区,并在排序区内完成数据的排序。管理员需要牢记这个原则,并在适当的情况下调整排序区的大小,以提高数据访问与数据排序的性能。

  三、 会话区保存着用户的权限等重要信息。

  在程序缓存区内还包含着一个会话区。虽然绝大部分情况下,管理员不要维护这个会话区,可以让数据库系统进行维护。但是,管理员还是需要了解一下这个会话区的作用。因为这个会话区直接关系着数据库系统中数据的安全性。数据库系统不仅是存放数据的一个很好的载体,而且还提供了一个统一管理数据的平台,可以根据实际需要,为不同的用户设置不同的访问权限。简单的说,在数据库中可以控制用户可以访问哪些数据,从而提高数据的安全性。
  当用户进程与数据库建立会话时,系统会将这个用户的相关权限查询出来,然后保存在这个会话区内。如此的话,用户进程在访问数据时,系统就会核对会话区内的用户权限信息,看看其是否具有相关的访问权限。由于系统将这个用户的权限信息存放在内存上,所以其核对用户权限的速度非常的快。因为系统不用再去硬盘中读取数据,直接从内存中读取。而从内存读取数据的效率要比硬盘上快几千倍。
  通常情况下,这个会话区内保存了会话所具有的权限、角色、性能统计等信息。这个会话区一般都是由数据库进行自我维护的,系统管理员不用干预。

四、 堆栈区保存变量信息。

  有时候为了提高SQL语句的重用性,会在语句中使用绑定变量。简单的说,就是SQL语句可以接受用户传入的变量。从而用户只需要输入不同的变量值,就可以满足不同的查询需求。如现在用户需要查询所有员工的信息。然后其又要查询所有工龄在3年以上的员工等等。此时其实他们采用的是同一个SQL语句,只是传递给系统的变量不同而已。这可以在很大程度上降低数据库开发的工作量。这个变量在Oracle数据库系统中就叫做绑定变量。利用绑定变量可以加强与用户的互动性。另外在这个堆栈区内还保存着会话变量、SQL语句运行时的内存结构等重要的信息。
  通常情况下,这个堆栈区跟上面讲到的会话区一样,都可以让数据库系统进行自我维护,而管理员不用参与到其中。这些分区的大小,也是系统根据实际情况来进行自动分配的。当这个用户会话结束时,系统会自动释放这些区所占用的空间。

  五、 游标区。

  无论是SQLServer数据库还是Oracle数据库中,有时候都需要用到游标技术。当运行使用游标的语句时,Oracle数据库系统会在程序缓存区中间为其分配一块区域。这块区域就叫做游标区。通常情况下,游标用来完成一些比较特殊的功能。而且一般来说,采用游标的语句要比其他语句的执行效率低一点。为此管理员在使用游标的时候,还是需要慎重。
  游标区是一个动态的区域。当用户执行游标语句时,系统就会在这个游标区内创建一个区域。当关闭游标时,这个区域就会被释放。这创建与释放,需要站用一定的系统资源,花费一定的时间。为此在使用游标时,如果频繁的打开和关闭游标,就会降低语句的执行性能。所以笔者建议,在写语句时,如果真的有必要使用游标技术时,则要注意游标不要频繁的打开和关闭。
  另外在Oracle数据库中,还可以通过限制游标的数量来提高数据库的性能。如在数据库系统中有一个初始化参数OPEN_CURSORS。管理员可以根据实际的需要,来设置这个参数,控制用户能够同时打开游标的数目。不过需要注意的是,在确实需要才有游标的情况下,如果硬件资源能够支持的话,那么就需要放宽这个限制。这可以避免用户进程频繁的打开和关闭游标。因为频繁的打开和关闭游标这对游标的操作是不利的,会影响数据库的性能。
  从以上的分析中可以看出,程序全局区主要包含排序区、会话区、堆栈区和游标区四个部分的内容,他们各司其职,完成用户进程与数据库之间的会话。通常情况下,系统管理员主要关注的是排序区,在必要时需要手工调整这个排序区的大小。另外需要主要的是,游标区是一个动态的区域,在游标打开时创建,关闭时释放。故在数据库开发时,不要频繁的打开和关闭游标可以提高游标操作的效率,改善数据库的性能。其他分区的内容管理员只需要了解其用途,日常的维护交给数据库系统来完成即可。

Oracle 10g数据库中需要设置workarea_size_policy为AUTO,并设置pga_aggregate_target参数来实现PGA的内存管理。接下来我们就来介绍这一设置过程的实现。首先看看如下代码:

  1. SQL> show parameter pga
  2. NAME                                 TYPE        VALUE
  3. ------------------------------------ ----------- ------------------------------
  4. pga_aggregate_target                 big integer 169M
  5. SQL> show parameter workarea
  6. NAME                                 TYPE        VALUE
  7. ------------------------------------ ----------- ------------------------------
  8. workarea_size_policy                 string      AUTO
  9. SQL> show parameter pga
  10. NAME                                 TYPE           VALUE
  11. ------------------------------------ ----------- ------------------------------
  12. pga_aggregate_target big  integer           169M
  13. SQL> show parameter workarea
  14. NAME                                TYPE            VALUE
  15. ------------------------------------ ----------- ------------------------------
  16. workarea_size_policy         string            AUTO

pga_aggregate_target参数可以根据经验值进行设置,评估PGA的简单方法可以查看AWR报告中的PGA命中率(PGA Cache Hit%),以及分析direct path read temp和direct path write temp等待事件是否比较高,这些等待表示PGA设置参数有限而导致大量临时表空间操作出现的等待事件。当然还有复杂的评估PGA的方法,以后再看吧。

注意,9I的shared server连接需要明确设置SORT_AREA_SIZE 和 HASH_AREA_SIZE,也就是说不能用自动管理模式。10G则无此限制。

PGA_AGGREGATE_TARGET是一个上限(理论上的最大值,PL/SQL就很容易超过),ORACLE启动时并不分配那么多,你甚至可以设置大于物理MEM的大小(生产库不要这么做呀,要设置pga_aggregate_target+sga<MEM ,别挑战ORACLE的极限)。一个SESSION可能有多个sort,hash的workarea,每一个workarea最多会用到5%或100M(由两个隐藏参数控制),因此如果预计每个sort,hash的workarea是5M,应该设置PGA_AGGREGATE_TARGET成100M。但是,随着用户的增加或工作量的增大,给每个workarea的容量可能会减少,因为有总量PGA_AGGREGATE_TARGET的限制,比如需要100个workarea,那么每个只能分配到1M。

parallel query会用到最多30%(由隐藏参数控制)的PGA_AGGREGATE_TARGET,每一个parallel query的PIECE会分配相应的30%,也就是parallel query可能会用到30M,10个PARALLEL,那么每个用3M。这也就是建议用auto管理的原因,一个系统通常workload,session是随时间变化的,早上可能3个用户,中午可能300个用户,所以用固定sort,hash的参数是不合时宜的.自动管理才可以实现在用户并发少的时候分配更多的内存,在并发多的时候照顾大众,分配少的内存。ORACLE 9.2以后有了PGA advisory。这一段中所说的5%,30%不知是否正确,没有时间看oracle文档,在此提醒一下自己。

v$pgastat:

  1. SQL> set pagesize 200
  2. SQL> select name||' '|| to_char(decode( unit,
  3. 'bytes', value/1024/1024,
  4. value ),'999,999,999.9')||' '||
  5. decode( unit, 'bytes', 'mbytes', unit
  6. from v$pgastat;
  7. NAME||''||TO_CHAR(DECODE(UNIT,'BYTES',VALUE/1024/1024,VALUE),'999,999,999.9')||''||DECODE(UN
  8. --------------------------------------------------------------------------------------------
  9. aggregate PGA target parameter 169.0 mbytes
  10. aggregate PGA auto target 124.3 mbytes
  11. global memory bound 33.8 mbytes
  12. total PGA inuse 30.9 mbytes
  13. total PGA allocated 65.4 mbytes
  14. maximum PGA allocated 82.2 mbytes
  15. total freeable PGA memory .0 mbytes
  16. process count 24.0
  17. max processes count 33.0
  18. PGA memory freed back to OS .0 mbytes
  19. total PGA used for auto workareas .0 mbytes
  20. maximum PGA used for auto workareas .6 mbytes
  21. total PGA used for manual workareas .0 mbytes
  22. maximum PGA used for manual workareas .0 mbytes
  23. over allocation count .0
  24. bytes processed 23.5 mbytes
  25. extra bytes read/written .0 mbytes
  26. cache hit percentage 100.0 percent
  27. recompute count (total) 817.0

几个重要参数的说明:

aggregate PGA target parameter  设置的pga的目标参数值。

aggregate PGA auto target 在自动管理模式下,oracle工作区可使用的pga。

total PGA inuse 当前实例使用的pga。

total PGA allocated  当前实例实际分配的pga。

maximum PGA allocated 可分配的最大pga。

over allocation count ORACLE分配的PGA超过pga_aggregate_target的次数.这个参数可以判断pga_aggregate_target是否设置的太小。

cache hit percentage 自从instance启动后的PGA命中率,如果所有的操作都在MEM中进行没有在TEMP里运行的话应该是100%。

1、PGA是什么,包括哪些部分,PGA的作用?
  PGA是特定于进程的一段内存,是一个操作系统进程或线程专用的内存,不允许系统中的其它进程或线程访问,独立于SGA是server process的私有空间。
  PGA包括非工作区和工作区。工作区在PGA内存中所占的比重很大,但PGA内存中并非只有工作区。PGA内存分配涉及很多方面,其中只有工作区在instance的控制之下。非工作区内存的大小不受任何参数的控制(连接进程(server process)所占的PGA内存,后台进程(background process)所占的PGA内存)
  PGA的作用:
    ①私有SQL区域:存储server process执行SQL所需要的私有数据和控制结构,包括固定区域和运行时区域。
    ②会话空间:存放logon信息等会话相关的控制信息
    ③SQL工作区:排序操作(order by/group by/distinct/union等),多表hash连接,位图连接,创建位图
   
2、pga_aggregate_target参数如何设置?
  “理论上” pga_aggregate_target参数用来控制instance使用PGA内存的总量,instance尽力保持在pga_aggregate_target限制以内,但如果实在无法保证,它也不会停处理,只是要求超过这个阈值。实际上这个pga_aggregate_target参数是控制工作区的排序操作(order by/group by/distinct/union等),多表hash连接,位图连接,创建位图。pga_aggregate_target参数不能算是一个硬性限制,而更应该算是一个请求!!!

3、Oracle中观察PGA,可以从工作区(排序、HASH连接、位图)、Cache  Cursor、批量读取缓存(arraysize)等几方面做测试,
大家可以动动手?
sys@OCM> select c.sid,spid,pid,a.serial# 
  2  from (select sid from v$mystat where rownum<=1) c,v$session a,v$process b 
  3  where c.sid=a.sid and a.paddr=b.addr;
       SID SPID                            PID    SERIAL#
---------- ------------------------ ---------- ----------
       125 4572                             17          7
sys@OCM> select pga_max_mem/1024,pga_alloc_mem/1024,pga_used_mem/1024,program
  2  from v$process where spid= 4572
  3  order by pga_used_mem,pga_max_mem;
PGA_MAX_MEM/1024 PGA_ALLOC_MEM/1024 PGA_USED_MEM/1024 PROGRAM
---------------- ------------------ ----------------- -------------------------
      1446.34766         1446.34766        1015.76563 oracle@ocm (TNS V1-V3)

sys@OCM> select count(*) from v$open_cursor where sid=125;
  COUNT(*)
----------
        12

(1)、Cache  Cursor(非工作区)
 实验:缓存游标:session_cached_cursors
 sys@OCM> alter system set session_cached_cursors=200  scope=spfile;
System altered.
sys@OCM> declare
  2      msql varchar2(500);
  3      mcur number;
  4      mstat number;
  5      jg varchar2(4000);
  6      cg number;
  7  begin
  8     mcur:=dbms_sql.open_cursor;
  9   for i in 1..500 loop
10     for j in 1..10 loop 
11       msql:='select id from t1 where id='||i;
12       dbms_sql.parse(mcur,msql,dbms_sql.native);
13       mstat:=dbms_sql.execute(mcur);
14      end loop;
15    end loop;
16  end;
17  /

PL/SQL procedure successfully completed.
sys@OCM> select pga_max_mem/1024,pga_alloc_mem/1024,pga_used_mem/1024,program
  2    from v$process where spid= 4572
  3   order by pga_used_mem,pga_max_mem;
PGA_MAX_MEM/1024 PGA_ALLOC_MEM/1024 PGA_USED_MEM/1024 PROGRAM
---------------- ------------------ ----------------- ------------------------------------------------
      1510.34766         1510.34766         987.28125 oracle@ocm (TNS V1-V3)
(2)、批量读取缓存arraysize(非工作区) ----留给大家动作实验
 实验:缓存结果集:arraysize
 set arraysize 5000;
 set autot traceonly;
 select * from t2;--观察逻辑读
(3)、工作区(排序、HASH连接、位图)--留给大家动作实验
 实验:工作区pga_aggregate_target
 alter system set pga_aggregate_target=500M;
 select * from t1 a,t1 b order by 1,2,3;
 _smm_max_size
 _pga_max_size 
  拿_pga_max_size计算出_smm_max_size,以_smm_max_size作为一个进程的最大内存。。。

4、ORA-4030错误的可能原因?  
(1)PGA设置过大,导致物理内存耗尽
(2)操作系统内存限制设置不合理
(3)程序中分配内存部分出现死循环
(4)分配对象后没有释放

5、PGA手工管理下的优化要点?
(1)需要手工设置一系列参数
     sort_area_size           --每个会话可以用于内存排序的空间最大值
     hash_area_size     --每个会话可以用于hash连接的内存空间最大值
     bitmap_merge_area_size --每个会话使用位图合并连接时的内存工作区域的最大值
     create_bitmap_area_size --每个会话创建位图时可以使用的内存工作区域的最大值
     sort_area_retained_size 
(2)WORKAREA_SIZE_POLICY参数  --manual
(3)设置适当的*_area_size
(4)DBA容易忽略sort_area_size以外的参数
(5)SORT_AREA_RETAINED_SIZE不宜设置过小
(6)注意ORA-4030,加强物理内存监控  ---*_area_size设的太大(process*sort_area_size)
(7)参数设置考虑大多数会话的情况,特殊需要在会话级修改*_area_size等参数
6、如何监控PGA?
sys@OCM> col PROGRAM for a25
sys@OCM> col spid for 9999
sys@OCM> set linesize 1000
sys@OCM> select program,spid,PGA_USED_MEM/1024 PGA_USED,PGA_ALLOC_MEM/1024 PGA_ALLOC,PGA_FREEABLE_MEM/1024   
PGA_FREE,PGA_MAX_MEM/1024 PGA_MAX
  2  from V$PROCESS order by PGA_USED;
PROGRAM                   SPID                       PGA_USED  PGA_ALLOC   PGA_FREE    PGA_MAX
------------------------- ------------------------ ---------- ---------- ---------- ----------
PSEUDO                                                      0          0          0          0
oracle@ocm (J001)         4592                     566.832031 726.152344          0 726.152344
oracle@ocm (VKTM)         4428                     568.824219 726.152344          0 726.152344
oracle@ocm (SMCO)         4562                     568.824219 726.152344          0 726.152344
oracle@ocm (MMAN)         4442                     571.824219 726.152344          0 726.152344
oracle@ocm (PSP0)         4438                     571.824219 726.152344          0 726.152344
oracle@ocm (PMON)         4426                     572.617188 726.152344          0 726.152344
oracle@ocm (QMNC)         4475                     572.933594 726.152344          0 726.152344
oracle@ocm (DIAG)         4434                     574.898438 726.152344          0 726.152344
oracle@ocm (GEN0)         4432                     575.601563 726.152344          0 726.152344
oracle@ocm (MMNL)         4456                     577.464844 726.152344          0 726.152344
oracle@ocm (J000)         4590                     603.964844 1110.15234          0 1110.15234
oracle@ocm (CKPT)         4448                     619.039063 941.890625          0 941.890625
oracle@ocm (DBRM)         4436                     654.683594 790.152344          0 790.152344
oracle@ocm (W000)         4564                     673.398438 854.152344          0 854.152344
oracle@ocm (RECO)         4452                     709.132813 854.152344          0 854.152344
oracle@ocm (SMON)         4450                     897.902344 4502.15234       1280 4502.15234
oracle@ocm (Q000)         4494                     972.878906 1238.15234          0 1238.15234
oracle@ocm (TNS V1-V3)    4572                     1015.76563 1254.34766          0 1254.34766
oracle@ocm (DIA0)         4440                     1016.98047 1285.52344         64 1285.52344
oracle@ocm (CJQ0)         4492                     1120.46094 4886.15234       3584 4886.15234
oracle@ocm (MMON)         4454                     1522.73438 3597.62109       1856 3597.62109
oracle@ocm (Q001)         4496                     3015.19922 3525.52344         64 3525.52344
oracle@ocm (DBW0)         4444                        4373.25 4710.21484          0 4710.21484
oracle@ocm (ARC2)         4468                     10899.6836 11734.1523          0 11734.1523
oracle@ocm (ARC1)         4466                     10899.6836 11734.1523          0 11734.1523
oracle@ocm (ARC0)         4464                     10899.6836 11734.1523          0 11734.1523
oracle@ocm (ARC3)         4470                     10899.6836 11734.1523          0 11734.1523
oracle@ocm (LGWR)         4446                     10927.3203 11734.1523          0 11734.1523
sys@OCM> select * from v$sysstat where name like '%uga%';
STATISTIC# NAME                                                                  CLASS      VALUE    STAT_ID
---------- ---------------------------------------------------------------- ---------- ---------- ----------
        25 session uga memory                                                        1 9.0205E+10 1856888586
        26 session uga memory max                                                    1   52221512 3840343119
sys@OCM> select * from v$sysstat where name like 'session%ga%';
STATISTIC# NAME                                                                  CLASS      VALUE    STAT_ID
---------- ---------------------------------------------------------------- ---------- ---------- ----------
        25 session uga memory                                                        1 9.0205E+10 1856888586
        26 session uga memory max                                                    1   52221512 3840343119
        31 session pga memory                                                        1  117045528 4148600571
        32 session pga memory max                                                    1  130611480  507777907
sys@OCM>  select * from X$KSMPP order by KSMCHPTR;
ADDR           INDX    INST_ID KSMCHCOM         KSMCHPTR   KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR
-------- ---------- ---------- ---------------- -------- ---------- -------- ---------- --------
00B41EBC         57          1 free memory      0023A040         20 free              0 00
00B41EF4         56          1 dbgdInitEventGr  0023A054         48 freeabl           0 00
00B41F2C         55          1 diag pga         0023A084       8224 freeabl           0 00BAC604
00B41E4C         59          1 diag pga         0023C0C4       3292 freeabl           0 00BAC604
00B41E84         58          1 diag pga         0023CDA0       5000 freeabl           0 00BAC604
00B41DDC         61          1 diag pga         0023E148       4148 freeabl           0 00BAC604
00B41E14         60          1 diag pga         0023F17C       4144 freeabl           0 00BAC604
00B41D6C         63          1 diag pga         002401CC        724 freeabl           0 00BAC604
00B41DA4         62          1 diag pga         002404A0       7568 freeabl           0 00BAC604
00B41CFC         65          1 diag pga         00242250        724 freeabl           0 00BAC604
00B41D34         64          1 diag pga         00242524       7568 freeabl           0 00BAC604
00B41C8C         67          1 diag pga         002442D4       4148 freeabl           0 00BAC604
00B41CC4         66          1 diag pga         00245308       4144 freeabl           0 00BAC604
00B41ACC         75          1 permanent memor  00246358       3604 perm              0 00
00B41B04         74          1 Alloc environm   0024716C       2028 freeabl           0 022643B8
00B41B3C         73          1 kopolal void     00247958        552 freeabl           0 00
00B41B74         72          1 kopolal void     00247B80        308 freeabl           0 00
00B41BAC         71          1 kopolal void     00247CB4        220 freeabl           0 00
00B41BE4         70          1 kopolal void     00247D90        552 freeabl           0 00
00B41C1C         69          1 kopolal void     00247FB8        900 freeabl           0 00
00B41C54         68          1 sdbgrf: iosb     0024833C        128 freeabl           0 00
00B40998         18          1 permanent memor  0038F040      51216 perm              0 00
00B407D8         26          1 permanent memor  0039B870       1656 perm              0 00
00B40810         25          1 permanent memor  0039BEE8         44 perm              0 00
00B40848         24          1 free memory      0039BF14         20 free              0 00
00B40880         23          1 koh-kghu call h  0039BF28         36 freeabl           0 00
00B408B8         22          1 krbabrPgaReqCtx  0039BF4C         32 freeabl           0 00
00B408F0         21          1 krbabrPgaReqMsg  0039BF6C        292 freeabl           0 00
00B40928         20          1 kjztprq struct   0039C090       2068 freeabl           0 00
00B40960         19          1 KSFQ heap        0039C8A4       4144 recr           4095 0226C718
00B4197C         81          1 PLS PGA hp       00950010       2040 freeabl           0 022703E0
00B419B4         80          1 Alloc environm   00950808       8252 freeabl           0 022643B8
00B419EC         79          1 Alloc environm   00952844       8252 freeabl           0 022643B8
00B41A24         78          1 Alloc environm   00954880       4164 freeabl           0 022643B8
00B41A5C         77          1 Alloc environm   009558C4       8396 freeabl           0 022643B8
00B41A94         76          1 Fixed Uga        00957990      34416 freeabl           0 00
00B4182C         87          1 permanent memor  00990010      34680 perm              0 00
00B41864         86          1 free memory      00998788       8920 free              0 00
00B4189C         85          1 koh-kghu call h  0099AA60       1292 freeabl           0 00
00B418D4         84          1 PLS PGA hp       0099AF6C       8224 freeabl           0 022703E0
00B4190C         83          1 PLS PGA hp       0099CF8C       8240 recr           4095 022703E0
00B41944         82          1 Alloc environm   0099EFBC       4164 freeabl           0 022643B8
00B421CC         43          1 permanent memor  00C0B040       8036 perm              0 00
00B42204         42          1 permanent memor  00C0CFA4        208 perm              0 00
00B40490         41          1 krbrpcact        00C0D074         48 freeabl           0 00
00B42194         44          1 permanent memor  00C0D0C4      20496 perm              0 00
00B42124         46          1 permanent memor  00C120F4       7340 perm              0 00
00B4215C         45          1 peshm.c:Proces   00C13DA0        952 recr           4095 00C13D2C
00B4207C         49          1 permanent memor  00C14178       2920 perm              0 00
00B420B4         48          1 diag pga         00C14CE0       1228 freeabl           0 00BAC604
00B420EC         47          1 peshm.c:Proces   00C151AC       4144 freeabl           0 00C13D2C
00B4200C         51          1 permanent memor  00C161FC       7584 perm              0 00
00B42044         50          1 diag pga         00C17F9C        708 freeabl           0 00BAC604
00B41F64         54          1 diag pga         00C18280       1380 recr           4095 00BAC604
00B41F9C         53          1 kews sqlstat st  00C187E4       1812 freeabl           0 00
00B41FD4         52          1 KFK_IO_SUBHEAP   00C18EF8       5100 recr           4095 00C1714C
00B40CA8          4          1 permanent memor  02262458         56 perm              0 00
00B40CE0          3          1 Alloc environm   02262490       4108 freeabl           0 022643B8
00B40D18          2          1 Alloc environm   0226349C       2496 recr           4095 022643B8
00B40D50          1          1 kpuinit env han  02263E5C       1540 freeabl           0 00
00B40D88          0          1 allocate kzthsm  02264460         76 freeabl           0 00
00B40C00          7          1 external name    022644CC         20 freeabl           0 00
00B40C38          6          1 kzsna:login nam  022644E0         20 freeabl           0 00
00B40C70          5          1 Alloc environm   022644F4       8252 freeabl           0 022643B8
00B40BC8          8          1 kgh stack        02266550      17012 freeabl           0 00
00B40A40         15          1 permanent memor  0226A7E4       1376 perm              0 00
00B40A78         14          1 permanent memor  0226AD44       4648 perm              0 00
00B40AB0         13          1 permanent memor  0226BF6C       1800 perm              0 00
00B40AE8         12          1 KJZT context     0226C674         60 freeabl           0 00
00B40B20         11          1 KSZ pga subheap  0226C6B0         92 freeabl           0 00
00B40B58         10          1 KSFQ heap descr  0226C70C         92 freeabl           0 00
00B40B90          9          1 KGNFS pcontext   0226C768        224 freeabl           0 00
00B409D0         17          1 permanent memor  0226C868       8272 perm              0 00
00B40A08         16          1 free memory      0226E8B8         20 free              0 00
00B404C8         40          1 permanent memor  0226E8EC       3224 perm              0 00
00B40500         39          1 permanent memor  0226F584       2016 perm              0 00
00B40538         38          1 permanent memor  0226FD64       1184 perm              0 00
00B40570         37          1 skgfzctx         02270204         40 freeabl           0 00
00B405A8         36          1 KFIO PGA struct  0227022C         88 freeabl           0 00
00B405E0         35          1 skgfzctx         02270284         40 freeabl           0 00
00B40618         34          1 joxp heap        022702AC        296 freeabl           0 00
00B40650         33          1 PLS cca hp desc  022703D4        200 freeabl           0 00
00B40688         32          1 regheapd_kdlwpg  0227049C         92 freeabl           0 00
00B406C0         31          1 iovecheapd_kdlw  022704F8        128 freeabl           0 00
00B406F8         30          1 bcheapd_kdlwpga  02270578        164 freeabl           0 00
00B40730         29          1 sioheapd_kdlwpg  0227061C        116 freeabl           0 00
00B40768         28          1 KCFIS APPL FDS   02270690        412 freeabl           0 00
00B407A0         27          1 krbabrPgaRespMs  0227082C        292 freeabl           0 00
sys@OCM> select * from v$pgastat;
NAME                                                                  VALUE UNIT
---------------------------------------------------------------- ---------- ------------
aggregate PGA target parameter                                    113246208 bytes
aggregate PGA auto target                                          30670848 bytes
global memory bound                                                22648832 bytes
total PGA inuse                                                    79166464 bytes
total PGA allocated                                                98160640 bytes
maximum PGA allocated                                             108169216 bytes
total freeable PGA memory                                           7012352 bytes
process count                                                            29
max processes count                                                      34
PGA memory freed back to OS                                        19857408 bytes
total PGA used for auto workareas                                         0 bytes
maximum PGA used for auto workareas                                 3121152 bytes
total PGA used for manual workareas                                       0 bytes
maximum PGA used for manual workareas                                     0 bytes
over allocation count                                                     0
bytes processed                                                    25147392 bytes
extra bytes read/written                                                  0 bytes
cache hit percentage                                                    100 percent
recompute count (total)                                                 210
sys@OCM> Select pga_target_for_estimate/1024/1024 ||'M' "PGA"
  2         ,estd_pga_cache_hit_percentage "SORT_Hit(%)"
  3         ,estd_extra_bytes_rw/1024/1024 ||'M' "Read/Write"
  4         ,estd_overalloc_count "IO"
  5       From v$pga_target_advice;
PGA                                       SORT_Hit(%) Read/Write                                        IO
----------------------------------------- ----------- ----------------------------------------- ----------
13.5M                                              83 6.63671875M                                        2
27M                                                83 6.63671875M                                        2
54M                                                83 6.63671875M                                        2
81M                                                91 3.3984375M                                         1
108M                                              100 0M                                                 0
129.599609375M                                    100 0M                                                 0
151.19921875M                                     100 0M                                                 0
172.7998046875M                                   100 0M                                                 0
194.3994140625M                                   100 0M                                                 0
216M                                              100 0M                                                 0
324M                                              100 0M                                                 0
432M                                              100 0M                                                 0
648M                                              100 0M                                                 0
864M                                              100 0M                                                 0

Oracle内存管理PGA详解相关推荐

  1. Unreal3 window下内存管理实现详解

    Unreal3 window下内存管理实现详解 最近组里面同事加入了一个很牛叉的内存管理代码,勾起我对内存管理的强烈欲望,以前也做过内存管理,在没有遇到U3以前看了3,4种算法(C++游戏编程 这本书 ...

  2. C语言内存管理超详解

    补充: 1.一个正在运行着的C编译程序占用的内存分为栈区.堆区.未初始化数据区(BBS).初始化数据区.代码区5个部分. (1)栈区:存放函数的参数值.局部变量的值.由编译器自动分配释放. (2)堆区 ...

  3. Android内存管理机制详解,【安卓知识普及贴】之关于安卓内存管理机制的一些介绍和阐述。...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 安卓系统其实不需要极度精简,只是一味的精简并不会给系统带来什么好处反而只有害处,因为许多系统应用跟设置里的选项有关联,删除掉就会在选择关联选项的时候FC, ...

  4. ARC内存管理机制详解

    ARC在OC里面个人感觉又是一个高大上的牛词,在前面Objective-C中的内存管理部分提到了ARC内存管理机制,ARC是Automatic Reference Counting-自动引用计数.有自 ...

  5. 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  6. Cocos2d之Ref类与内存管理使用详解

    一.简介 用C++和JAVA编写过程序的朋友一定会为两种语言不同的内存管理机制懊恼.JAVA程序运行在JVM之上,由JVM自动实现内存管理,开发者只管申请内存而不用手动释放内存.当JAVA中对象没有被 ...

  7. MMU内存管理单元详解

    MMU 诞生之前: 在传统的批处理系统如 DOS 系统,应用程序与操作系统在内存中的布局大致如下图: 应用程序直接访问物理内存,操作系统占用一部分内存区. 操作系统的职责是"加载" ...

  8. JVM的内存管理机制详解

    一.为什么要学习内存管理? Java与C++之间有一堵由内存动态分配和垃圾回收机制所围成的高墙,墙外面的人想进去,墙里面的人出不来 对于Java程序员来说,JVM给我们提供了自动内存管理机制,不需要既 ...

  9. linux占内存小的浏览器,基于μCLinux嵌入式操作系统上的浏览器内存管理策略研究详解...

    0 引言 在嵌入式系统中,由于设备性能限制系统总的可分配内存相对较小,而在嵌入式平台上浏览器正常运行所需内存一般都比较大,并且内存分配和释放操作也比较频繁,例如,IPTV EPG界面上显示各类菜单按钮 ...

最新文章

  1. 13 岁上大学,19 岁南大读博!00 后天才少女研究「中国芯」
  2. Hibernate中session的get方法和load方法的区别
  3. java 循环map 优雅写法_Java for循环Map集合优化实现解析
  4. 每日一题(2)—— -2与2的比较
  5. 用JavaScript实现本地缓存
  6. java选课管理_学生选课管理系统(Java语言期末前测试)
  7. 【Linux开发板学习教程】全免费超全面超详细
  8. ceph修改osd服务器IP,ceph增加osd流程
  9. LimeSDR系列产品介绍(一):板卡级(Board Level)产品
  10. Android 软键盘顶起布局相关
  11. 手机详情 html代码生成器,dede源码最新版手机移动端静态生成模块插件
  12. implicit super constructor animal() is undefined for default constructor. Must define an explicit 异常
  13. 空间数据计算引擎GeoSpark调研
  14. vscode 代码片段如何输出$符号
  15. python 使用函数名的字符串调用函数(4种方法)
  16. python生成器能用while吗_Python:在while循环中使用生成器
  17. NPOIHelper
  18. TOC视角:巴顿将军的管理角色-----项目关键链(转)
  19. 员工时间管理系统市场现状研究分析报告-
  20. js jquery新窗口打开的几种方式

热门文章

  1. 冷补丁和热补丁的区别
  2. 立冬穿短袖,生活不将就 2020.11.18日记
  3. 骨干计算机专业,计算机教导非本专业与骨干专业的融洽
  4. 三维可视化技术的应用现状及发展前景
  5. 什么是uboot与bios?
  6. Hive SQL经典面试题:统计连续登陆的三天及以上的用户
  7. 数据处理之Pandas中数据类型转换
  8. MIT与Facebook提出SLAC:用于动作分类和定位的稀疏标记数据集
  9. 国A级和国AA级代表什么意思呢?2022年护眼灯选国A还是国AA好
  10. Python之高等数学(定积分与不定积分,重积分)