一、简介
        Program Global Area(PGA)是一个和服务器进程关联的包含数据和控制信息的私有内存区域。
对于一个复杂的查询来说,需要在PAG中的SQL工作区(work area)中分配不同的内存区域来完成一些操作:
    {排序,比如order by,group by,rollup,窗口函数
    Hash join
    位图merge
    位图create

批量加载时的write buffer}

比如说一个排序使用排序区(sort area)完成数据在内存中的排序,一个hash join操作使用hash区(hash area)来创建一个hash表。涉及主要工作区的几个参数(SORT_AREA_SIZE,HASH_AREA_SIZE,BITMAP_MERGE_AREA_SIZE,CREATE_BITMAP_AREA_SIZE)。
    工作区的大小可以调整,一般情况下越大的工作区能明显提升某些操作的性能,但同时也使用更多的内存。
    理想情况是工作区足够大,能满足某个操作(比如排序操作),输入的排序数据和一些辅助的内存结构数据(排序需要维护一个二叉树)。这个时候我们称这个工作区是optimal size。
    如果工作区小于optimal size,响应时间会变长,因为输入数据中的部分数据经历了1次extra pass(比如排序的输入数据比较大,无法在sort area中完成,我们读取一点数据排序好,然后写到temp表空间,接着再次读取数据排序好,写到temp表空间,直到处理完所有数据,因为之前的数据都是部分排序好的,所以还需要读取每一部分排序好的数据中的一些控制信息,进行1次merge,就能返回结果了),这个时候的工作区是one-pass size。
    如果这个以上说的merge不能一次完成,需要多次merge(先读取几个部分的控制信息进行merge,再读取几个部分的控制信息进行merge,如此往复,最后把以上结果进行merge),就会大大增加响应时间和cpu的使用,那么就是multiple-pass size。

解释的可能不够准确,可以参考ASKTom的回答

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1308127400346936009
    比如排序10G的数据,需要10G多一点的内存使排序运行在optimal的状态,至少40M,才能满足one-pass,如果小于40M,就是multiple-pass。
目标就是让绝大部分的工作区是optimal size(对于纯OLTP系统来说,90%或者更高),然后少量是one-pass size,multiple-pass size是需要尽量避免的。即使是在DSS环境中,大的排序和hash-join也只需要很小的内存就能达到one-pass size,所以需要避免multiple-pass size。

自动PGA内存管理简化和提升了PGA分配内存的方式。默认情况下PGA内存管理是开启的。在这种模式下,Oracle动态的调整PGA中不同部分的工作区大小。为了后向兼容,自动PGA内存管理可以被禁用(设置PAG_AGGREGATE_TARGET=0),这个时候可以指定通过设置参数*_AREA_SIZE来设置某个工作区的最大值,比如SORT_AREA_SIZE,还有HASH_AREA_SIZE,BITMAP_MERGE_AREA_SIZE,CREATE_BITMAP_AREA_SIZE等。

二、配置自动PGA内存管理
        自动管理PGA内存时,每个session的工作区都自动分配大小,所有*_AREA_SIZE都被忽略。任何时候,活动的工作区可用内存是PGA_AGGREGATE_TARGET参数减去被其他部分已经使用了的PGA内存。PGA内存自动管理是,数据库主要是参考PGA_AGGREGATE_TARGET的值,动态的给SQL工作区分配内存。尽可能使工作区都是optimal size,少量的one-pass size,避免multiple-pass size。
当你配置一个新的实例,刚开始很难准确的设置PGA_AGGREGATE_TARGET参数,我们可以按照以下步骤来设置:
1.初始化,估计一个值,通常是SGA的20%。这个对于DSS系统来说可能太低了。
2.运行一个有代表性的工作量负载,监控性能,使用PGA的一些统计数据,看设置的PGA_AGGREGATE_TARGET是大了还是小了。
3.调整PGA_AGGREGATE_TARGET,使用PGA advice statistics。
下面从以上3个方面展开讨论。

三、初始化设置PGA_AGGREGATE_TARGET
        设置PGA_AGGREGATE_TARGET首先是要基于数据库实例可用的物理内存,比如在有4G物理内存的主机上面,部分内存需要留给操作系统和其他非数据库应用。你可能只分配80%的内存给数据使用,其次,你还要决定这个可用内存在SGA和PGA之间的分配。
