This paper describes how to use an Oracle Database tracing feature to write better, faster Oracle-based applications, regardless of whether your code is Java, PHP, C#, Ruby, Python, Perl, C, or something else.
To many application developers, a database is just a “data store” with an API that they call when they need to persist an object. It’s an abstraction that makes sense from one perspective: in a world where you’re expected to write dozens of new features every day in Java, PHP, or C#, who has the time or the inclination to dive into what’s going on deep inside the Oracle Database? As a result of this abstraction, though, developers sometimes inflict unintended performance horrors upon their customers.
The good news is that you can avoid most of these horrors simply by better understanding a bit more about what’s going on inside the Oracle kernel. The trick is knowing which details you need to study, and which you can safely learn later. This paper describes, from a developer’s perspective, some of the most important code paths inside the Oracle kernel that can make the difference between an application that breaks down under load and one that can scale to thousands of users.
This paper, published in August 2011, is the inspiration for chapter 2 in The Method R Guide to Mastering Oracle Trace Data, 2nd Edition. The author has significantly expanded and enriched the material for the book.