On 29 Jan 2013 14:33, Jim Oberholtzer wrote:
It can because the save is operating on both the object header and
the data portion of the object. In the cases I have run into either
the save was canceled manually with an *IMMED option, or save while
active checkpoints were in limbo, and a couple of cases were the
object was locked. Remember a save is more than just reading the data
portion of the object, it updates the object header and other
internal structures while it's operating.
What updates would be made to the objects being saved? I am aware of
none. Of course, actual changes should be reflected in the Last Change
Date\Time which is stored in the object header. I do not expect many
objects [types] saved will show their change date to match when they
were just saved.
A save must navigate an object, but the OS save [and LIC dump]
feature should not update the object being saved. I accept there may be
some rare circumstances; e.g. I was flummoxed when Database Save chose
to write a corrective object change to an index space during saves
[mostly because of the negative impacts on restores and for the
differences between that and a the next save], but that was the first
ever I was aware of a write to an object being saved object by DB Save.
Even the /update history/ which, if included, is written in a separate
location from the object; i.e. in the OIR, and after the object is
saved. Even the post-IPL LIC CF /first touch/ update is not done during
saves; for sure not to the DB portion, well... since that issue was
corrected after being broken for awhile, because that feature adds to
storage taken during the save and is not returned until the next IPL.
All of the errors I have encountered have been on data objects
(tables, indexes, etc) I have yet to see it on V7, rarely on V6,
and often enough on V5R4 to be concerning.
Specifically what errors transpired may help to clarify.
On 1/29/2013 4:16 PM, Glenn Gundermann wrote:
I understood it that a save could detect a corrupt file, not that
it would be the one corrupting it.
Assuming "corrupt" means "damage" in the DB2 for i vernacular, then
that is an essentially correct understanding. A terminated save might
however, leave a database file object "logically damaged"; so it is not
the save that damaged the object, but the termination of that save. As
noted in a prior reply, that is unexpected in but a very few scenarios.
The Save feature might do any of: (1) See that an object is already
marked "full damaged" or "soft damaged" and implicitly omit the object
from the save; i.e. detect the object is already damaged (2) Perform
some navigation of the object\data for which damage is set [for the
object or data] by a LIC feature; i.e. detect that the object is damaged
and needs to be indicated as such, and then that save would be
terminated by the OS due to a "damage set" condition (3) Start save of a
composite that requires a Database Recovery Object and then the save
terminated [by external action; power loss, EndJob, storage full] in a
way that the Database Recovery remains pending, thus leaving the file
"logically damaged"; for storage full the locks remain held until the
Save process is signed off\ends (4) anything for which any other
[non-DB] object handler might detect or leave an object "logically damaged"