How much availability is enough? In this Internet age, the push usually is to provide never-ending uptime -- 365 days a year and 24 hours a day. At 60 minutes an hour, that means 525,600 minutes of uptime a year. While 100 percent availability is a laudable goal, it is unreasonable to assume that it’s achievable. The term "five nines" is used to describe highly available systems. It refers to 99.999 percent uptime and is used to describe what is essentially 100 percent availability, but with the understanding that things fail and some downtime is unavoidable. A five nines database would be available all but for five minutes per year!
Even though 100 percent availability is not always reasonable, some systems are achieving availability approaching five nines. But just because high availability can be built into a system does not mean that every system should be built with a high availability design. A highly available system can cost many times more than a traditional system designed with unavailability built into it.
Whenever high availability is a goal for a new system, database, or application, careful analysis is required to determine how much downtime users can actually tolerate, and what is the impact of an outage. As a DBA, your job is to investigate the reality of the requirement as opposed to the initial desire of the end-user. Products and features that simplify and automate maintenance functions are key to achieving five nines. DBAs need tools that reduce maintenance time from hours to minutes or require no maintenance time at all, while allowing users continued access to the data they need to do their jobs. Some DBMS products provide built-in features to perform some maintenance tasks while the database is available. When the DBMS does not provide native support, tools are available from ISVs that provide additional database availability. The key is to utilize non-disruptive database utility functionality. The definition of a non-disruptive utility is a task that provides both update and read access to a database during execution of database maintenance -- and to do so without a loss of data integrity.
But most database maintenance tasks impact availability. Making backups of data, recovering data, checking data for integrity violations, capturing database statistics, and loading new data into a database all can adversely impact availability. You can improve overall database and application availability by building more automation into DBA procedures. Properly created, automated tasks will fail less frequently than manual tasks. Complex tasks can benefit from automation.
Exploiting the advanced features of your DBMS is imperative to achieving high availability. Each new DBMS release brings additional availability options and features that can be exploited to enhance uptime and availability. When your DBMS is engineered to work with clustering and parallel technology, be sure to design your databases that require high availability to work well with that technology.
Finally, acquiring and exploiting advanced hardware can improve database availability. Clustering is one option for increasing the reliability of servers. The actual implementation of a server cluster can range from computers that share storage to groups of servers that can redistribute the workload of one to another with the help of special software. A big advantage of clustering is the ability to increase computing power by adding another server, or node, to the cluster. When throughput increases due to expanding business (or even publicity), systems can be kept online and available by adding more servers.
Organizations have to find a balance between the seemingly incompatible needs for five nines of availability and periodic maintenance. A poorly maintained database is a business inhibitor and will be nearly impossible to restore in the event of a crisis. To deliver five nines, the DBA must implement a maintenance and backup strategy that provides optimum availability.