On 08-Aug-2016 13:50 -0500, Rob Berendt wrote:
Again, the "safest" way to clear them is with DLTPTF.
Or more simply, the /correct/ way to delete PTF Save Files is with
the Delete PTF (DLTPTF) command. Some links to some past discussion:
[
http://archive.midrange.com/midrange-l/201212/msg01145.html]
Subject: Re: installing ptf cume packages via *SERVICE/SAVF
[
http://archive.midrange.com/midrange-l/201308/msg01071.html]
Subject: Re: Cleanup PTFs downloaded to *SERVICE
[
http://archive.midrange.com/midrange-l/201004/msg00864.html]
Subject: Re: PTF Savefile
[
http://archive.midrange.com/midrange-l/201308/msg00953.html]
Subject: Re: PTF install questions
Let me try to explain why.
Let's pretend you do a
DSPOBJD OBJ(qcnteddm) OBJTYPE(*PGM) DETAIL(*SERVICE)
and you do not see any ptf on it.
So (on 7.3) you order ptf SI59632.
When you temp apply that PTF it will save the original QCNTEDDM into
another save file. Let's say SH12345678 for example. Then it will
restore the new QCNTEDDM from save file QSI59632.
Unless the PTF feature had changed drastically, that description of
what transpires for typical PTF apply processing for any *PGM objects is
hokum.
The old object that is to be PTFed\replaced with a newer copy [that
had been restored from the PTF save file, then renamed, and finally
moved into the product library during Load PTF (LODPTF) processing] is
essentially just renamed [again] to effect the Apply PTF (APYPTF)
processing; the standard effect of APYPTF will *not* be to perform any
SAVxxx processing [to make a backup copy] of the PTFed objects, as the
/backup copy/ simply resides on disk with a different name just like the
down-level object resided on disk with an alternative name.
The process did change within the past several releases to stop using
library QRPLOBJ in which to place objects that are possibly\potentially
still in-use pending an IPL; changed to instead use the libraries
QPTFOBJ1 and QPTFOBJ2. But the /backup/ copies of a program still would
reside as the object by another name, not as an object saved to a save file.
If you remove (not delete) PTF SI59632 it will restore QCNTEDDM from
SH12345678 to go back to the old version.
Now, if you permanently apply SI59632 it will delete SH12345678 and
that bridge is burned.
While there are some object[-type]s that will be shipped in a save
file [e.g. non-/QSYS.LIB objects per inability to include both an
effective SAV and effective SAVOBJ in one Save File object], delivered
by having been saved into the PTF save file itself, I am confident such
save file names will have a prefix such as QPZ1 or QPZ2. And the loss
of anything that might have been saved previously into a QPZ save file
per the permanent-apply action, is nothing different than the loss of
any other PTF temporary objects; i.e. the /program-temporary-fix/ had
since been made permanent, so there was no reason to maintain what was
needed only /temporarily/.
That a Save File previously restored from a PTF save file might
become effectively /orphaned/ due to the deletion of the PTF save file
itself [per Delete File (DLTF)] should not be of great consequence
[beyond the storage taken for not having been deleted by Delete PTF
(DLTPTF)], because the object-naming for the temporary save file should
make the object eligible for CLEANUP processing.
As for the possibility of data loss from deleting the PTF save files
vs using DLTPTF, I am not so sure there is much of a concern; at least
not so much for the permanent-apply scenario. For a scenario of a
temporarily applied PTF, in which the _PTF save file_ is deleted, also
should not be a concern. But if any _save files as PTF objects_ are
deleted, rather than the _PTF save files_ themselves, then that could be
problematic, if indeed those save files were used to make a backup of an
older version of the object; however, I am thinking that those save-file
objects would reside in the *product library*, not reside in QGPL where
the PTF save files [that were registered with *SERVICE] would reside.?
Thus, I do not see there should ever by any /safety/ issue with regard
to data-loss when deleting actual PTF save files by means other than the
DLTPTF.
What this is telling you is:
- Regularly permanently apply your PTF's to save space by removing
the backup copies.
While that action moves the renamed objects into another library,
until an IPL, the storage is not reclaimed. And from what I recall, a
PTF that arrived as a save file, registered with *SERVICE, does not get
deleted with a perm-apply; that still awaits DLTPTF.?
- Do not clean up the backup copies yourself or you've screwed up
your ability to RMVPTF.
If only deleting save files that were registered with *SERVICE and by
naming should be the various QS_##### [and QM_#####] *FILE objects with
attribute=SAVF in library QGPL, then as alluded earlier, I am not sure
there would be any harmful effect with [the ability to or] the action of
Remove PTF (RMVPTF). The conspicuous problem with using DLTF vs DLTPTF,
is that the PTFs that had been registered with *SERVICE would not get
properly de-registered from *SERVICE, and thus remnants of their
existence may appear in Display PTF (DSPPTF) output or in output of any
PTF-category APIs.
- Do the DLTPTF regularly to clean up the save files containing the
'new copies'.
True enough, if those PTF save files are not being maintained for
other purposes; e.g. to be sent to other systems.
Although I was under the impression that most installations would
have PTF save files only rarely, primarily existing for the purpose of
resolving the special value *SERVICE and which generally as the effect
of having arrived via Send PTF Order (SNDPTFORD) to obtain specific
fixes that were not otherwise obtained as images; i.e. loading from
images is more typical than loading from *SERVICE? As apparently is the
case for the OP. The other typical purpose, being to maintain a copy of
PTFs [on a central system], for distribution to other systems.
- DLTPTF will also remove the members held in
WRKMBRPDM FILE(QGPL/QAPZCOVER)
or
WRKLNK OBJ('/QSYS.LIB/QGPL.LIB/QAPZCOVER.FILE/*')
As noted already in a prior reply, I expect the OP might want to
invoke the following, as probable recovery; a bit less aggressive than
the PTF(*ALL) in the first followup reply to the OP:
DLTPTF PTF(*SAVFONLY) LICPGM(*ALL)
RLS(*ALL) DLTDUPPTF(*YES)
As an Amazon Associate we earn from qualifying purchases.