In addition to the other recommendations so far,

Take a look at V$SQLArea and isolate queries with high disk reads
and high buffer gets that might require tuning.

Check to see if bind variables are used for queries to prevent re-parsing
This should be reflected by your library cache hit ratio.

Check for any hot spots on your disk (any one disk/datafile getting most I/O).

Check Rollback segment usage (you can use the following script).

select a.name, b.extents, b.rssize, b.xacts "#Trans",
b.waits, b.gets, optsize, status
from v$rollname a, v$rollstat b
where a.usn = b.usn;

/*
If the #Trans or waits is consistently > 1 then consider adding new
roll back segments
*/