I've been looking for something to read about Oracle recently and couldn't wait until
Jonathan Lewis' CBO book arrived. I knew of
TOTOT (as Mogens Nrgaard has referred to it) and planned to buy it at some stage because I've loved past work by some of the authors, but didn't rush to buy it because
I wasn't as sure about the OakTable concept as others seemed to be. (That last link isn't there because of any strong desire to propagate these views further, but I'd rather be honest about what I've said in the past.) It's important to state at the outset that I came at this book with a
slightly jaundiced view.
Well, now that I've finished it, I can certainly recommend it, particularly for the following
- Mogens' introduction which explains the genesis and purpose of the OakTable Network. Described in this way I felt more comfortable about what these guys are about. I've often found that where there's a sense of humour, a sense of humility isn't too far behind. I was also deeply impressed by Mogen's funny, elegant writing style. One important point that Mogens highlighted, bearing in mind the upcoming UKOUG conference, is that it sounds like they would be quite happy to solve some straightforward problems you might have as part of the Oak Table Challenge - not just have you rack your brains for something difficult!
- Dave Ensor's chapter about the history of the Oracle RDBMS, because I learnt a couple of new things - one about afiedt.buf (I'd heard something along these lines before, but never seen the real reason) - and that SQL was sharable in version 6. I was sure that didn't come along until version 7. Then again, James Morle seems to contradict it, so I'm not sure.
- Connor MacDonald's chapter about making applications more efficient, with some case studies. This is similar to some things I'm thinking about at the moment - tuning without mentioning the wait interface at all. Or, to put it another way, separating performance tuning from writing efficient applications, and then writing about the latter. I particularly liked Connor's solution to the 'temporary tables' problem he encountered. I felt I learnt more from this chapter than the others because he focused on problems that he'd come across, which are bound to be slightly different to those I've come across, so it added to the list of things I might see one day and possible solutions.
- Kyle Hailey's chapter on Direct Memory Access, which was the most interesting to me. It reminded me of the more technical approaches that were required when trying to make a ZX Spectrum Game run quickly (more about that another time, maybe).
- Jonathan Lewis' chapter on Design Disasters. I do tend to like Jonathan's work but I particularly liked the down-to-earth nature of this. It discusses some of the day to day compromises you sometimes have to make and how important it is to focus on what really matters to the business. I also couldn't agree more with his views on naming standards. Not so long ago I worked for a company who were absurdly proud of their naming standards which took every new contractor a minimum of a month to understand. It was a constant obstruction and to think that someone had obviously spent considerable effort on it!
I suspect (but can't possibly know) that this book will work for you regardless of your own level of Oracle skills.
- If you're a beginner, this is a very readable book that will get you thinking about the important things from the start.
- If you're intermediate, you'll have come across some of these issues but will be able to learn from the problems others have faced, adding some of these guy's experiences to your own. None of us have experienced everything.
- If you're advanced, I don't think you'll learn too much, but it's entertaining, you'll have a bl**dy good laugh and that 'tell me about it!' feeling

Thoroughly recommended.