[20210729]heapdump UGA.txt
--//昨天听课说到heapdump Dump,当我看到level马上出现一个疑惑。从网上抄一段内容。
alter session set events 'immediate trace name heapdump level <level>';
alter session set events '<error#> trace name heapdump level <level>';
SQL> alter session set events 'immediate trace name heapdump level n';
--//其中的level n决定了将哪些内存堆转储到跟踪文件:
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详细信息 --//应该是4100.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Level 8200: 当前调用的详细信息
Level 16400: 用户调用的详细信息
Level 32800: Large pool的详细信息
--//比如Level 2:SGA汇总信息,而Level 2050: SGA详细信息
--//2050 = 0x802
--//Level 1025: PGA详细信息,1025 = 0x401
--//你可以猜测前面数字是按照乘以2的方式递增的,中间什么可能出现5000呢?应该是4100 = 0x1004,这样才是等比排列。
--//从网上下载 DSI 301文档,M09533.pdf,P123页,可以发现上面表示的确实是5000,而前面的hex=0x1004 ,0x1004= 4100.
--//很明显网上的链接都是抄来抄去,谁也没有注意这个细节,实际上UGA详细信息的level实际上是4100=0x1004.
--//DSI 301的pdf文档无法拷贝和粘贴,自己划了一个表格。
heap description <level> (hex|Dec) <level> with contents (hex|Dec)
-----------------------------------------------------------------------------
Top PGA 0x1 1 0x401 1025
Top SGA 0x2 2 0x802 2050
Top UGA 0x4 4 0x1004 4100
current call 0x8 8 0x2008 8200
user call 0x10 16 0x4010 16400
large pool 0x20 32 0x8020 32800
-----------------------------------------------------------------------------
--//自己尝试看看.
--//5000 = 0x1388,4100 = 0x1004
SYS@book> alter session set events 'immediate trace name heapdump level 5000';
Session altered.
SYS@book> @ pp
TRACEFILE FILE_NAME
-------------------------------------------------------------------------------- ------------------------------------------------------------
/u01/app/oracle/diag/rdbms/book/book/trace/book_ora_19619.trc book_ora_19619.trc
$ grep "HEAP" /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_19619.trc
HEAP DUMP heap name="callheap" desc=0xc0d1000
HEAP DUMP heap name="java pool" desc=0x601c2a00
SYS@book> @ tix
New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_19619_0001.trc
SYS@book> alter session set events 'immediate trace name heapdump level 4100';
Session altered.
$ grep "HEAP" /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_19619_0001.trc
HEAP DUMP heap name="session heap" desc=0x7f9e3aca61a0
--//很明显前面5000是错的.
SYS@book> @ tix
New tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_19619_0002.trc
SYS@book> alter session set events 'immediate trace name heapdump level 4';
Session altered.
$ grep "HEAP" /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_19619_0002.trc
HEAP DUMP heap name="session heap" desc=0x7f9e3aca61a0
--//再次验证5000是错误的.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2784847/ ,如需转载,请注明出处,否则将追究法律责任。