Skip to content

DBAzine.com

Sections
Personal tools
You are here: Home » Blogs » Chris Foot Blog » Chris Foot's Oracle10g Blog » Good Documentation is Essential
Seeking new owner for this high-traffic DBAzine.com site.
Tap into the potential of this DBA community to expand your business! Interested? Contact us today.
Who Are You?
I am a:
Mainframe True Believer
Distributed Fast-tracker

[ Results | Polls ]
Votes : 3623
 

Good Documentation is Essential Good Documentation is Essential

Let’s start our series on the Non Technical Art of Being a Successful DBA by covering the art of good documentation. Although the importance of a well thought out and detailed documentation library is blatantly obvious, creating documentation is the task most often postponed by an overworked DBA unit.

Documenting processes, procedures and best practices is a task that is often considered to be boring and mundane. Most DBAs would rather perform virtually any other activity than sit in front of a screen using a word processor. As a result, creating documentation is often postponed until the DBA has a little free time to kill. Today's database administration units are operating with smaller staffs, tighter budgets and ever-increasing workloads. The end result is that the documentation is either never created or created and not kept current.

But a robust detailed documentation library creates an environment that is less complex, less error-prone, reduces the amount of time DBAs spend learning new database environments and reduces the overall time spent on day-to-day support activities. DBAs are able to spend more time administering the environment than finding the objects they are trying to support and the processes and programs used to administer them.

The nature of my business as a remote services provider demands excellent documentation. The majority of environments we administer weren't designed by my organization. The only way that we can ensure high quality and high-speed administration of these environments is to document them thoroughly. We document everything, from initial connectivity and customer contact sheets to detailed information on batch job streams and individual program execution. If we need to be aware of it, we have it documented.

Documentation is also the foundation of many of the other disciplines I will be discussing in future blogs. Let's continue our discussion with a few helpful hints to get you started.

Understanding the Important Role Good Documentation Plays
We all generally understand the benefits that documentation provides. I think that all readers will see the importance I personally place on documentation in upcoming blogs. Virtually every topic that I will discuss, from repeatable processes to paranoid administration best practices, I will be mentioning what to document and the important role that documentation plays.

Let me reaffirm my opinion in this one sentence:

Documentation is one of the foundations for virtually everything I will be discussing in this series on The Non Technical Art of Being a Successful DBA. Enough said.

Creating an Organizational Environment That Fosters Good Documentation
I've been a database group lead off and on for 15 years now. It is my responsibility as manager to create an environment that fosters the production of robust and high quality documentation. Let me describe some of the challenges that I have faced in the past and how I have overcome them.

Since I view high quality documentation to be my responsibility as a database unit manager, I ensure that it becomes part of every DBA's performance appraisal criteria, including my own. If it isn't on my, and my unit's, performance appraisal forms, I will ask to have it added or make my own personal addendum and notify both the DBA team and management that I have done so. I will dedicate an entire blog on tailoring performance appraisals to what DBAs do for a living in this series.

I will add time for documentation when I estimate the amount of time it will take me to perform an administrative task during project planning meetings. I don't settle for "we can do that after the project is complete" as an answer from an application project manager.

If I get overruled and lose one battle, I still make sure I document my activities after the project's critical path is complete. And I don't let a single setback prevent me from telling everyone in the next planning meeting that I need so many hours to document what I have done.

If you continuously sell the importance of documentation sooner or later you will begin to wear your opponent's down. Although I prefer to call it "being relentless", I'm sure that many of the application development managers (and my own managers) viewed it as "being a …." (insert your favorite description here).

Every document I have created that provides a list of activities I , or my unit, needs to perform during a project has documentation included. It helps to integrate it into the fabric and culture of my organization's environment.

Making Documentation Second Nature
You also need to ensure that generating documentation becomes a natural part of your daily activities. You must continuously remind yourself that documentation is a primary and integral part of providing high quality support services to your customers.

You must also remind yourself that it makes your job easier and benefits your fellow DBAs. You know what has really irritated me the most during my career? When a fellow DBA needs to be out of the office for a time and asks me to "help them out" by performing a complex, application specific administrative activity and then tries to verbally tell me how to perform the 300 steps it takes to do it.

Ever try to refresh an ERP application test environment from production when that test environment doesn't have enough space to hold all of production's data? 4,000 steps later and you begin to second-guess your choice of professions. That was the exact request from one of my fellow DBAs a few years ago. Not only did he get me to do the refresh but I also had to document the process for him along the way. Some call that being a good coworker; I would view that as having a big sucker taped to my forehead. Live and learn, I guess.

The moral of this story is: If you don't want to be the only one that can perform that 900 step ERP Application production to test refresh, document it! If you don't want to be called by the on-call DBA because he doesn't know exactly where to add a datafile in an emergency situation (like an application developer forgetting to tell youu that they were loading 10 million additional rows into that 100 row table), document it! The more you document, the easier your life as a DBA becomes.

I've never had a great memory. It makes documentation easy for me. I also like to write and that helps. But I will admit that there are times that I would rather perform virtually any other activity than document.

But it has become easier because I continuously reaffirm to myself the importance of documentation. The more you reinforce that to yourself, the more second nature (and easier) it becomes.

Making Documentation Easy
I'm a huge fan of documentation templates. Here at Remote DBA Experts we have, or are in the process of creating, templates for everything we document. We have templates for documenting connections to our customer's environments, their backup and recovery environments, their application specific processes to name a few. If it needs to be documented on a regular basis, we have a template for it. We also have generic templates for documenting environments and activities that don't fit into other templates.