对于OLTP系统来说,一般20%分配给PGA,80%分配给SGA。
对DSS系统来说,可能要运行需要大的内存支持的查询,可以分配70%给PGA。
PGA_AGGREGATE_TARGET初始化设置可以参考以下公式:
For OLTP:PGA_AGGREGATE_TARGET=(total_mem*80%)*20%
For DSS:PGA_AGGREGATE_TARGET=(total_mem*80%)*50%

四、监控PGA内存自动管理的性能
        在调优之前,你需要监控PGA的性能,查看关键的性能数据来决定下一步如何调整。主要包括以下动态性能视图:
■ V$PGASTAT
■ V$PROCESS
■ V$PROCESS_MEMORY
■ V$SQL_WORKAREA_HISTOGRAM
■ V$SQL_WORKAREA_ACTIVE
■ V$SQL_WORKAREA

--1、 V$PGASTAT包含的是实例级别的PGA内存使用数据
SQL>  select * from v$pgastat;NAME                                                    VALUE UNIT
-------------------------------------------------- ---------- ------------
aggregate PGA target parameter                      339738624 bytes
aggregate PGA auto target                           200521728 bytes
global memory bound                                  67947520 bytes
total PGA inuse                                     117057536 bytes
total PGA allocated                                 135889920 bytes
maximum PGA allocated                               158515200 bytes
total freeable PGA memory                             5439488 bytes
process count                                              30
max processes count                                        36
PGA memory freed back to OS                          34013184 bytes
total PGA used for auto workareas                           0 bytes
maximum PGA used for auto workareas                    528384 bytes
total PGA used for manual workareas                         0 bytes
maximum PGA used for manual workareas                       0 bytes
over allocation count                                       0
bytes processed                                      19876864 bytes
extra bytes read/written                                    0 bytes
cache hit percentage                                      100 percent
recompute count (total)                                    17--重点指标解释:
aggregate PGA target parameter:当前PGA_AGGREGATE_TARGET的值。aggregate PGA auto target:那些运行在automatic mode下的工作区可用的pga总内存,是动态调整的。如果这个值相对于PGA_AGGREGATE_TARGET比较小,那么一些内存可能被系统的其他部分使用了,比如PL/SQL或者Java内存。global memory bound:运行在automatic mode下的单个工作区可使用的最大内存。oracle根据工作量负载动态调整,一般情况下当活跃的工作区变多,这个值会变小。通常,这个值不能小于1M,如果小于1M,就需要调整你的PGA_AGGREGATE_TARGET参数了。total PGA allocated:目前实例分配的pga内存。total freeable PGA memory:分配的pga内存可以被释放的小大。total PGA used for auto workareas:运行在automatic mode下的工作区使用的pga总内存。PGA other = total PGA allocated - total PGA used for auto workareas,通过这个等式我们可以看出其他部分使用了多少pga内存。over allocation count:上面等式中,如果PGA other + auto workarea > PGA_AGGREGATE_TARGET,也就是PGA_AGGREGATE_TARGET太小以至于不能满足PGA other加上auto workarea运行的最低内存要求,就会发生over allocationbytes processed:optimal size的工作区处理的数据量。extra bytes read/written:one-pass size,multiple-pass size工作区多处理的那部分数据量。cache hit percentage:缓存命中率,反应pga性能状况。--举个例子,有个3个1M和1个100M的数据需要排序。4个排序操作的total bytes processed(BP)是103M,如果其中有1M是在one-pass size的工作区完成的,意味着有额外的1M数据被处理了。这个额外的1M数据是extra bytes read/written(EBP),公式如下:
BP x 100 / (BP + EBP)
对于上面这个例子,cache hit percentage就是99.03%,接近100%。反应了只要很小部分的排序是在one-pass size或者multiple-pass size工作区中完成的。
刚刚那个例子,如果那个100M的排序是one-pass,那么EBP就是100M,那么cache hit percentage就是50.73%。--2、 V$PROCESS每行都是一个连接到实例的进程,其中字段PGA_USED_MEM, PGA_ALLOC_MEM, PGA_FREEABLE_MEM 和 PGA_MAX_MEM 可以被用来监控这个进程使用的pga内存。
SQL> SELECT PROGRAM, PGA_USED_MEM, PGA_ALLOC_MEM, PGA_FREEABLE_MEM, PGA_MAX_MEM2  FROM V$PROCESS;PROGRAM                                            PGA_USED_MEM PGA_ALLOC_MEM PGA_FREEABLE_MEM PGA_MAX_MEM
-------------------------------------------------- ------------ ------------- ---------------- -----------
PSEUDO                                                        0             0                0           0
oracle@sean.ora11g (PMON)                                836958        918878                0      918878
oracle@sean.ora11g (PSP0)                                818998        902462                0      902462
oracle@sean.ora11g (VKTM)                                815758        902462                0      902462
oracle@sean.ora11g (GEN0)                                823054        902494                0      902494
oracle@sean.ora11g (DIAG)                                815774        902462                0      902462
oracle@sean.ora11g (DBRM)                                895206       1099070                0     1099070
oracle@sean.ora11g (DIA0)                               1288078       1475230            65536     1475230
oracle@sean.ora11g (MMAN)                                818998        902462                0      902462
oracle@sean.ora11g (DBW0)                               7156518       7537438                0     7537438
oracle@sean.ora11g (LGWR)                              11448406      12174654                0    12174654
oracle@sean.ora11g (CKPT)                                889182       1181550                0     1181550
oracle@sean.ora11g (SMON)                               1090126       5424446          3866624     5424446
oracle@sean.ora11g (RECO)                                959838       1164606                0     1164606
oracle@sean.ora11g (MMON)                               2186294       3908430          1441792     3908430
oracle@sean.ora11g (TNS V1-V3)                          1930414       4515310          1048576     6874606
oracle@sean.ora11g (ARC0)                              17708630      18859326                0    18859326
......--3、V$PROCESS_MEMORY每个进程中的某个类别占用内存情况,相当于以上视图信息的细分,1个进程最多有6行数据,也就是6个类别。
1).命名的类别,主要是4种:Java、PL\SQL、OLAP、SQL
2).Freeable,可释放的内存,操作系统分配给了进程,但是没有被某个具体的类别使用。
3).Other,分配给了类别的内存,但是不属于以上命名的类别
可以使用CATAGORY,ALLOCATED,USED,MAX_ALLOCATED里动态监控每个进程6个类别对pga的使用情况。
SQL> select pid,serial#,category,allocated,used,max_allocated from V$PROCESS_MEMORY;PID    SERIAL# CATEGORY         ALLOCATED       USED MAX_ALLOCATED
---------- ---------- --------------- ---------- ---------- -------------2          1 PL/SQL                2008        224          20082          1 Other               916870                   9168703          1 PL/SQL                2008        224          20083          1 Other               900454                   9004544          1 PL/SQL                2008        224          20084          1 Other               900454                   9004545          1 PL/SQL                2008        224          20085          1 Other               900486                   9004866          1 PL/SQL                2008        224          20086          1 Other               900454                   9004547          1 SQL                      0          0         601207          1 PL/SQL                2008        224          20087          1 Other              1097062                  1097062
......--4、V$SQL_WORKAREA_HISTOGRAM这个视图统计的是大小在某个范围的那些工作区,分别运行在optimal size、one pass size、multi pass size的情况。通过low_optimal_size和high_optimal_size定义了这个区间的边界,比如一个排序需要3m的内存才能运行在optimal size,那么它会落在2m-4m这个区间。如果一个排序使用了3m运行在one pass size,应该也是落在2m-4m这个区间。
SQL> SELECT LOW_OPTIMAL_SIZE/1024 low_kb,2  (HIGH_OPTIMAL_SIZE+1)/1024 high_kb,3  OPTIMAL_EXECUTIONS, ONEPASS_EXECUTIONS, MULTIPASSES_EXECUTIONS4  FROM V$SQL_WORKAREA_HISTOGRAM5  WHERE TOTAL_EXECUTIONS != 0;LOW_KB    HIGH_KB OPTIMAL_EXECUTIONS ONEPASS_EXECUTIONS MULTIPASSES_EXECUTIONS
---------- ---------- ------------------ ------------------ ----------------------2          4              21111                  0                      064        128                 52                  0                      0128        256                 10                  0                      0256        512                 48                  0                      0512       1024                187                  0                      01024       2048                176                  0                      02048       4096                  8                  0                      04096       8192                  8                  0                      0
上面的数据反映了,1m-2m这个区间176个工作区运行在optimal size,0个工作区运行在one pass size,0个运行在multi pass size。      SQL> SELECT optimal_count, round(optimal_count*100/total, 2) optimal_perc,2  onepass_count, round(onepass_count*100/total, 2) onepass_perc,3  multipass_count, round(multipass_count*100/total, 2) multipass_perc4  FROM5  (SELECT decode(sum(total_executions), 0, 1, sum(total_executions)) total,6  sum(OPTIMAL_EXECUTIONS) optimal_count,7  sum(ONEPASS_EXECUTIONS) onepass_count,8  sum(MULTIPASSES_EXECUTIONS) multipass_count9  FROM v$sql_workarea_histogram10  WHERE low_optimal_size >= 64*1024);OPTIMAL_COUNT OPTIMAL_PERC ONEPASS_COUNT ONEPASS_PERC MULTIPASS_COUNT MULTIPASS_PERC
------------- ------------ ------------- ------------ --------------- --------------501          100             0            0               0              0
这条语句是查看low_optimal_size在64kb以上的工作区,optimal、one pass、multi pass的次数和比例,因为我是刚启动的实例,所以optimal是100%--5、V$SQL_WORKAREA_ACTIVE这里面包含的是正在运行的64k以上的工作区信息,正在使用的内存大小、最大使用的内存、pga期望的最大使用内存、是optimal还是one pass或者multi pass,使用的temp段大小。
SQL> SELECT to_number(decode(SID, 65535, NULL, SID)) sid,2  operation_type OPERATION,3  trunc(EXPECTED_SIZE/1024) ESIZE,4  trunc(ACTUAL_MEM_USED/1024) MEM,5  trunc(MAX_MEM_USED/1024) "MAX MEM",6  NUMBER_PASSES PASS,7  trunc(TEMPSEG_SIZE/1024) TSIZE8  FROM V$SQL_WORKAREA_ACTIVE9  ORDER BY 1,2;SID OPERATION ESIZE MEM MAX MEM PASS TSIZE
--- ----------------- --------- --------- --------- ----- -------
8 GROUP BY (SORT) 315 280 904 0
8 HASH-JOIN 2995 2377 2430 1 20000
9 GROUP BY (SORT) 34300 22688 22688 0
11 HASH-JOIN 18044 54482 54482 0
12 HASH-JOIN 18044 11406 21406 1 120000
会话id为12的会话,正在运行一个hash jion,运行在one-pass模式。目前使用了11406kb,过去最大使用了21406kb,pga自动内存管理期望它最多使用18044kb。它还使用了120000kb的temp段。--6、V$SQL_WORKAREAV$SQL_WORKAREA_ACTIVE包含的是正在运行的工作区信息,当这些工作区被释放后,他们的执行信息会被更新到V$SQL_WORKAREA视图中。可以和V$SQL关联看是哪个cursor使用的工作区,也可以和V$SQL_PLAN关联,查看是执行计划的哪个操作使用的工作区。
以下查询查看需要最多内存的前10个工作区
SQL> SELECT *2  FROM (SELECT workarea_address, operation_type, policy, estimated_optimal_size3  FROM V$SQL_WORKAREA4  ORDER BY estimated_optimal_size DESC)5  WHERE ROWNUM <= 10;
WORKAREA_ADDRESS OPERATION_TYPE                           POLICY               ESTIMATED_OPTIMAL_SIZE
---------------- ---------------------------------------- -------------------- ----------------------
0000000060F56C98 HASH-JOIN                                AUTO                                2498560
0000000060F56C30 GROUP BY (HASH)                          AUTO                                2349056
00000000780C6720 GROUP BY (HASH)                          AUTO                                2017280
00000000783417C0 HASH-JOIN                                AUTO                                1860608
0000000060F56D68 HASH-JOIN                                AUTO                                1795072
0000000060FB97F0 HASH-JOIN                                AUTO                                1736704
00000000780C66B8 HASH-JOIN                                AUTO                                1736704
00000000773EAAB0 HASH-JOIN                                AUTO                                1736704
0000000060EEA8B8 GROUP BY (HASH)                          AUTO                                1685504
000000007826CA20 HASH-JOIN                                AUTO                                1518592--以下查询查看游标cursor关联的工作区运行在one pass mode或者是multi pass mode的次数
SQL> SELECT sql_text, sum(ONEPASS_EXECUTIONS) onepass_cnt,2  sum(MULTIPASSES_EXECUTIONS) mpass_cnt3  FROM V$SQL s, V$SQL_WORKAREA wa4  WHERE s.address = wa.address5  GROUP BY sql_text6  HAVING sum(ONEPASS_EXECUTIONS+MULTIPASSES_EXECUTIONS)>0;no rows selected--通过以下查询查看某条sql的address和hash_value
SQL> SELECT address, hash_value,sql_text2  FROM V$SQL3  WHERE sql_text LIKE '%db_cache_advice%';ADDRESS          HASH_VALUE SQL_TEXT
---------------- ---------- --------------------------------------------------
00000000632EF5F0 3231842444 select id, name, block_size, advice_status,size_for_estimate, size_factor, buffers_for_estimate,        estd_physical_read_factor, estd_physical_reads,              estd_physical_read_time,                                     estd_pct_of_db_time_for_reads,estd_cluster_reads,estd_cluster_read_timefrom   gv$db_cache_advice where inst_id = userenv('instance')ADDRESS          HASH_VALUE SQL_TEXT
---------------- ---------- --------------------------------------------------
00000000777BB700 3489409389 select size_for_estimate,                      size_factor * 100 f,                    estd_physical_read_time,                estd_physical_readsfrom v$db_cache_advice where id = '3'--以下查询通过某个游标cursor的address和hash value,查看cursor的执行计划,以及每一步操作的工作区的情况
SQL> SELECT operation, options, object_name name, trunc(bytes/1024/1024) "input(MB)",2  trunc(last_memory_used/1024) last_mem,3  trunc(estimated_optimal_size/1024) optimal_mem,4  trunc(estimated_onepass_size/1024) onepass_mem,5  decode(optimal_executions, null, null,6  optimal_executions||'/'||onepass_executions||'/'||7  multipasses_executions) "O/1/M"8  FROM V$SQL_PLAN p, V$SQL_WORKAREA w9  WHERE p.address=w.address(+)10  AND p.hash_value=w.hash_value(+)11  AND p.id=w.operation_id(+)12  AND p.address='00000000632EF5F0'13  AND p.hash_value=3231842444;OPERATION            OPTIONS         NAME                  input(MB)   LAST_MEM OPTIMAL_MEM ONEPASS_MEM O/1/M
-------------------- --------------- -------------------- ---------- ---------- ----------- ----------- ----------
SORT                 ORDER BY                                                 0          72          72 0/0/0
SORT                 JOIN                                                     0          72          72 0/0/0
SORT                 JOIN                                                     0          72          72 0/0/0
MERGE JOIN
SELECT STATEMENT
FIXED TABLE          FULL            X$KCBWBPD
FIXED TABLE          FULL            X$KCBSC

