MAINFRAME > Hot Topics

RACF Ghost Busted: Easily Finding and Fixing Ghost Profiles

RACF ghosts

Is your RACF database still haunted by ghost profiles? Do you enter the SEARCH command and still find (apparently) generic profiles that you are unable to change? Well the folks that brought you the “RACF Ghost Hunters” Hot Topics article have some great news for you:

Your RACF ghosts are now busted.

To review the original problem, customers could define profiles in a RACF general resource class that contained generic characters (*, ** or %) before enabling generics for that class. After generics were enabled, these “ghosts” profiles became problematic (i.e., did not get used, were hard to “see” and were difficult to get rid of).

Warding Off Ghost Profiles

Now, with RACF if you attempt to issue such a command, for example:

	RDEFINE FACILITY GHOST.PROFILE1.* 

and generics aren’t enabled (e.g., SETROPTS GENERIC(FACILITY) ), the following message is generated:

ICH10321I The profile name GHOST.PROFILE.* contains generic characters, 
but generics are not enabled for class FACILITY.  A discrete profile has been created.   

Divination of Ghost Profiles

It’s possible that these ghost profiles existed prior to z/OS V1.12 or a security administrator (who will not be named) missed the messages when creating a ghost profile. In the past, after these ghost profiles were created, they couldn’t be listed by using the RLIST command. They could only be shown by using a SEARCH command, which added to the overall confusion. For example, issuing the following command:

	RLIST FACILITY GHOST.PROFILE1.*      

generated the following message:

ICH13003I GHOST.PROFILE1.* NOT FOUND         

But now, this profile would appear in the RLIST command output, as follows:

CLASS      NAME               
-----      ----               
FACILITY   GHOST.PROFILE1.*  (UNUSABLE)  
	:

Note the construct (UNUSABLE), which clearly indicates that this is a ghost profile, and is unusable by the system.

Issuing a SEARCH command also generates similar results as well.

SEARCH CLASS(FACILITY) NOMASK 
GHOST.PROFILE1.* (UNUSABLE)
REAL.PROFILE1
GHOST.PROFILE2.* (G)
** (G)

Dispelling Ghost Profiles

Now that you can easily discover these ghost profiles, it’s also easier to delete them. Prior to this support, getting rid of ghost profiles proved difficult. You had to disable generics (and there were two parameters to disable).

 	SETROPTS NOGENERIC(<classname>) NOGENCMD(<classname>)

Also, disabling generics while deleting these profiles could be risky, and users were advised to do so during a time when the risk was minimal, which could be difficult to gauge.

Now you can simply add the new NOGENERIC keyword on the RDELETE command to delete these unusable ghost profiles without disabling generics for the class. For example:

RDELETE FACILITY GHOST.PROFILE1.* NOGENERIC

Now you have a new set of tools to help you in your hunt for ghost generic profiles.

Happy ghost busting.



Like what you just read? To receive technical tips and articles directly in your inbox twice per month, sign up for the EXTRA e-newsletter here.


comments powered by Disqus

Advertisement

Advertisement

2017 Solutions Edition

A Comprehensive Online Buyer's Guide to Solutions, Services and Education.

IBM Systems Magazine Subscribe Box Read Now Link Subscribe Now Link iPad App Google Play Store
Mainframe News Sign Up Today! Past News Letters