That's a much more soft definition, because we dont really select tables, we run queries.
For example:
SQL> set autotrace traceonly explain
SQL> select count(*)
2 from scott.emp e,
3 scott.dept d
4 where e.deptno = d.deptno;
Execution Plan
----------------------------------------------------------
Plan hash value: 2083865914
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 3 | 3 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 3 | | |
|* 2 | TABLE ACCESS FULL| EMP | 14 | 42 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("E"."DEPTNO" IS NOT NULL)
SQL> set autotrace off
The *query* references DEPT but we never actually touched DEPT. Does this count ?
If you want to see where tables are *referenced* then you could mine the sql text in v$sqlstats and make some guesses. You could also mine the object_name in v$sqlplan (but there is still the caveat above).
Similarly, v$segment_statistics can give some rough guides....