It's a sad fact that we spend more time dealing with performance after development than during design. Yet it's usually the architecture and design of an application that limits its ultimate performance potential. This presentation looks at the principles of designing a high-performance Oracle application. It starts by considering the general principles of logical and physical database design, indexing, and transaction structure. It then looks at Oracle-specific considerations such as partitioning and clustering, SQL statement parsing, data fetching and caching, and the use of PL/SQL.