War Stories, Episode 004 – The Self-Aggrandizing “Oracle Guru”

Let’s get this out of the way, I was the self-aggrandizing “Oracle guru”.  This story goes back to the year 2000 timeframe when the company I was with was in a merger with another company.  The “incident” started when all the research and development developers from both companies were brought into a sizeable auditorium for a meet-and-greet.



The “incident” that I didn’t know was an incident:

As is typical in these meet-and-greets, you go around the room and each person takes a turn introducing themselves.  When it got to me (I was towards the end) I didn’t really have an “elevator story”, so I stated my name and referenced myself as an “Oracle Guru”.  Mind you, I have been using Oracle since 1985 and by that time had about 15 years’ experience with Oracle.  Well evidently this triggered an indecent that I didn’t know I had started.

Back at the cubicle farm – the gauntlet is thrown:

After returning to our offices and cubicle farm, we were just milling around before returning to work.  Suddenly one of the senior developers (let’s call him Thomas) approaches me and says [with his finger pointing at me, “You have some nerve calling yourself an ‘Oracle Guru’!  There are a lot of people around here who know an awful lot about Oracle, and you just put us all down!”.  I apologized by saying, “I didn’t mean anything by it.  I just meant to reference that I have a lot of Oracle experience and I consider it my specialty.”   Thomas immediately retorts by saying, “If you’re such a ‘guru’ then fix this SQL performance problem I’ve been working on for two days.”  We are now in Tomas’s cubicle, and he shows me the hung SQL statement. I’m very slightly nervous because we have a big audience wondering if the self-proclaimed “Oracle Guru” really is a guru [or perhaps they were just curious about the conflict in the office].  I inquire of Thomas a bit about the problem; turns out he couldn’t get an outer join to perform.  I ask, “What version of Oracle are you on?”  Tomas’s reply is, “Eight”.  I suddenly realize that I may be able to issue the coup de gras.  So, I say, “Did you know that in Version 8 of Oracle you can put a select statement in the select list and thereby avoid an outer join completely?”  Tom looks at me quizzically.  I go on to state that “Well, outer joins are commonly used for lookup tables when the lookup table may not have the translation of a code that is in the main table.  You can replace the outer join with a correlated select statement in the select list.”  I further describe this SQL construct and I can see a light bulb go on above Tomas’s head [sic].  See below for the generic form of what I’m talking about:

select col1, col2, col3
, (select description from my_lookup_table l where l.key = t.key) description
from my_table t
;

 

Thomas turns back to his computer and begins frantically typing the new version of the query – “semicolon”; “carriage return” <syntax error!>.  Thomas fixes the syntax error -- “semicolon”; “carriage return” <Data starts flying by the screen!>

The tremettre à sa place [smackdown]:

At this point, while glad my solution worked, I’m a little peeved that Thomas would make such a big deal about me self-labeling myself as an “Oracle Guru”.  At which point I vociferously declare, “That’s it!  Right here, right now, I’m an Oracle Guru and I don’t want to hear another word about it.”  I leave Tomas’s cube and return to my office [maybe he was mad that I had an office?], albeit still with a head of steam.

A worse war story:

The point is you need to know the capabilities of the software you are using, if you don’t, then you can be in for some hard times.  This reminds me of an even worse war story:  I just happened to bump into an old friend that I hadn’t seen in 13 years or so; let’s call him William (we had both worked together on Oracle projects).  William and his family and me and my family are all swimming in the same community pool on the 4th of July (a few months after the Thomas incident).  We’re standing waist deep in the pool chatting, the kids are playing; we exchange pleasantries, and the topic gets to work.   William, you see is a project manager for a major insurance company and he is the head of this multi-million-dollar effort to move all their databases from Oracle to Teradata.   I thought that was interesting, so I asked, “Why are you doing that?”  William’s reply is, “Well, Teradata outperforms Oracle in outer joins.”  I then said, “That’s interesting.  What version of Oracle are you on?”.  The reply is “Eight.” -- So, I say, “Did you know that in Version 8 of Oracle you can put a select statement in the select list and thereby avoid an outer join completely?”  As I’m explaining the rationale behind this approach, I can see the expression on William’s face change from pleasant to very concerned and I can also see the blood drain from his head (he looked white as a ghost). As it turned out, William’s company launched this multi-million-dollar project, and no one even tested the old (actually new in version 8) correlated select statement in the select list trick.  Again, the point is you need to know the capabilities of the software you are using, if you don’t, then you can be in for some hard times. 

 

Lessons:

  • Be humble when speaking about your credentials; you never know when you might trigger an incident.  Having said that, a little bit of self-aggrandizing is essential in conveying the story of your career/capabilities. Also, I may have been a bit over the top with the smackdown. To be fair, these kind of meet-and-greets can be sensitive, because in a merger, there are often job cuts, and one’s status in the company will weigh heavily in the job cut decisions.

  • I probably should have let William down more carefully; it was actually scary to see the state he was in after the “news”.  This major insurance company could have hired me for 30 seconds and possibly* saved themselves a ton of grief. [*possibly: this solution does not always work].

  • I repeat, you need to know the capabilities of the software you are using, if you don’t, then you can be in for some hard times.

  • Chalk it up to experience and put that one in your bag of tricks.



 

Appeal for More War Stories

That’s it for now.  Again, I’m starting to get volunteers to join me in sharing their war stories, so tune up your war stories.  The idea of a doing the war stories in a podcast format is starting to take shape.  My vision here is to make a place where DBA’s, developers, Oracle “grey beards” and other battle-scarred veteran (and new) techies get together and tell each other their war stories, banter around a bit, and have some fun.  Please contact me if you are interested in having your war story included.  Of course, “the stories you are about to hear are true, only the names have been changed to protect the innocent [guilty]” [some of you old timers will recall where this quote is from].

 

War Stories, Episode 005 – Truncating Tables in the Wrong Schema

War Stories, Episode 003 – A Single SQL Statement Crashes a DB Host Machine