Using IRLM with database-level sharing

When IMS uses the Internal Resource Lock Manager (IRLM) for locking services, IRLM provides all locking services.

If IRLM was not activated with the IRLMNM parameter in the IMSCTRL macro, and you want to activate IRLM, code IRLM=Y in the execution JCL. If the IRLMNM parameter is not specified in either the IMSCTRL macro or the execution JCL, and IRLM=Y is specified in the execution JCL, the IMSCTRL macro uses the default IRLM named ('IRLM').

When all of the IMS batch and online instances use one or more communicating IRLMs with database-level sharing, database extensions and buffer invalidations are notified to the read-only IMS instances. This is the same as full block-level data sharing, but without the locking activity.

When you use IRLM for database-level sharing, application programs that read without integrity read valid, but perhaps uncommitted, data more frequently. This does not provide any guarantees that read without integrity problems are solved (see IMS Version 15.6 Application Programming), but it does improve database-level sharing. Because of the order in which all changed blocks or control intervals (CIs) are written to DASD, including when they are written, an application program reading without integrity can still experience inconsistencies from one execution to another.

Furthermore, uncommitted data might lead to looping behavior that cannot be detected by IMS, which will require IMS to be restarted.
Important: Not recognizing database extensions can lead to data being overwritten. This data cannot be recovered.

IMS allows use of the coupling facility for buffer coherency for both database-level sharing and block-level data sharing.