Misconception: ‘shutdown abort’ is bad

 

Jeremiah Wilton

jwilton@speakeasy.net

 

The best way to shut down a database is to force a checkpoint and then use the ‘shutdown abort’ command.  In the few situations such as cold backups and version upgrades where consistent datafiles are required, the shutdown abort can be followed by a ‘startup restrict’ and a ‘shutdown immediate’.

A common misconception holds that ‘shutdown abort’ is somehow more dangerous or reckless than the other shutdown modes, and can result in data being lost. This is not the case. ‘Shutdown abort’ terminates the Oracle background and shadow processes, and removes the shared memory segments, effectively terminating a running instance. This leaves all committed transactions intact in the online redologs, even if the data associated with them has not been written to the datafiles.  Upon startup, recovery is applied from the online logs beginning from the time of the most recent checkpoint. When recovery is complete, the database is opened for use. Transaction rollback occurs in the background after startup, so no user’s time is wasted waiting for all uncommitted transactions to roll back.

A common argument against ‘shutdown abort’ is that because instance recovery is necessary after a ‘shutdown abort,’ the total time down will “take as long as if shutdown immediate had been used on the way down.” This argument can be easily overcome.  When starting up after a ‘shutdown abort,’ the amount of time spent in instance recovery depends largely upon how recently the last checkpoint was issued.  By forcing a checkpoint immediately prior to issuing ‘shutdown abort,’ the redo required to complete crash recovery and bring the database open will be minimal.

The alternative in an active environment to ‘shutdown abort’ is ‘shutdown immediate,’ but immediate shutdowns take too long, rolling back transactions and performing other tasks while precious seconds pass by.

‘Shutdown abort’ can come in handy for very brief downtimes, such as those required to change a non-dynamic initialization parameter. In practice on Oracle instances with very large SGAs, such quick “bounces” can typically take as little as 25 seconds.

In order to expedite planned shutdowns and startups, the same scripts that are devised for reliable and fast startups at machine boot and shutdown should be used for manual shutdowns and startups. The scripts should be used because they can issue commands faster and more accurately than a human typing, and can be designed to resolve potential complications.

 


Copyright © 2001, Jeremiah Wilton
Reproduction prohibited without permission of the author