On 25 Apr 2013 14:24, Joe Pluta wrote:
So the moral of this particular story is to not let your user
profile get too big.
  Pretty much.  I am not aware of nor do I think there is an event to 
notify of a specified percent full being reached.  The PRTPTFINT 
reporting can be periodically reviewed in lieu of a notification.  Not 
as easy as reviewing the Max Storage (MAXSTG) setting vs Storage Used 
:-( per lack of a described model output file for that Print Profile 
Internals request, as there is with DSPUSRPRF for TYPE(*BASIC) 
information which offers the model file QADSPUPB format QSYDSUPB and 
fields: UPMXSU and UPMXST.
  Maybe worth submitting a Design Change Request to ask for a Max 
Percent Full setting for the user profile and a Percentage Full 
attribute returned in DSPUSRPRF TYPE(*BASIC) OUTPUT(*OUTFILE).?  I 
suppose the information was externalized as it was [i.e. PRTPRFINT] for 
some reasons... and those reasons may be in conflict with a change 
request to supply that information via DSPUSRPRF, but there seems little 
harm in asking.
http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/topic/cl/prtprfint.htm
_i Print Profile Internals (PRTPRFINT) i_
 ...
Recommendations to avoid profiles becoming full:
    * Do not have one profile own everything on your system. For 
example, have each application be owned by its own profile.
    * Do not use IBM-supplied profiles, such as QSECOFR and QPGMR, as 
owners of your application. As shipped from IBM, they already own many 
objects and can become full when they also own user (non-IBM) objects.
    * If you are granting private authorities to many objects for 
several users, you should consider using an authorization list to secure 
the objects. Authorization lists will cause one private authority entry 
for the authorization list in the user's profile rather than one private 
authority entry for each object. In the object owner's profile, 
authorization lists will cause an authorized object entry for every user 
granted authority to the authorization list rather than an authorized 
object entry for every object multiplied by the number of users granted 
the private authority.
      Authorization lists are especially useful if you are granting 
private authorities to files. Files are complex objects. For complex 
objects, you get an entry for each piece of the object. For example, in 
a file owner's profile, you have an ownership entry for each piece of 
the file, including an entry or two for each member. (Physical files 
have two entries per member.) If you grant a private authority to ten 
users and the file has 50 members, the result will be 100 authorized 
object entries in the file owner's profile. With an authorization list, 
the ownership entries will remain the same, but the authorized object 
entries will be reduced to one for each user granted authority to the 
authorization list securing the file.
 ..."
  For stream files and [sub]directories, I would have expected the 
feature to /inherit/ authority from the directory in combination with an 
authorization list assigned as authority to the directory could be 
helpful for limiting the growth in the size of the profile [due to 
authorities] similar to how using a Authorization List can assist for 
database files.  However, on v5r3 anyhow, the ability to set the 
/object/ rights seems not possible to be set to the *AUTL as can be done 
for the /data/ rights.?
Good thing this isn't QSECOFR or some other required user profile.
  As the above doc snippet warns.
  I have helped resolve some situations with system user profiles 
having reached the limits.  Basically starting with a program to either 
CHGOWN RVKOLDAUT(*YES) and CHGOBJOWN CUROWNAUT(*REVOKE) of most objects 
to assign to a couple other profiles, or RVKOBJAUT *ALL for authorized 
objects when unnecessary authorities were granted [e.g. to recover from 
stupid requests like effectively GRTOBJAUT *ALL/*ALL *ALL USER(QSECOFR) 
AUT(*ALL)] which oddly, I had to do way too many times in the lab :-( to 
cleanup after some #$(*&^@ !#^$%^ who did not have the sense to realize 
the request was moot.  If the user profile had already exceeded its 
limit, then the recovery had to start with /simple object types/ first, 
to avoid the attempt to recover from failing due to an inability to 
create permanent internal objects which would implement the request for 
complex object types like database files; permanent objects must be 
assigned an ownership authority and by default gets a private authority 
of *ALL.  Then when all was to where it should be, other than the size, 
get the final list of remaining objects, get a SAVSYS [and SAVSECDTA], 
hard damage the user profile object, delete the user profile [which 
could require a patch or some tooling], then either RSTUSRPRF of the 
deleted *USRPRF object or perform what IIRC was called an /abbreviated/ 
slip install to get the OS to re-create the missing user profile, and 
then run a program [using the list generated previously] to assign 
ownership of the objects to the new user profile with the same name [in 
some cases, due to defects, I believe a RCLSTG *ALL was required first, 
to set the owner to QDFTOWN; i.e. some interfaces improperly might have 
been unable to handle the current owner being unassigned or owned by a 
destroyed object] ¿and then revoke all authorities to the object for 
that user? [that ¿step?, if RstAut is merely additive; I can not 
recall], and finally issue the RSTAUT.
As an Amazon Associate we earn from qualifying purchases.