五、调整PGA_AGGREGATE_TARGET
        Oracle提供了2个非常重要的动态性能视图V$PGA_TARGET_ADVICE 和 V$PGA_TARGET_ADVICE_HISTOGRAM 来辅助我们调整 PGA_AGGREGATE_TARGET 参数。这样就不必按照经验来调整,这些视图提供了随着PGA_AGGREGATE_TARGET变大或者变小,PGA相关统计数据会发生什么变化。Oracle通过记录系统的工作量负载信息,然后模拟PGA_AGGREGATE_TARGET在不同的大小情况下,模拟的结果就是上面2个视图。
要自动生成PGA的建议性能视图,以下两个参数必须要设置:
1)、PGA_AGGREGATE_TARGET
2)、STATISTICS_LEVEL设置为typical或者all。如果是basic那么不会自动生成
注意模拟负载它不能安全包括你真实执行的所有要素,所以可能和调整后真实的性能数据不一致。所以,当你调整完PGA_AGGREGATE_TARGET,要密切关注相关性能数据。

--1、V$PGA_TARGET_ADVICE
这个视图展示的是随着PGA_AGGREGATE_TARGET的调整变化,V$PGASTAT视图中的指标cache hit percentage和over allocation count会发生什么变化。
SQL> SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) target_mb,2  ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc,3  ESTD_OVERALLOC_COUNT4  FROM V$PGA_TARGET_ADVICE;TARGET_MB CACHE_HIT_PERC ESTD_OVERALLOC_COUNT
---------- -------------- --------------------199             86                12097399             95                 3857798             99                   891196             99                    21595             99                    01914             99                    02233             99                    02552             99                    02871             99                    03190             99                    04785             99                    06380             99                    09570             99                    012760             99                    0

以上我测试环境的数据,看一张官方文档给的一张图表,和上面的数据没有关系

图表左侧阴影部分说明如果PGA_AGGREGATE_TARGET设置在这个大小,那么over allocation count将会是一个非零值, 也就是这个范围的PGA_AGGREGATE_TARGET不能满足PGA最小的内存需求,所以PGA不得不超过这个值。从阴影部分到500m,cache hit percentage上升很快,说明此时大部分的工作区work area能运行在optimal和one pass模式。当PGA_AGGREGATE_TARGET到达3GB时,cache hit percentage 是 83%,再增加1GB,cache hit percentage只上升了2%,所以3GB是个比较理想的大小。一般情况下,cache hit percentage至少要大于60%。在这个例子中,PGA_AGGREGATE_TARGET应该大于500M,越接近3GB越好,因为PGA的内存要考虑SGA的内存和实际可用物理内存。

调整步骤:
首先设置PGA_AGGREGATE_TARGET大于over-allocation区域。
其次,在可用内存足够情况下,尽量靠近optimal value。比如你有2G,那么设置2G,如果有10G,那就设置3G。
因为大部分统计数据都是自实例启动以来的累计数据,所以可以从2个快照中统计差值。
estd_overalloc_count = (difference in estd_overalloc_count between the two snapshots)
                                                         (difference in bytes_processed between the two snapshots)
