First of all let me just say that the fact that your system is nicely indexed, does not mean that it is performing at the optimum level. As it is a known fact that blind use of indexes may at times be the actual source of performance problems. That is why you need to look at sql statements that do the most LIOs and tune them one by them in their severity order. You could also try to go FTS using Oracle Parallel Query to see if that helps performance.
Answers to questions:
1. In importance order, it may be un-tuned sql, inefficient design, oracle db, storage and then OS IMHO.
2. Can't say might want to have a look at benchmark factory from quest.http://www.quest.com/benchmark_factory_for...es_benefits.asp
3. Write efficient code. Identify and isolate then problem, Ö.. and then fix problem. Use statspack and other monitoring tools to monitor. If you canít afford all that.... then throw hardware, but that would the last thing on my list personally.