We recently moved our SpectroSERVER from a physical server to a virtual server, which involved taking a backup/snapshot of the physical server and restoring it to the virtual server. After the virtualization was complete we tried starting up the SpectroSERVER and received the following message:
ERROR: This application has been started using a Spectrum database which was not gracefully closed.
The application will now shut down to allow you to load and initialize a previously-saved good database.
We have tried restoring the SSdb database from a previously known good backup that was taken before the virtualization of the SpectroSERVER was performed. However after running the SSdbload command and successfully loading the backup file, we are still seeing the same error when attempting to restart Spectrum.
The error is likely caused by a corrupt database file due to the Server backup/snapshot process, or the SpectroSERVER was not shutdown before the snapshot of the server was taken.
It is important the the SSdbload and SSdbsave commands, which are found in the $SPECROOT/SS-Tools directory be executed inside the $SPECROOT/SS directory, since this is where the actual database files are found. Therefore, anytime you run the SSdbload or SSdbsave command, it must be run from inside the $SPECROOT/SS directory.
If you ran the SSdbload command from any other directory, other than the $SPECROOT/SS directory, then the SSdb database has not actually been restored. If you are not sure which directory the command was run from, search for any ss*.ix or ss*.db files. If these files exist in any other directory, then you need to delete them and rerun the SSdbload command from the $SPECROOT/SS directory.
If you find that you are still seeing the problem after running the SSdbload command from the $SPECROOT/SS directory, please open a case with support to help troubleshoot the issue further.
As the error indicates, you must initialize the SSdb database files and restore from a previous good backup of the SSdb database. The SSdb files exist in the $SPECROOT/SS directory. These are the ss*.db (data files) , ss*.ix (index file) , and *.log (log files).
Some people like to manually delete the ss*.ix, ss*.db, and *.log files from the SS directory before restoring from the good backup. This ensures the corrupt files are completely replaced. Other will initialize to the legacy database, by running ../SS-Tools/SSdbload -il legacy, and then restore from the backup file. Both are safe, as long as you have a known good backup of your SSdb database.
To run the SSdbload command:
1. Open a command line (Solaris/Linux) or 'bash -login' shell (Windows) as the Spectrum Owner account.
2. cd $SPECROOT/SS directory.
3. Run ../SS-Tools/SSdbload -il <your_backup_filename>
The -il options indicate we are initializing the files and loading new files from the legacy database.
If your backup file is in another directory, such as $SPECROOT/SS-DB-Backup, you will need to specify the path to the file.
For example: ../SS-Tools/SSdbload -il ../SS-DB-Backup/<your_backup_filename>
4. Once the load completes restart Spectrum.
For more information regarding the SSdbload and SSdbsave commands see the "Spectrum Database management" guide - "CA Spectrum Database Tools" section.
Also review the "Spectrum Database management" guide - "SpectroSERVER Database Troubleshooting".