Kbase P76138: errors during -RO dump against live database (errors 137, 2358, 5107)
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  09/04/2004 |
|
Status: Unverified
SYMPTOM(s):
errors during -RO dump against live database (errors 137, 2358, 5107)
proutil -RO production.db -C dump blabla /dump/
SYSTEM ERROR: Record continuation not found, fragment recid 342491495. (137)
SYSTEM ERROR: Invalid record with recid 61642530. (2358)
Record not found 61642530, return = -1. (5107)
Binary Dump complete. (6254)
CAUSE:
proutil -RO production.db -C dump blabla /dump/
which means I can kill the sessions without too much trouble, but now I see this:
================
SYSTEM ERROR: Record continuation not found, fragment recid 342491495. (137)
SYSTEM ERROR: Invalid record with recid 61642530. (2358)
Record not found 61642530, return = -1. (5107)
Binary Dump complete. (6254)
================
FIX:
This happens because what is on disk is not consistent with what is in memory in the single-user -RO session.
The -RO mechanism was originally implemented so that one could access a database stored on a read-onloy medium such as a compact disk. It has been misused frequently for other purposes.
The reason you see errors like this is that the live database is being updated and some of the data are present in the live database's (shared) buffer cache and some are on disk. The most recent data are in the memory-resident cache. The memory-resident version and the disk-resident version are not consistent with each other, and do not have to be, except when the database is shut down.
The database manager for the live sessions gives you a consistent view by combining the memory-resident and disk-resident data. Data from the
memory-resident cache is only written to disk when it cannot be avoided any
longer. Thus the on-disk data are almost always partially obsolete
When you use a single user -RO session to access the same database that is being updated by others, you see only what is on disk (the obsolete data) and copies of that that have been retained in the read-only session's buffer cache. The single user session is completely unaware of the data in the other sessions (shared) cache. To make matters worse, the single-user session's read-only buffer cache becomes progressively more obsolete over time even if the disk resident data are updated.