Remember that the numbers in V$SYSTEM_EVENT are cumulative since the
last instance startup. Query V$SYSTEM_EVENT a few times to get the system-level
baseline and a delta. You can then drill down to V$SESSION_EVENT and run the
preceding query a few times to get the session-level baseline and delta. Armed
with that information, query V$SESSION_WAIT looking for the buffer busy waits
event(s) for the active sessions in the database. Jot down the values of P1 and P2.
P1 is the file number and P2 is the block number where the buffer busy waits are
occurring (these numbers may change rapidly, but you will at least be on the right
file to determine the source of your bottleneck). Use the file number to join with
the DBA_DATA_FILES view and use the block number to join with the DBA_
EXTENTS or UET$ views to determine the segment name that is experiencing
the contention. Now check the V$WAITSTAT view and check for any rollback (or
undo) block waits: