Wednesday, November 02, 2005

Oracle Insights: Tales of the Oak Table

A recent book review of "Oracle Insights: Tales of the Oak Table" by Doug Burns, combined with the introduction of Mogens Norgaard's new blog motivated me to finally finish my own review of his book, which has sat incomplete since I first read it 6 months ago.

Doug Burns' Book Review of "Oracle Insights:"
http://oracledoug.blogspot.com/2005/10/book-review-oracle-insights-tales-of.html

Mogens Norgaard's new blog:
http://wedonotuse.blogspot.com/

Oracle Insights is a series of essays from a variety of relatively like-minded authors that together comprise the Oak Table Network. This network includes some of my favourite authors, a group of individuals who are very excited about their experiences with Oracle and are eager to both share their insights, and gain even more.

For more about the Oak Table Network, visit their web site:
http://www.oaktable.net/main.jsp

Oracle Insights is a wonderful collection of essays from a very talented and enthusiastic bunch of Oracle experts. It starts with a great history of Oracle, and then is followed by 10 chapters, basically split evenly between the topics of performance/tuning and collections of war stories of Oracle projects gone bad.

Being a collection of essays, each chapter is stand-alone, linked together only by Mogens Norgaard's prefaces. In fact, I really enjoyed the prefaces because they were very casual and personal. Normally I skip prefaces because they're carefully scripted, bland advertisements for a book you're already reading, but Mogens were short, and served to put a human face to each of the authors.

Because of the nature of this book, I will briefly review each of the essays before going into my overall impression of the book. First, you may want to visit Jonathan Lewis' site, where he has a synopsis on each chapter as well as some anonymous reviews (with his responses):
http://www.jlcomp.demon.co.uk/book_rev_2.html

Chapter 1: A Brief History of Oracle, by Dave Ensor

Without question, this is the highlight of the book. It is much longer than the other essays (maybe he should drop "Brief" from the title), and he does tend to go on from time to time, but this is still the hardest chapter to put down. It is admittedly not a complete history, but it touches on the evolution of Oracle from Ted Codd's original paper of Relational Databases to what Oracle is today. It organises Oracle's responses to Codd's 12 Rules, and then some of the other related hot topics over the years that shaped Oracle into what it is today: e.g. Transactional Integrity, Isolation Levels, Privileges, Rule Based Optimizers. It then covers Oracle version-by-version discussing the new features, their motivations, and their consequences, right up to and including version 10.

I've heard it said that this chapter alone is worth the price of the book, and its hard to disagree.

Chapter 2: You Probably Don't Tune Right, by Mogens Norgaard

There are at least 5 chapters that focus on performance and tuning, this being the first and probably the weakest. Let me qualify that. First of all, I mean that more out of praise to the other essays than an indictment of this one. Indeed, this essay is (at least in part) a summary (or high-level view) of the others.

Secondly, this chapter's strength is not in "tuning" but rather on the topic of Instrumentation. I think that would have made a better essay, and that's what makes it worth reading.

One word on the style. This chapter is more like a narrative, or a conversation that the author is having with you. I'll be honest, that's not really my style (although its great for prefaces). For example, sometimes it gets repetitive. ("the Oracle database is by far the best database around, technically speaking", next page: "Oracle is technically the best database around.")

Chapter 3: Waste Not, Want Not, by Connor McDonald

Connor McDonald is perhaps the most talented writer in the crowd, and that's saying a lot. His essay includes examples of inefficient (or "wasteful") applications, SQL statements and PL/SQL blocks. Even in this short essay, he describes how he found these wasteful cases, why they were wasteful, and how to correct them. Those that learn from example will particularly enjoy his lessons.

Chapter 4: Why I Invented YAPP, by Anjo Kolk

The shortest chapter, and now the third on performance. This chapter is only of interest to those that have already read (and enjoyed) Anjo Kolk's famous (and awesome) paper on Yet Another Performance Profiling Method. Here is the link to that paper (after a free registration):
http://www.oraperf.com/logon.html?rpage=download.php/yapp_anjo_kolk.pdf

Chapter 5: Extended SQL Trace Data by Cary Millsap

This one, you can judge for yourself, because this chapter is available on-line right here:
http://www.oracle.com/technology/books/pdfs/oaktable_ch5.pdf

