Consider the explain plan (8i database) :

Plan Table
--------------------------------------------------
| Operation |
--------------------------------------------------
| .SELECT STATEMENT |
| ..HASH JOIN |
| .......TABLE ACCESS BY INDEX ROWID |
| ..................INDEX RANGE SCAN |
| .......TABLE ACCESS FULL |
--------------------------------------------------

when executing this plan, Oracle will first do the index range scan, reading X blocks from index I to access the desired table. Later, it will read more Y blocks from the table T being full-scaned, and finally hash-join the results.
My doubt is : how I can monitor these operations at fly ? Given a session, can I know what object is being read, how many blocks was read until now, remaining blocks ? I know V$SESSION_LONGOPS, but it works ONLY for some operations (for example, PROBABLY the full scan WILL apear, if the table is big enough, but not the N index-acesses). Trace is another option, but it show the past, I would like to know the info on the fly, as the SQL is running. The wait views (like v$session_wait) show only instantaneous info (ie, I can know what obj is being read now, but only IF the most recent wait event is '%file%, immediatly after the completion the data is wipped from the v$.

Regards,
Chiappa