estd_pga_cache_hit_percentage = -----------------------------------------------------------------
                                                          (difference in bytes_processed + extra_bytes_rw between the two snapshots )

--2、V$PGA_TARGET_ADVICE_HISTOGRAM
V$PGA_TARGET_ADVICE_HISTOGRAM视图和V$SQL_WORKAREA_HISTOGRAM基本是一致的,只不过视图V$PGA_TARGET_ADVICE_HISTOGRAM多了PGA_AGGREGATE_TARGET列,表明了随着PGA_AGGREGATE_TARGET的变化,不同大小的工作区work area分别运行在optimal、one pass、multi pass mode的情况。下面这个查询展示的是PGA_AGGREGATE_TARGET设置为当前值的2倍,工作区的情况。
SQL> SELECT LOW_OPTIMAL_SIZE/1024 low_kb, (HIGH_OPTIMAL_SIZE+1)/1024 high_kb,2  estd_optimal_executions estd_opt_cnt,3  estd_onepass_executions estd_onepass_cnt,4  estd_multipasses_executions estd_mpass_cnt5  FROM v$pga_target_advice_histogram6  WHERE pga_target_factor = 27  AND estd_total_executions != 08  ORDER BY 1;LOW_KB    HIGH_KB ESTD_OPT_CNT ESTD_ONEPASS_CNT ESTD_MPASS_CNT
---------- ---------- ------------ ---------------- --------------2          4     25577668                0              064        128        75673                0              0128        256        16154                0              0256        512        38432                0              0512       1024       609588                0              01024       2048       445664                0              02048       4096       163800                0              04096       8192        24629                0              08192      16384         1224                0              016384      32768          859                0              032768      65536          221                0              065536     131072           33                0              0131072     262144           29               35              0262144     524288            0                9              0                           --3、V$SYSSTAT and V$SESSTAT
上面两个视图包含了自实例或者会话启动以来工作区的运行情况,通过以下查询获取:
SQL> SELECT name profile, cnt, decode(total, 0, 0, round(cnt*100/total)) percentage2  FROM (SELECT name, value cnt, (sum(value) over ()) total3  FROM V$SYSSTAT4  WHERE name like 'workarea exec%');PROFILE                                 CNT PERCENTAGE
-------------------------------- ---------- ----------
workarea executions - optimal      26971730        100
workarea executions - onepass            60          0
workarea executions - multipass           0          0

