当用户进程连接到数据库并创建一个对应的会话时,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的内存管理。接下来我们就来介绍这一设置过程的实现。首先看看如下代码:
- SQL> show parameter pga
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- pga_aggregate_target big integer 169M
- SQL> show parameter workarea
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- workarea_size_policy string AUTO
- SQL> show parameter pga
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- pga_aggregate_target big integer 169M
- SQL> show parameter workarea
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- 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:
- SQL> set pagesize 200
- SQL> select name||' '|| to_char(decode( unit,
- 'bytes', value/1024/1024,
- value ),'999,999,999.9')||' '||
- decode( unit, 'bytes', 'mbytes', unit
- from v$pgastat;
- NAME||''||TO_CHAR(DECODE(UNIT,'BYTES',VALUE/1024/1024,VALUE),'999,999,999.9')||''||DECODE(UN
- --------------------------------------------------------------------------------------------
- aggregate PGA target parameter 169.0 mbytes
- aggregate PGA auto target 124.3 mbytes
- global memory bound 33.8 mbytes
- total PGA inuse 30.9 mbytes
- total PGA allocated 65.4 mbytes
- maximum PGA allocated 82.2 mbytes
- total freeable PGA memory .0 mbytes
- process count 24.0
- max processes count 33.0
- PGA memory freed back to OS .0 mbytes
- total PGA used for auto workareas .0 mbytes
- maximum PGA used for auto workareas .6 mbytes
- total PGA used for manual workareas .0 mbytes
- maximum PGA used for manual workareas .0 mbytes
- over allocation count .0
- bytes processed 23.5 mbytes
- extra bytes read/written .0 mbytes
- cache hit percentage 100.0 percent
- 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