| Title: | Database status -96 |
| Document: | db96 |
| Keywords: | Error Codes,database,-96 |
Database status -96
Database status -96 indicates a serious database corruption.
You need to reload the database.
Some IMAGE background:
In addition to the data (as provided by the program), the
IMAGE database maintains additional internal information for
each record.
These information is maintained by DBPUT and DBDELETE.
Each Master record contains the following fields per chain:
| first |
holds the record number of the first chain entry
in the associated detail set.
This is returned in status element 10 on DBFIND
|
| last |
holds the record number of the last chain entry
in the associated detail set.
This is returned in status element 8 on DBFIND
|
| count |
holds the number of chain entries in the
associated detail set.
This is returned in status element 6 on DBFIND
|
Each Detail record contains the following fields per chain:
| prev |
holds the record number of the previous entry in
this detail set for the chain.
This is returned in status element 10 on DBGET
|
| next |
holds the record number of the next entry in
this detail set for the chain.
This is returned in status element 8 on DBGET
|
When IMAGE detects an inconsistency in this information
during DBPUT or DBDELETE, a status -96 is returned.
In addition, when IMAGE is unable to find a Master set entry
for a detail record, a status -95 is returned.
Specifically, status -96 indicates that a detail record
does not exist (or the record number is invalid) which was
refered to by either the last pointer in the master set
or in case a sort item is present the prev pointer
in the detail set.
How can this happen
Eloquence A.05.xx
With the A.05.xx database, when your system encounters a power
failure or a HP-UX kernel panic, data is not written back to disk.
This will leave the data entries in an inconsistent state.
This corruption could also happen if an Eloquence process is
aborted due to a bug or by the administrator using kill -9 while
it is updating the database.
This should not happen if you abort an Eloquence process
even while it is operating on the database other then
using kill -9. The Eloquence database provides a mechanism to
recover from this situation by the help of the eloqd daemon process.
Eloquence A.06.xx and B.07.00
The Eloquence A.06.00 and B.07.00 database uses a transaction
log mechanism to recover from server failures. The database consistency
should not be affected by a server abort.
However this does not provide 100% protection in case of hardware
failure, operating system crash or power loss.
Enabling sync write mode improves database resiliance in case
of a power loss condition or an operating system crash by enforcing
writing critical data back to disk on a transaction commit, a
checkpoint operation or metadata change.
However this results in a noticeable performance penalty on database
write operations since additional disk i/o is required.
In case of a hardware failure, the sync mode may not be effective.
Eloquence B.07.00 adds support for forward logging that
allows to recover the database in case of a hardward failure.
How to recover
The only way to recover from this problem is to unload and reload
the data set. This is done by dbexport/dberase/dbimport.
We recommend to reload the whole database.
The Eloquence B.07.00 dbcfix utility allows to verify and recover
the chain link information.
|