PGA研究我们需要可以通过转储PGA结构来实现:
alter session set events 'immediate trace name heapdump level n';
level的不同级别决定了哪些内存存储到跟踪文件:
Level 1: PGA汇总信息
Level 2: SGA汇总信息
Level 4: UGA汇总信息
Level 8: 当前调用的汇总信息(CGA)
Level 16: 用户调用的汇总信息(CGA)
Level 32: Large pool的汇总信息(LGA)
Level 1025: PGA详细信息
Level 2050: SGA详细信息
Level 5000: UGA 详细信息
Level 8200: 当前调用的详细信息
Level 16400: 用户调用的详细信息
Level 32800: Large pool的详细信息
下面通过转储level 1级别PGA概要信息

SQL> alter session set events 'immediate trace name heapdump level 1';
在udump下可以找到刚才转储的PGA信息:
HEAP DUMP heap name="pga heap"  desc=10669e340
 extent sz=0x20c0 alt=184 het=32767 rec=0 flg=2 opc=2
 parent=0 owner=0 nex=0 xsz=0xfff0
EXTENT 0 addr=ffffffff7bc20010
  Chunk ffffffff7bc20020 sz=    15328    perm      "perm           "  alo=4424
  Chunk ffffffff7bc23c00 sz=     6680    free      "               "
  Chunk ffffffff7bc25618 sz=     4224    freeable  "Alloc environm "  ds=106860890
  Chunk ffffffff7bc26698 sz=    22544    freeable  "Fixed Uga      "
  Chunk ffffffff7bc2bea8 sz=      336    freeable  "ldm context    "
  Chunk ffffffff7bc2bff8 sz=      336    freeable  "ldm context    "
  Chunk ffffffff7bc2c148 sz=      336    freeable  "ldm context    "
  Chunk ffffffff7bc2c298 sz=      336    freeable  "ldm context    "
  Chunk ffffffff7bc2c3e8 sz=      336    freeable  "ldm context    "
  Chunk ffffffff7bc2c538 sz=      336    freeable  "ldm context    "
  Chunk ffffffff7bc2c688 sz=       96    freeable  "ldm context    "
  Chunk ffffffff7bc2c6e8 sz=      304    freeable  "ldm context    "
  Chunk ffffffff7bc2c818 sz=     1008    freeable  "ldm context    "
  Chunk ffffffff7bc2cc08 sz=     8240    freeable  "ldm context    "
  Chunk ffffffff7bc2ec38 sz=     2136    freeable  "ldm context    "
  Chunk ffffffff7bc2f490 sz=      608    freeable  "ldm context    "
  Chunk ffffffff7bc2f6f0 sz=      360    freeable  "ldm context    "
  Chunk ffffffff7bc2f858 sz=      592    freeable  "kopolal dvoid  "
  Chunk ffffffff7bc2faa8 sz=      432    freeable  "kopolal dvoid  "
  Chunk ffffffff7bc2fc58 sz=      344    freeable  "kopolal dvoid  "
  Chunk ffffffff7bc2fdb0 sz=      592    freeable  "kopolal dvoid  "
EXTENT 1 addr=10690c030
  Chunk        10690c040 sz=     5840    perm      "perm           "  alo=5840
  Chunk        10690d710 sz=       72    free      "               "
  Chunk        10690d758 sz=     1072    freeable  "kopolal dvoid  "
  Chunk        10690db88 sz=     1384    freeable  "kews sqlstat st"
EXTENT 2 addr=106909f50
  Chunk        106909f60 sz=     3808    perm      "perm           "  alo=3808
  Chunk        10690ae40 sz=      376    freeable  "KFK PGA        "
  Chunk        10690afb8 sz=     4184    freeable  "qmtmInit       "  ds=1069017c8
EXTENT 3 addr=106907e70
  Chunk        106907e80 sz=     4184    freeable  "qmtmInit       "  ds=1069017c8
  Chunk        106908ed8 sz=     4184    freeable  "qmtmInit       "  ds=1069017c8
EXTENT 4 addr=106905d90
  Chunk        106905da0 sz=     4184    freeable  "qmtmInit       "  ds=1069017c8
  Chunk        106906df8 sz=     4184    freeable  "qmtmInit       "  ds=1069017c8
EXTENT 5 addr=106903c20
  Chunk        106903c30 sz=     8256    perm      "perm           "  alo=8256
  Chunk        106905c70 sz=       56    free      "               "
  Chunk        106905ca8 sz=       56    freeable  "ldm context    "
EXTENT 6 addr=106901b40
  Chunk        106901b50 sz=     6576    perm      "perm           "  alo=6576
  Chunk        106903500 sz=     1224    recreate  "joxp heap      "  latch=0
     ds        1069039e0 sz=     1224 ct=        1
  Chunk        1069039c8 sz=      568    freeable  "joxp heap      "
