Having to upgrade a database schema makes installing a new release of software a lot trickier. What are the best practices for doing this?

I'm looking for a checklist or timeline of action items, such as

  • 8:30 shut down apps
  • 8:45 modify schema
  • 9:15 install new apps
  • 9:30 restart db

etc, showing how to minimize risk and downtime. Issues such as

  • backing out of the upgrade if things go awry
  • minimizing impact to existing apps
  • "hot" updates while the database is running
  • promoting from dev to test to production servers

are especially of interest.

Edit
Report