> 10200 is especially intrusive, because it emits a line of text to the
> trace file for every buffer cache access that takes place.
Btw, you can use event 10812 in conjuction with KST tracing to get less
intrusive consistent get tracing into X$TRACE buffers.
X$TRACE example:
SQL> select pid from v$process where addr =
2 (select paddr from v$session where sid =
3 (select sid from v$mystat where rownum = 1));
PID
----------
15
1 row selected.
SQL>
SQL> alter tracing enable "10812:1:15"; -- event#:level:PID
Tracing altered.
SQL>
SQL> select data from x$trace where event=10812;
no rows selected
SQL>
SQL> select to_char(dbms_utility.make_data_block_address(
2 dbms_rowid.rowid_relative_fno(rowid),
3 dbms_rowid.rowid_block_number(rowid)),
4 'XXXXXXXX') HEXDBA
5 from t;
HEXDBA
---------
40EDFA
1 row selected.
SQL>
SQL> select data from x$trace where event=10812;
DATA
-----------------------------------------------------------------------
0x000000000040EDFA 0x0000000000000000 0x00000000000B5FE2
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x000000000040EDFA 0x0000000000000000 0x0000000000000000
Or alternatively you could just enable in-memory buffering for the regular
ksdwrt() tracing with:
alter system set events 'immediate trace name trace_buffer_on level 1048576';
That should reduce the number of system calls made, instead writing every row
to OS a write call is made once buffer is full or the flush is requested
manually.
Cheers,
Tanel.