Applying transaction logs individually

The following steps describe how to apply each transaction log to the database individually when recovering. The procedure assumes that previous backups of the database file have been made and are available, for example on tape.

To recover the database using the -a option

  1. Make a copy of the database and log file.

  2. Restore the database (.db) file, not the log file, from tape into a temporary directory.

  3. In the temporary directory, start the database, applying the old logs using the -a option, applying the named transaction logs in the correct order.

  4. Start the database using the current transaction log and the -a option to apply the transactions and bring the database file up to date.

  5. Start the database in your normal way.

    Any new activity is appended to the current transaction log.

Example

Suppose you have a consolidated database file named c:\dbdir\cons.db. The transaction log file c:\dbdir\cons.log is mirrored to d:\mirdir\cons.mlg.

Assume that you perform full backups weekly, and you perform incremental backups daily using the following command:

dbbackup -c "uid=DBA;pwd=sql" -r -t e:\backdir

This command backs up the transaction log cons.log to the directory e:\backdir. The transaction log file is then renamed to datexx.log, where date is the current date and xx is the next set of letters in sequence, and a new transaction log is started. The directory e:\backdir is then backed up using a third-party utility.

In this scenario you would be running the Message Agent with the optional directory to point to the renamed transaction log files. The Message Agent command line would be

dbremote -c "uid=DBA;pwd=sql" c:\dbdir

On the third day following the weekly backup the database file gets corrupted because of a bad disk block.

To recover from media failure on the C drive

  1. Back up the mirrored transaction log d:\mirdir\cons.mlg.

  2. Create a temporary directory to perform the recovery in. In this example, the directory is called c:\recover.

  3. Restore the most recent backup of the database file, cons.db to c:\recover\cons.db.

  4. Apply the renamed transaction logs in order, as follows

    dbeng11 -a c:\dbdir\date00.log c:\recover\cons.db
    dbeng11 -a c:\dbdir\date01.log c:\recover\cons.db
  5. Copy the current transaction log, c:\dbdir\cons.log to the recovery directory, giving c:\recover\cons.log.

  6. Start the database using the following command:

    dbeng11 c:\recover\cons.db
  7. Shut down the database server.

  8. Back up the recovered database and transaction log from c:\recover.

  9. Copy the files from c:\recover to the appropriate production directories:

    • Copy c:\recover\cons.db to c:\dbdir\cons.db.
    • Copy c:\recover\cons.log to c:\dbdir\cons.log, and to d:\mirdir\cons.mlg.
  10. Restart your system as normal.