参考资料:

Oracle® Database
Performance Tuning Guide
11g Release 2 (11.2)

Oracle PGA内存管理 PGA Memory Management相关推荐

  1. HALCON:内存管理(Memory Management)

    HALCON:内存管理(Memory Management)

  2. 异构内存管理 Heterogeneous Memory Management (HMM)

    https://www.kernel.org/doc/html/latest/vm/hmm.html 目录 异构内存管理 (HMM) 使用特定于设备的内存分配器的问题 I/O 总线.设备内存特性 共享 ...

  3. 理解自动内存管理(Automatic Memory Management)

    内存管理 当一个对象,字符串或者数组被创建时,和它所需大小相符的存储空间会从一个中央内存池中被分配出来,这个内存池我们一般称之为堆(heap). 原理可以类比于C中的malloc()函数,只不过我们无 ...

  4. Linux内存管理Linux Memory Management Notes

    Linux 内存基础 地址类型 linux内核中有许多种不同的地址类型 用户虚拟地址 用户空间看到的常规地址,通过页表可以将虚拟地址和物理地址映射起来 物理地址 用在cpu和内存之间的地址叫做物理地址 ...

  5. pga是啥oracle,Oracle数据库内存体系 - PGA

    PGA:Program Global Area(程序全局区)或Process Global Area(进程全局区),PGA是一块包含一个操作系统进程或线程专用的内存,不允许系统中的其他进程或线程访问. ...

  6. Oracle数据库内存体系 - PGA

    PGA:Program Global Area(程序全局区)或Process Global Area(进程全局区),PGA是一块包含一个操作系统进程或线程专用的内存,不允许系统中的其他进程或线程访问. ...

  7. oracle自动内存管理要不要开,Oracle 11g的自动内存管理

    Oracle 的 9i/10g 中已经对内存管理逐步做了很大的简化,11g 则更进一步,引入了一个新的概念自动化内存管理(Automatic Memory Management,AMM) . 如果 D ...

  8. Oracle 自动内存管理 SGA、PGA 详解

    ASMM自动共享内存管理: 自动根据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 SYS@PROD>show parameter sga NAME              ...

  9. oracle开启自动内存管理,如何设置oracle自动内存管理

    为了方便很多用户们在使用oracle的时候都会开启内存自动管理系统,那么你知道如何设置oracle自动内存管理吗?接下来我们就去看看oracle自动内存管理的设置方法. 设置oralce自动内存管理 ...

