?
Why doesn't AlTER SYSTEM SET EVENTS set the events or tracing immediately(三)
ait event pointers 192
shared pool dbgdInitEventGrp: eventGr 136
shared pool event classes 1552
shared pool event descriptor table 32360
shared pool event list array to post 36
shared pool event list to post commit 108
shared pool event statistics per sess 2840096
shared pool event statistics ptr arra 992
shared pool event-class map 4608
shared pool ksws service events 57260
shared pool latch wait-event table 2212
shared pool standby event stats 1216
shared pool sys event stats 539136
shared pool sys event stats for Other 32256
shared pool trace events array 72000
17 rows selected.
Let’s set a system-wide event:
SQL> ALTER SYSTEM SET events = '942 TRACE NAME ERRORSTACK LEVEL 3';
System altered.
And check V$SGASTAT again:
SQL> @sgastat event
POOL NAME BYTES
------------ -------------------------- ----------
shared pool DBWR event stats array 216
shared pool KSQ event description 8460
shared pool Wait event pointers 192
shared pool dbgdInitEventG 4740
shared pool dbgdInitEventGrp: eventGr 340
shared pool dbgdInitEventGrp: subHeap 80
shared pool event classes 1552
shared pool event descriptor table 32360
shared pool event list array to post 36
shared pool event list to post commit 108
shared pool event statistics per sess 2840096
shared pool event statistics ptr arra 992
shared pool event-class map 4608
shared pool ksws service events 57260
shared pool latch wait-event table 2212
shared pool standby event stats 1216
shared pool sys event stats 539136
shared pool sys event stats for Other 32256
shared pool trace events array 72000
19 rows selected.
?
?
So, the “system event array” lives in shared pool, as a few memory allocations with name like “dbgdInitEventG%”. Note that this naming was different in 10g, as the dbgd module showed up in Oracle 11g, when Oracle guys re-engineered the whole diagnostics event infrastructure, making it much more powerful, for example allowing you to enable dumps and traces only for a specific SQL_ID.