I would be very wary of anything that tried to have the database cache all query results-- that is very likely going to cause lots of extra work maintaining the result cache for 90% of queries that aren't going to benefit. Oracle's cache invalidation algorithm is pretty basic and designed to ensure that stale results are never returned, so any change to an underlying table is going to force the invalidation of the all the result caches that were derived from that table. Assuming that most of your queries are hitting tables that do change with some frequency, that is probably not worthwhile overhead.
You really only want to cache results that
- are expensive to run (otherwise, the marginal benefit of caching the result rather than just caching the data in the buffer cache like Oracle is already doing is minimal. Caching a single-row primary key lookup is probably never going to be worthwhile)
- are constant for a reasonable period of time (ensuring that someone else can use the cache)
- reference tables that are mostly static (ensuring that you don't have to spend lots of time invalidating cached results when you do DML against the table)