最新文章

  1. matlab 图像分割 提取人像_数字图像处理实验合集(含代码、报告)
  2. linux 配置思科路由器,将配置文件导入cisco2611路由器步骤
  3. swag您的装置不支持_一件充满意境的中国风水墨粒子、电子屏风交互装置
  4. Python 报错TypeError: expected string or bytes-like object
  5. IDEA 中如何查看maven项目中所有jar包的依赖关系图
  6. 混日子的老程序员感受结对编程的威力【工作效率狂提高】
  7. 数学模板-BSGSEXBSGS
  8. 关于 国产麒麟系统编译Qt项目是报错:error: cannot find -lGL 的解决方法
  9. Java实现 LeetCode 41 缺失的第一个正数
  10. qpython3l最新版下载_qpython3l
  11. Atmel Studio 6.0 重新安装
  12. 程序员需要了解的硬核知识之控制硬件
  13. 怎么用命令改变legend在图中的位置
  14. 已解决_mssql.MSSQLDatabaseException: (2627, b“Violation of PRIMARY KEY constraint ‘PK__TM_DATA___7BDCF2
  15. 基于ssm框架的同城物流配送网站系统
  16. 数据可视化路上——中国地图可视化
  17. 发出警报声的c语言程序,PIC单片机警报声C程序
  18. nvm 安裝不同版本的node(詳細過程无图)
  19. Spring错误Caused by: java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$Reflec
  20. 信息安全行业里面一些很不错的书

热门文章

  1. 综述 | 事件抽取及推理 (下)
  2. 学习-Python函数之函数定义与调用之四则运算计算器的简单实现
  3. Zend Framework教程-Zend_Db-数据库概述
  4. 数学建模 MATLAB基础
  5. Cesium获取模型(Primitive)的位置与方向
  6. python3邮件_python3使用SMTP发送简单文本邮件
  7. 计算机网络基础之拓扑结构
  8. 教授专栏39 | 李家涛:全球创科竞争大湾区实力强 潜力巨
  9. 首次创业者必须知道哪些基本常识?
  10. 从文人相轻说开去...