From Doug’s Oracle Blog
As I suggested in my last post, there’s at least one more reason that your long-running SQL statements might not appear in SQL Monitoring views (e.g. V$SQL_MONITOR) or the related OEM screens.

When the developers at my current site started to use SQL Monitoring more often, they would occasionally contact me to ask why a statement didn’t appear in this screen, even though they knew for certain that they had run it 3 or 4 hours ago and had selected ‘All’ or ’24 Hours’ from the ‘Active in last’ drop-down list.

I noticed when I investigated that some of our busiest test systems only displayed statements from the past hour or two, even when selecting ‘All’ from the drop-down. I asked some friends at Oracle about this and they informed me that there is a configurable limit on how many SQL plans will be monitored that is controlled by the _sqlmon_max_plans hidden parameter. It has a default value of the number of CPUs * 20 and controls the size of a memory area dedicated to SQL Monitoring information. This is probably a sensible approach in retrospect because who knows how many long-running SQL statements might be executed over a period of time on your particular system?

You can read the full article at Doug’s Oracle Blog.