If you want to hear a little bit more about this chapter, I found that it was consistent with Cary Millsap's other work, about which you can find a review of mine here:
http://thinkoracle.blogspot.com/2005/05/optimizing-oracle-performance-millsap.html

Chapter 6: Direct Memory Access, by Kyle Hailey

Because of the developer in me, this was one of my favourite chapters. Kyle Hailey relays a story about having met and worked with an Oracle master named Roger Sanders and his "m2" application, which could access the memory Oracle was using directly. Having opened our minds to the possibilities, his story leads into a discussion on Oracle's SGA (Shared memory) and DMA, leaving you thirsting for more. A very memorable chapter for fans of the nuts and bolts, and yet is not that heavy a read.

Chapter 7: Compulsive Tuning Disorder, by Gaja Krishna Vaidyanatha

It is time not only for yet another chapter on performance and tuning, but also for a comedy break. Don't get me wrong, there is just as much substance as the other chapters, especially for fans of the Oracle Wait Interface.

The most valuable contribution of this chapter is the so-called "Cure for CTD". It is a 2-pronged methodology that focuses both on the OWI and the OS. It is very clearly summarized on page 235: photocopy it and pass it around to your team. After explaining the system in very clear and specific terms, the chapter closes with 2 appropriate examples. Even your junior DBAs can now look like pros.

If they had decided there were far too many chapters on performance and tuning (which there are), and decided to only keep one, this chapter would have my vote.

Chapter 8: New Releases and Big Projects, by James Morle

This essay deals with one particular Oracle project gone bad. It starts where the author joined in, describing the mess his predecessors had gotten themselves into, and then all the problems they had to contend with along the way. A fun read.

Chapter 9: Testing and Risk Management, by David Ruthven

"Poor engineering practises remain the root cause of application failures and there is usually very little in the way of contingency planning to avoid and minimise the impact of such failures." - David Ruthven.

In this chapter, David Ruthven breaks a database application project down, dividing it into types and levels, and identifies where they often go wrong. He includes something for everyone, for example I enjoyed his summary on the ingredients to an effective development environment. He even helps quench the thirst for more on Instrumentation that was first whetted in Chapter 2.

The second half of his chapter focuses on testing. He touches on functionality tests, white box and black box tests, regression tests, automated tests, scalability tests - everything you wish your manager had read about.

Chapter 10: Design Disasters, by Jonathan Lewis

More war stories, for fans of Chapter 8! "Now prepare yourself to read all about 'The World's Worst Oracle Project.'" - Jonathan Lewis.

This chapter describes some of the most common mistakes in development Oracle database applications. You'll certainly recognise some of them, because so many people stubbornly cling to certain beliefs. I know I like to bring up several of his points when I get into common arguments like these:
1. We want our application to be "Database Independent."
2. We will check data integrity at the application level instead of taking advantage of Oracle's constraint checking abilities.
3. We want to use sequences for our primary keys.

I won't give away too much of this chapter, but its definitely food for thought for anyone who has ever been (or plans to be) involved in a database application development project.

Chapter 11: Bad CaRMa, by Tim Gorman

The book closes with another war story. We get a look at Vision, a custom-built order-entry and customer-service application (a CRM). "This story is about such an IT project, the most spectacular failure I have ever experienced." - Time Gorman. (Why do we enjoy the chapters about failures so much?)

Appendix: Join the BAARF Party, by James Morle and Mogens Norgaard

This is a rant against Raid-5. Check out their web site for more:
http://www.baarf.com/

Overall Impression:
This book has been fairly widely praised throughout the Oracle community. It received 4.5 out of 5 stars on Amazon.com and even PSOUG's Dan Morgan gave it a very high recommendation:
http://www.psoug.org/bookrev.html

Personally I would love to see many more books like these. I certainly hope there is a sequel coming up with even more essays from the most gifted and enthusiastic authors in the Oracle community. I would even love to see more of these essays expanded into books. This book is a very fun read, and I guarantee every Oracle specialist will find several essays within that they will enjoy. High recommendation.

Comments:
"Chapter 10: by Jonathan Lewis
3. We want to use sequences for our primary keys."

Maybe I missed something here, what is wrong about using sequences for pk???
 
There is a tendency in Oracle projects to implement sequences incorrectly. You're right, that's not a good enough reason to avoid the practise entirely, but it is a decision to take seriously.
 
Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?