10235 (check memory manager internal structures) event内部诊断事件,当oracle SGA内存堆heap 管理操作发生错误时会触发该检测事件(For the sga heap, the internal error is signaled only when heap checking (event 10235) is enabled),其级别列表如下:
[oracle@nas ~]$ oerr ora 10235 10235, 00000, "check memory manager internal structures" // *Cause: // *Action: List of Levels for Event 10235 Level 1: Check heap before heap is freed. Level 2: Level 1 + fill allocation and frees with 0xff. Level 3: level 2 + checks to make sure chunk belongs to heap prior to operation (free, grow, make chunk as freeable with mark). Scan of extents, could get expensive Level 4: level 3 + allocates permanent chunks as freeable chunks. This accomplishes two things: all permanent allocations are in their own chunks and the comments for the permanent chunks appear in a heap dump. The following levels should be OR'ed in together. For example, in order to use levels 2, 8 and 16, event 10235 needs to be set to level 26. Level 8: Check heap on every operation to the heap. Level 16: Level 8 + check top PGA heap and SGA heap. Level 32: Level 16 + check all heaps in the top pga heap, recursively; check SGA heap. Level 64: Level 32 + check SGA heap if started up in single_process=true. Level 256: align chunks at the bottom of a page and page protect the page that follows the chunk, to catch writes off the end of a chunk, for all heaps. Level 512: Like level 256, except for all heaps in the pga heap; so this event is useful for detecting corruption in the pga heap and pga subheaps. This can also be enabled on specific heaps or chunks with specific comments. Level 65536: Enable CPM(Commented PerManent chunk) Keep comment for permanent allocation. It's useful for detecting memory growth/overrun in permanent space. If you need to investigate the allocations for "library cache", The combination of event 10049 level 10100 and this event will help to have more descriptive information.
注意只有当 怀疑oracle实例存在内存讹误(memory corruption)或者深入研究KGH堆管理内部原理的时候才有必要使用该10235事件,不要在生产库设置该诊断事件!! 不推荐在session会话级别设置该event 可能引起问题,具体的设置方法如下:
alter system set event=' 10235 trace name context forever,level 512 ' scope=spfile; restart instance;
实际上绝大多数情况下我们不会用到10235 event, 即便是提交有关内存泄露(memory leak)或者内存讹误(memory corruption)的SR后 oracle Support 要求你上传一些heapdump的trace信息, 直接做heapdump转储也已经足够了, 具体用法如下:
alter session set event 'trace name immediate heapdump level <n>'; level 级别列表如下: 1: pga heap, 1025: pga heap w/ contents 2: sga heap, 2050: sga heap w/ contents 4: uga heap, 5000: uga heap w/ contents 8: current call heap, 8200: current call heap w/ contents 16: user call heap, 16400: user call heap w/ contents 32: large alloc heap, 32800: large alloc heap w/ contents 若希望dump转储某个特定的subheap ,则先要知道该heap descriptor 的address地址 alter session set event 'trace name immediate headump_addr level <addr>';