We all tend to spend most of our time on the “turnpike” of a product’s feature set: you know, the “power” set of its features that get us to our endpoint destinations within the product as productively as possible. Once we’re comfortable with how we’re navigating inside the product, we tend not to take too many exits off that familiar highway. The Quest® Toad® line of product’s are full of those exit points that lead to “off-roading” experiences. Remember: what you’re reading in this series are real accounts about real people doing real things. So let’s rewind life to just over a year ago.
I am on the phone speaking to Vern, a software developer lead who is using Toad for Oracle Base Edition. Vern (not his real name) has gathered some of his team members for a “What’s New in Toad” demo session.
Not long after we start the demo, we discuss the complexity of relationships that exist between objects in Vern’s data models. He jokes that some of their models look like big plates of spaghetti if he were to show me their diagrams. Our conversation at this point goes something like this…
“Vern, do you guys know about the Toad ER Diagrammer?” I mention that they might find it easier to get quicker insight from a scoped-down diagram rather than messing with the full data model. I make Toad generate an ER diagram that finds all tables related to a small set of objects. Vern doesn’t speak, and I hear the team members do a discussion rumble in the background.
Presuming that they’re seeing merit in the ER diagramming feature, I continue. “If you guys like the ER diagramming, you’ll love the Code Road Maps.” I highlight a function, and have Toad create its Code Road Map. I explain that the Code Road Map conveniently pictures the procedural calling hierarchy and database object dependencies of the function’s code.
The background rumble I hear gets noticeably louder. Vern finally pipes up as the noisy group’s chatter dies down.
“Code Road Maps are new?”
No. Code Road mapping has been in the Oracle flavor of Toad for years.
“Triggers, are they mapped out too?” Vern asks.
I manage to find a Code Road Map example involving a trigger, like the one below. Vern’s group immediately breaks out into a full roar. It’s hard for me to tell if they are excited or agitated. It seems that this part of Toad has hit a nerve of some kind.
“Is this something that you guys find valuable?” I ask loudly, trying not to sound annoyed, but wanting to cut through the background din.
Vern finally interjects above the discussion volume.
“Man, this could have saved our hide a few months ago!” he exclaims.
Vern didn’t wait for me to ask him to elaborate. He continues with a tone in his voice that makes me think his experience happened only yesterday.
Three months prior to our call, Vern and team faced a crisis
An important round of application code changes and database object changes were ready to push into production. On schedule, no less. But the User Acceptance Test team would not give the final green light, delaying the production roll-out.
The hold up?
Test transactions entered by users through the application side did not match test audit log history
To make matters worse, this roll-out was strategic in that the company and several of its Distributor-Partners were expecting an on-time release of the system to support a new product solution line. And they had customers waiting in the wings for these new products.
Phones started to ring.
Management banged on office doors.
VPs wanted answers.
Vern and teams were feeling heat.
Turns out that this problem was a subtle one to troubleshoot. Despite double- and triple-checking application and database procedural code, it took over three very anxious days for the team leaders to identify the issue.
Here’s what happened
In the previous Production release a few months prior to this attempt, one database object got pushed into Production unawares: a trigger. That trigger contained logic that updates an audit log for validation purposes on the User Acceptance Test database. So during the months that followed, production-side updates to one of the master tables were being logged to the TEST system’s audit log instead of the PRODUCTION system’s audit log. No one noticed until it was time to validate tests for the system’s next scheduled release, when it became clear that end-user transactions during tests were not matching logged entries in the test audit log.
Developers were not able to see the problem directly because none of the main procedural lines of code ever touch the audit log. The audit logs in their system are maintained by triggers, and triggers don’t get “called” within procedural code directly; they typically fire before or after events like update/insert/delete activity on tables.
That subtle relationship is easily missed, and took one half-week for the team leads to realize that this was the cause creating undesired side-effects in the audit history.
Toad's Code Road Map could have been the remedy for indigestion
Vern ventures a guess that the Toad Code Road Map feature would have saved them two calendar days of effort by quickly identifying dependencies between procedural code logic and the database objects which the code references.
But for Vern personally, the value of Toad’s ability to shorten time to problem resolution pales in comparison to the anguish—and indigestion—Toad could have helped him avoid.
Vern paints a dark picture of how he felt during that half-week
There’s the panicky feeling that engulfs you when a “fire” breaks out in the building you’re in, and the building is ready to come down. You’re throwing at it all your fire-prevention arsenal, but the fire still rages, and people scream at you “to do something” because you’re “the fireman”: you get paid to put these kinds of fires out to save lives.
There’s screaming, and phone calls, and animated triage meetings.
The wife misses you, and the kids wonder why Daddy’s late coming home from work.
There’s moments of doubt that make you wonder why you ever took this job. And all this gut-wrenching, Tums-popping, gray hair-producing stress takes its toll.
Vern laments that he found nine gray hairs after that particular week’s ordeal
I think he’s joking, and chuckle at his comment. But Vern isn't returning my chuckles. I'm thinking "wow, maybe he really was counting.” I play it safe and empathize with him, explaining that I spent the first 10 years of my career in IT: I know how it feels.
Go off-roading with Toad
We manage to continue the Toad demonstration, and in time I conclude our session by encouraging Vern and his colleagues: there’s much to explore and discover within Toad’s interface. You just have to take a little time and be open to do some exploring. Do some off-roading.
I’m painting a brighter picture for Vern these days. I like to think that he took me up on my advice. I see a happier Toad user who allows his fingers to exit the main-features turnpike once in a while. I picture his hair blown back by the wind as he free-wheels down some Toad terrain enjoying scenery that few have the time to discover. And that gray-hair count? Still holding at nine…
Diagramming and mapping code isn't hard and saves time, maybe your life
Want to know more details about the ER Diagrammer and the Code Road Map? Check out these posts on ToadWorld, Video: 'Dan's Dozen' Quick Toad Tips – Tip #10 – ER Diagrammer and this getting-started blog, Toad for Oracle Code Road Map, written by one of my colleagues.
Quest Software has been helping database management professionals for nearly 25 years, providing solutions that help you simplify the complex, reduce cost and risk, and drive improved performance. Maybe that’s why we’re consistently voted #1 by DBTA readers and have 95%+ customer satisfaction rate. Learn more about Toad for Oracle by visiting our product page and find out how you can modernize your Oracle database operation to enable business agility.
Learn more about how Toad database management tools from Quest can help with database development, performance tuning and database DevOps.
Our Toad family of products are continually evolving and getting better because we listen to you, our customers.
Do you have questions? Please post questions to the Toad for Oracle forum on Toad World®.
More blogs from Gary
For more real-world stories like this one, and other Toad solution insights, read Gary’s other posts.
Help your colleagues
If you think your colleagues would benefit from the ToadTurnpike blog series, share it now on social media with the buttons located at the top of this blog post. Thanks!
**AUTHOR’S NOTE:This is a re-posting of the another blog in the Toad Turnpike series, originally posted on Quest's Communities site.