To avoid this situation after a system outage, the following actions will clear the shared_memory identifier in the Master Block which need to be carried out against every database on the machine before re-starting any database:
Option 1: Start a single-user session against each database
This action will initiate crash recovery and lock the database to single-user until it is ready to be started multi-user after disconnecting the single-user session.
Option 2: Truncate the bi files of all databases, then start databases multi-user as required.
$ proutil dbname -C truncate bi -crStatus 10 -crTXDisplay
Option 3: Run
PROSTRCT REPAIR on every database to clear the shared memory ID, then start databases multi-user as required
- First verify that the database structure file (.st) is current listing full-paths to every database extent: $ prostrct list dbname dbname.st
- Then run PROSTRCT REPAIR on every database to clear the shared memory ID: $ prostrct repair dbname dbname.st
Option 4: Ensure all databases on the server have completed their bi crash recovery and have restarted, before allowing any shared-memory connections.