Microsoft Word document templates provide many features that streamline the documentation process and help to improve the quality of the content they store. I try to take advantage of as many features as I can. I use drop down selection menus, check boxes and radio push buttons to improve the speed and quality of the documentation process. I also take advantage of the help pop-up feature that Microsoft Word provides to create a detailed description of what information is to be entered into that field, check box or radio button.

I created my first template close to 15 years ago. It wasn't created to document a process, but to document a change request. I'll be covering change management in an upcoming series in this blog. Was the document crude? You bet. But it did the job. It has gone through numerous iterations and migrations from one Word release to the next. I continue to use it at organizations that don't have a formalized and documented change management process. And you can't believe how many I have come across that don't.

There are dozens of software companies that offer content management solutions. Database vendors have also recognized this as a lucrative market. All of the major database vendors now offer advanced content management software, each one trying to outdo the other in the number of bells and whistles that their product's offer.

Do a quick search on Google for documentation content management software and you will find out just how many competing products there are.

Content management products offer check-in/check-out features, document versioning, web portal access and advanced workflow capabilities to name just a few of the features desgined to improve content management. The competition in the content management market space is fierce to say the least. Content management vendors know that continuously adding new bells and whistles to their products is not just important for increasing market share; it is critical for their survival. Product costs can range from thousands to tens of thousands of dollars (or more).

If you have the funds and your management understands the benefits that a full-blown content management package provides, by all means begin a content management product analysis. But if you don't have the funds, create a shared drive on your network and declare it to be the "DBA Documentation Portal."

What to Document
By all means this is not an all-inclusive list of what can be documented. Consider it as a starter kit to help you begin your quest for "documentis nirvanas". Is some of this overkill for your particular environment? Maybe, but just consider this a general, high-level list.


Database Environment Documentation

  • Naming conventions
  • Servers (server names, operating system release, hardware vendor)
  • Databases (vendor, database version, features enabled)
  • Directories (everything from Oracle software installations that don't follow Oracle standards, application code storage to personal script locations). If you, or a fellow DBA needs to find it, document where it is!

Application Specific Documentation

  • Application type (i.e. data warehouse, online transaction processing, decision support, third-party application name and functionality it provides).
  • Business unit requirements and related information for supported databases
  • Uptime requirements (i.e. 24 X 7, 8 X 5)
  • Database downtime windows
  • Critical job processes
  • Business unit and application developer contact lists
  • Turnover windows for database changes
  • Problem notification and escalation procedures
  • Security Sensitivity. How sensitive is the data?

Process Documentation

  • Repeatable administrative processes (covered in an upcoming blog)
  • Backups - Probably the most critical set of documentation you will ever create. Document how it is backed up, what scripts back it up, where the back up is going to, tape retentions and backup message directories. If it is involved with a backup, DOCUMENT IT. Review the document with other units that are involved in the backup and recovery process. It is your responsibility to ensure that you don't hear an operator say "What retention period? Nobody told me we were to have a retention on these tapes." when you are in a recovery situation. Remember that Oracle states that human error, including miscommunications, is responsible for over 90% of failed recoveries. If you want to reduce recovery failures DOCUMENT THE PROCESS AND REVIEW IT.
  • Oracle utilities. Document Oracle Import/Export input and output directories and where the files are that execute the utilities. The same with Oracle's load utility. Document the execution scripts and input and output directories. A short note on why you are running it is also required
  • Anything else you run on a regular basis to support a specific application
  • Change Management. I'll be spending an entire blog, or two, on this
  • A daily monitoring activity checklist to ensure that no activity is missed. We have daily, weekly and monthly activities that are to be performed for each of our customers
  • Complex administrative activities performed regularly
  • Test and reporting database refreshes
  • Data reorganizations
  • Disaster recovery tests. The processes required to perform the recovery AND the criteria that will be used to evaluate whether it was successful or not

Object Documentation

  • DBA specific stored PL/SQL programs
  • Day-to-day support scripts (where they are and what they do)
  • Monitoring scripts (where they are and what they do)
  • Scripts used to perform database administrative changes. I have specific directories that provide output from critical database changes that I have performed and other directories containing the SQL used to make that change
  • Operating system scripts. Document what the script does in the beginning of each of your scripts. Ever try to determine what a 400 line script does that was created by someone that knows much more about UNIX scripting than you do? We have all been in that position at one time or another during our career. I'm personally still not good at it. Which is why I never was a great developer (all that IF-THEN-ELSE-OTHERWISE-GOTO-EXIT stuff bored me to tears). Make it easy on your coworkers to understand what the script does by putting comments at the top of the script as well as in the body. Also keep a running history of script changes. What they were and the time they were made

Database Administration Unit Organizational Documentation

  • Contact Information
  • DBA responsibilities. Which databases and tasks they are responsible for
  • DBA unavailablity. Allows application developers to plan for a DBA not being available

It is a good practice to distribute this information to all business units supported by the database administration unit

I hope you enjoyed this blog on documentation and the important role it plays in the Non Technical Art of Being a Successful DBA.

Thanks for Reading,

Chris Foot
Oracle Ace



Monday, July 31, 2006  |  Permalink |  Comments (2)
trackback URL:   http://www.dbazine.com/blogs/blog-cf/chrisfoot/blogentry.2006-07-29.5624951938/sbtrackback

Great Article

Posted by cshapira at 2006-08-01 06:00 AM
I'm a new DBA in a team with absolutely no documentation.
Now the senior DBA is on vacation, and I have tons of trouble with almost everything you mentioned - finding the scripts, understanding them, knowing where to add files, etc.

The list with which documentation should exist is really usefull. I'm planning to put it to use right away.

Thank you very much for the article.
 

Powered by Plone