Author: Thomas Kyte
Publisher: Apress, 2010
Aimed at: Developers who need to know about Oracle
Pros: A readable, dense book that will teach you exactly how to develop applications for use with Oracle
Cons: Density of information means you’ll be reading for a long time
Reviewed by: Kay Ewbank
This second edition on Programming Techniques and Solutions covers Oracle Database 9i, 10g and 11g.
There are some titles that sound like they’ll be heavy going even for the most enthusiastic database programmer, and the thought of 750 pages of bedtime reading about Oracle Database Architecture falls into that category. However, in reality this is a very useful and interesting book. Really, I mean it. Interesting, that is, for any programmer who needs to get to grips with Oracle from their applications. As Tom Kyte, the author, points out, if you’re writing a database application then the database is the most important piece of software you’re using, so don’t treat it like a scary black box, get to know it as well as you can.
Tom Kyte is well known in the database world as the author of a popular column called Ask Tom in Oracle Magazine. This background (alongside years working for Oracle and developing database applications) means he sees a wide variety of aspects of how Oracle is really used, and how it ought to be used. Kyte is very readable, and doesn’t go in for trying to sound academic; he’s a very hands-on, down-to-earth writer who uses anecdotes to keep the material readable. The anecdotes aside, he doesn’t waste time and space on unnecessary waffle; this book is 750 pages of solid knowledge on how to make Oracle work well in your applications. This isn’t to say you need to be a database expert to understand it; the book starts very accessibly with a look at what makes a successful Oracle application that covers the Oracle architecture, concurrency, and a few key ideas such as bind variables.
Having looked at how Oracle uses files, parameters and memory structures, the book moves on to cover Oracle processes - a key element that differentiates Oracle from SQL Server (for example) is the way Oracle expects you to use connection pooling to make efficient use of the server. There’s a good chapter on locking and latching, and another on concurrency and multi-versioning explains why so many applications run into difficulties. Transactions and redo and undo get a couple of chapters to themselves. It’s not until chapter 10 that you meet database tables as a concept, but the point is that Kyte isn’t trying to tell you ‘this is how to create a table’; he wants to get across the more complex aspects such as heap organized tables, hash clustered tables - the bits other books tend to leave out. The chapter on indexes, likewise, covers ideas such as B*tree indexes, bitmap indexes, and function-based indexes. There’s a lovely section on frequently asked questions about indexes and myths about indexes.
The latter part of the book looks at datatypes, partitioning, parallel execution, data loading and unloading, and data encryption.
One possible criticism of the book is that a proportion of what Kyte says assumes you’ll be developing against Oracle Enterprise Edition, so some of the chapters (and some of the techniques discussed elsewhere) won’t be relevant if you’re using one of the more basic editions.
I’m not claiming this book is light reading. It’s very dense, and the ideas are in many cases both subtle and complex. If all you need to write is an application that just connects to a database and returns a couple of customer names, it will be massive overkill. If you want to write an application that works really well on an Oracle database, or you want to take an existing application that’s crawling and make it acceptable, this book should be your bedtime reading. It will take you quite a long time to wade through it, but you’ll know a lot more about Oracle - more than most DBAs - when you’ve finished.