VSAM record-level sharing (RLS) operational problem determination

VSAM record-level sharing (RLS) is a data set access mode that allows multiple address spaces, CICS application owning regions (AORs) on multiple MVS systems, and jobs to access data at the same time. With VSAM RLS, multiple CICS systems can directly access a shared VSAM data set, eliminating the need for function shipping between application owning regions (AORs) and file owning regions (FORs). CICS provides the logging, commit, and rollback functions for VSAM recoverable files; VSAM provides record-level serialization and cross-system caching. CICS, not VSAM, provides the recoverable files function.

For additional info reference chapter 16 of z/OS DFSMSdfp Storage Administration.

Basic VSAM record-level sharing (RLS) problem determination functions

The following is a list of the commands that may be useful in diagnosing VSAM RLS problems. This is a referential list, and will be repeated in the subsequent sections about various possible problems.

Display commands:
  • D GRS,C
    • Shows any outstanding GRS conflicts. Watch for SYSVSAM ENQs.
  • D SMS,SMSVSAM,DIAG(C)
    • Lists any outstanding latch contention and the associated delays and the TCBs involved.
    • SCOPE=SYSTEM
  • D SMS,CFLS
    • • Shows current lock structure information, such as false contention and lock rate.
  • D XCF,STR,STRNM=strname (usually IGWLOCK00 or cache structure)
    • Lists XCF information related to the SMSVSAM coupling facility structures.
    • Can be used for lock structures or cache structures.
  • D SMS,SMSVSAM,QUIESCE
    • Outlines any active quiesce activity within the SMSVSAM region on that system. This can often reveal potential hangs if a registered region is not responding.
    • SCOPE=SYSTEM
  • D SMS,SMSVSAM,ALL
    • Shows the status of SMSVSAM around the sysplex.
    • SCOPE=SYSPLEX
  • D SMS,TRANVSAM,ALL
    • Provides the status of Transactional VSAM (TVS) around the PLEX.
    • SCOPE=SYSPLEX
Bringing up/Taking down SMSVSAM:
  • V SMS,SMSVSAM,ACTIVE
    • Starts SMSVSAM after a TERMINATESERVER
  • V SMS,SMSVSAM,TERMINATESERVER
    • Brings down the SMSVSAM ASID
If TERMINATESERVER fails:
  • • FORCE SMSVSAM,ARM
    • Force down SMSVSAM while still allowing recovery routines to run
  • • FORCE SMSVSAM
    • Force SMSVSAM into end-of-memory
Dump commands:
  • Console dump
    DUMP COMM=(some meaningful dump title)                      
      	R xx,JOBNAME=(SMSVSAM,XCFAS),CONT                         
      	R yy,DSPNAME=('SMSVSAM'.*,'XCFAS'.*),CONT                 
      	R nn,SDATA=(PSA,NUC,SQA,LSQA,SUM,RGN,GRSQ,LPA,            
                  		  TRT,CSA,XESDATA),CONT                         
     	R zz,REMOTE=(SYSLIST=(*('SMSVSAM')),DSPNAME,SDATA),END
  • Dump using IEADMCxx PARMLIB member:
    JOBNAME=(*MASTER*,SMSVSAM),DSPNAME=('SMSVSAM'.*),         
    SDATA=(COUPLE,PSA,NUC,SQA,LSQA,SUM,RGN,GRSQ,LPA,TRT,CSA,XESDATA),
    REMOTE=(SYSLIST=(*('SMSVSAM')),DSPNAME,SDATA),END