EXTENT 7 addr=1068ffa60
  Chunk        1068ffa70 sz=     6400    perm      "perm           "  alo=6400
  Chunk        106901370 sz=     1264    perm      "perm           "  alo=1264
  Chunk        106901860 sz=      704    recreate  "qmtmInit       "  latch=0
     ds        1069017c8 sz=    21624 ct=        6
               10690afb8 sz=     4184
               106907e80 sz=     4184
               106908ed8 sz=     4184
               106905da0 sz=     4184
               106906df8 sz=     4184
EXTENT 8 addr=1068faa10
  Chunk        1068faa20 sz=    20512    perm      "perm           "  alo=20512
EXTENT 9 addr=1068f77a0
  Chunk        1068f77b0 sz=    12864    perm      "perm           "  alo=12864
EXTENT 10 addr=1068f56c0
  Chunk        1068f56d0 sz=     3240    perm      "perm           "  alo=3240
  Chunk        1068f6378 sz=     1520    perm      "perm           "  alo=1520
  Chunk        1068f6968 sz=      416    perm      "perm           "  alo=416
  Chunk        1068f6b08 sz=      144    freeable  "KFIO PGA struct"
  Chunk        1068f6b98 sz=       72    freeable  "koh-kghu call h"
  Chunk        1068f6be0 sz=      376    freeable  "PLS cca hp desc"
  Chunk        1068f6d58 sz=     2600    freeable  "kjztprq struct "
EXTENT 11 addr=1068f35e0
  Chunk        1068f35f0 sz=     3672    perm      "perm           "  alo=3672
  Chunk        1068f4448 sz=      472    perm      "perm           "  alo=448
  Chunk        1068f4620 sz=       96    freeable  "KJZT context   "
  Chunk        1068f4680 sz=     3968    recreate  "KSFQ heap      "  latch=0
     ds        1068f5618 sz=     3968 ct=        1
  Chunk        1068f5600 sz=      160    freeable  "KSFQ heap descr"
EXTENT 12 addr=1068ed590
  Chunk        1068ed5a0 sz=    24608    perm      "perm           "  alo=24608
EXTENT 13 addr=1068eb3c0
  Chunk        1068eb3d0 sz=     8608    perm      "perm           "  alo=8608
EXTENT 14 addr=1068e70b0
  Chunk        1068e70c0 sz=    17024    freeable  "kgh stack      "
EXTENT 15 addr=10685e920
  Chunk        10685e930 sz=     2144    perm      "perm           "  alo=2144
  Chunk        10685f190 sz=       48    free      "               "
  Chunk        10685f1c0 sz=       32    freeable  "external name  "
  Chunk        10685f1e0 sz=       32    freeable  "kzsna:login nam"
  Chunk        10685f200 sz=     4184    recreate  "Alloc environm "  latch=0
     ds        106860890 sz=     8408 ct=        2
        ffffffff7bc25618 sz=     4224
  Chunk        106860258 sz=     1904    freeable  "kpuinit env han"
Total heap size    =   232776
FREE LISTS:
 Bucket 0 size=56
  Chunk        10690d710 sz=       72    free      "               "
  Chunk        106905c70 sz=       56    free      "               "
  Chunk        10685f190 sz=       48    free      "               "
 Bucket 1 size=88
 Bucket 2 size=152
 Bucket 3 size=168
 Bucket 4 size=280
 Bucket 5 size=432
 Bucket 6 size=536
 Bucket 7 size=1048
 Bucket 8 size=2072
 Bucket 9 size=4120
  Chunk ffffffff7bc23c00 sz=     6680    free      "               "
 Bucket 10 size=8216
 Bucket 11 size=16408
 Bucket 12 size=32792
 Bucket 13 size=65560
 Bucket 14 size=131096
 Bucket 15 size=262168
 Bucket 16 size=524312
 Bucket 17 size=2097176
Total free space   =     6856
UNPINNED RECREATABLE CHUNKS (lru first):
PERMANENT CHUNKS:
  Chunk ffffffff7bc20020 sz=    15328    perm      "perm           "  alo=4424
  Chunk        10690c040 sz=     5840    perm      "perm           "  alo=5840
  Chunk        106909f60 sz=     3808    perm      "perm           "  alo=3808
  Chunk        106901370 sz=     1264    perm      "perm           "  alo=1264
  Chunk        106903c30 sz=     8256    perm      "perm           "  alo=8256
  Chunk        106901b50 sz=     6576    perm      "perm           "  alo=6576
  Chunk        1068ffa70 sz=     6400    perm      "perm           "  alo=6400
  Chunk        1068f6968 sz=      416    perm      "perm           "  alo=416
  Chunk        1068f4448 sz=      472    perm      "perm           "  alo=448
  Chunk        1068faa20 sz=    20512    perm      "perm           "  alo=20512
  Chunk        1068f6378 sz=     1520    perm      "perm           "  alo=1520
  Chunk        1068f77b0 sz=    12864    perm      "perm           "  alo=12864
  Chunk        1068f56d0 sz=     3240    perm      "perm           "  alo=3240
  Chunk        1068f35f0 sz=     3672    perm      "perm           "  alo=3672
  Chunk        1068ed5a0 sz=    24608    perm      "perm           "  alo=24608
  Chunk        1068eb3d0 sz=     8608    perm      "perm           "  alo=8608
  Chunk        10685e930 sz=     2144    perm      "perm           "  alo=2144
