转储命令:
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的详细信息
将地址空间进行命令转储,查看该空间的内容:
alter session set events 'immediate trace name heapdump_addr level 1, addr n'
v$diag视图查询当前跟踪文件:
select * from v$diag_info where name='Default Trace File';
_use_realfree_heap作用:实时释放(即PGA自动管理和手动管理的区别)
该参数存在于系统表 x$ksppi 中
查询该参数设置的SQL:
select x.ksppinm name, y.ksppstvl value, x.ksppdesc describ
from sys.x$ksppi x, sys.x$ksppcv y
where x.indx=y.indx and x.ksppinm like '%&oar%'
输入realfree,结果
NAME VALUE DESCRIB
-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
_realfree_heap_max_size 32768 minimum max total heap size, in Kbytes
_realfree_heap_pagesize_hint 65536 hint for real-free page size in bytes
_realfree_heap_mode 0 mode flags for real-free heap
_use_realfree_heap TRUE use real-free based allocator for PGA memory
1、当该参数设置为true,则UGA、CGA将单独分配,不从PGA中分配堆
2、当该参数设置为false,且当设置了pga_aggregate_target后,它将自动该为true
上述2种情况属自动PGA管理,当_use_realfree_heap为true时,session结束时将内存直接返回给OS,更利于PGA的分配和使用
3、传统情况下(9i之前)手工管理PGA
UGA在PGA中分配,当session耗费大量PGA内存,执行完毕后,内存仅释放给PGA而非OS,这将导致过度PGA内存使用