How to handle HVR capture during a database upgrade?
A database upgrade writes a lot of data to the transaction logs. When HVR reads through the redo changes generated throughout the upgrade it may run into errors. However, because a database upgrade is generally run during application downtime (rolling upgrades in a clustered environment, of course, are an exception) it would be safe to skip over the changes written to the transaction log during the upgrade.
So with that the best practice when upgrading a source database, to make sure you lose no data and don't need to refresh the data, is as follows:
- Stop the application making changes to the database.
- Make sure log-based capture captures all changes made by the application. Then stop capture. Run the upgrade.
- Re-initialize the capture side with the options "Transaction Files and Capture Time", "Table Enrollment", and "Scripts and Jobs" checked. You do this using HVR Initialize in HVR 5 and HVR Load in earlier versions. By default, this will reset the capture time to current. If you perform this step after the application started then you can always rewind the capture (assuming transaction log backups/archived logs are still available and accessible).
- Start (trigger in older versions) the capture.
- Start the application.