Permanent space    =   125528
******************************************************
******************************************************
HEAP DUMP heap name="top call heap"  desc=1066a20c8
 extent sz=0x20c0 alt=200 het=32767 rec=0 flg=2 opc=2
 parent=0 owner=0 nex=0 xsz=0xfff8
EXTENT 0 addr=ffffffff7bc10008
  Chunk ffffffff7bc10018 sz=      320    perm      "perm           "  alo=320
  Chunk ffffffff7bc10158 sz=    59856    free      "               "
  Chunk ffffffff7bc1eb28 sz=     4224    freeable  "callheap       "  ds=1066a1298
  Chunk ffffffff7bc1fba8 sz=     1112    recreate  "callheap       "  latch=0
     ds        1066a1298 sz=     5336 ct=        2
        ffffffff7bc1eb28 sz=     4224
Total heap size    =    65512
FREE LISTS:
 Bucket 0 size=56
 Bucket 1 size=88
 Bucket 2 size=152
 Bucket 3 size=168
 Bucket 4 size=280
 Bucket 5 size=432
 Bucket 6 size=536
 Bucket 7 size=1048
 Bucket 8 size=2072
 Bucket 9 size=4120
 Bucket 10 size=8216
 Bucket 11 size=16408
 Bucket 12 size=32792
  Chunk ffffffff7bc10158 sz=    59856    free      "               "
 Bucket 13 size=65560
 Bucket 14 size=131096
 Bucket 15 size=262168
 Bucket 16 size=524312
 Bucket 17 size=2097176
Total free space   =    59856
UNPINNED RECREATABLE CHUNKS (lru first):
PERMANENT CHUNKS:
  Chunk ffffffff7bc10018 sz=      320    perm      "perm           "  alo=320
Permanent space    =      320
******************************************************
******************************************************
HEAP DUMP heap name="top uga heap"  desc=1066a22e8
 extent sz=0xffc0 alt=200 het=32767 rec=0 flg=3 opc=3
 parent=0 owner=0 nex=0 xsz=0x1fff8
EXTENT 0 addr=ffffffff7bb90008
  Chunk ffffffff7bb90018 sz=   131048    free      "               "
EXTENT 1 addr=ffffffff7bc40008
  Chunk ffffffff7bc40018 sz=       80    free      "               "
  Chunk ffffffff7bc40068 sz=    65432    freeable  "session heap   "  ds=ffffffff7bc266c0
EXTENT 2 addr=ffffffff7bc30008
  Chunk ffffffff7bc30018 sz=       80    free      "               "
  Chunk ffffffff7bc30068 sz=    65432    recreate  "session heap   "  latch=0
     ds ffffffff7bc266c0 sz=   130864 ct=        2
        ffffffff7bc40068 sz=    65432
Total heap size    =   262072
FREE LISTS:
 Bucket 0 size=56
  Chunk ffffffff7bc40018 sz=       80    free      "               "
  Chunk ffffffff7bc30018 sz=       80    free      "               "
 Bucket 1 size=88
 Bucket 2 size=152
 Bucket 3 size=168
 Bucket 4 size=280
 Bucket 5 size=432
 Bucket 6 size=536
 Bucket 7 size=1048
 Bucket 8 size=2072
 Bucket 9 size=4120
 Bucket 10 size=8216
 Bucket 11 size=16408
 Bucket 12 size=32792
 Bucket 13 size=65560
  Chunk ffffffff7bb90018 sz=   131048    free      "               "
 Bucket 14 size=131096
 Bucket 15 size=262168
 Bucket 16 size=524312
 Bucket 17 size=2097176
Total free space   =   131208
UNPINNED RECREATABLE CHUNKS (lru first):
PERMANENT CHUNKS:
Permanent space    =        0
******************************************************
这样我们就可以清晰分析和研究PGA的结构了。
进一步我们还可以将具体的数据存储结构转储出来(DS),如以上红色字体的地址如下:
SQL> select to_number('10690afb8','xxxxxxxxxx') from dual; 
TO_NUMBER('10690AFB8','XXXXXXXXXX')
-----------------------------------
                         4405112760
SQL> alter session set events 'immediate trace name heapdump_addr level 1,addr 4405112760';
会话已更改。
可惜我这个操作晚了些,未见trace文件生成,但是主要是为了更加细化分析。