Data integrity with non-VSAM ADVANCED mode processing


The ADVANCED mode of Data Optimizer non-VSAM processing uses a variety of techniques to greatly reduce application’s I/O wait time.

One way this reduction is accomplished is by posting the I/O as complete when the data is successfully moved to a data buffer but not necessarily written to the device. This movement allows the application to continue processing without waiting for I/O completion. This situation is similar to the DEFERED-WRITE feature provided by VSAM.

The only potential for difficulty occurs when data is written to (and read from) a data set simultaneously in a synchronized manner. If a function writes data to DASD and subsequently informs a reading function that the updated data has been written, the reading function could read an old copy of the data from the device because the current copy is still in a buffer in the writer’s memory.

Data Optimizer tries to prevent this problem in a variety of ways. When the writer and reader of a common data set reside in the same address space as different tasks, Data Optimizer flushes all writes immediately to DASD. This action ensures that the reader always receives the most current copy of any updated records.

When the writer and reader of a common data set are in different address spaces—possibly on different MVS images—Data Optimizer presumes that the MVS disposition processing ensures that a process updating a data set has exclusive use (DISP=OLD) of the data set for the duration of the updates. This action prevents readers from accessing any records in the data set until all records have been written to DASD by the writing process.

If an updating process is allowed to run concurrently (DISP=SHR) with other processes accessing a common data set, Data Optimizer treats this situation as a data integrity exposure and abends the process with a U2210-7709 abend. This action ensures that no reader can access records in a data set while another process might have updated buffered copies.

Error
Warning

This data integrity protection method works only when Data Optimizer is active on all systems that could potentially access any given file concurrently and the DAPOPEN ENQ is allowed to propagate to these systems.

When Data Optimizer is not on a system in which a file is being processed, Data Optimizer has no way of knowing what type of access is being performed. This condition is analogous to running GRS on some, but not all, members of a sysplex.

Fortunately, processes relying on synchronization while concurrently reading and writing shared files are not common. The most common of these processes occur in vendor products—such as Computer Associates CA-View (SAR) and CA-Deliver (RMO)—that use a shared control file or database. Some in-house written applications might also use this methodology for synchronization. As long as Data Optimizer is active on all systems in a sysplex, it does not allow data corruption.

If Data Optimizer is not active on all systems, such as during an initial implementation, there are several ways to ensure data integrity. The safest approach is to create a data policy entry to set the non-VSAM Optimization mode to BASIC. This mode prevents Data Optimizer from posting write operations as complete until the data is physically written to DASD.

If you are aware of the applications or vendor products that rely on synchronization, you can create data policy entries to restrict only those processes to BASIC mode, or you can exclude them from optimization processing. All other processes can continue using ADVANCED mode. When Data Optimizer is active on all systems, the risk is eliminated and all eligible non-VSAM data sets can be processed with ADVANCED mode.

When Data Optimizer is active on all systems, it detects potential data integrity exposures and issues a U2210-7709 abend. If you encounter such an abend, the easiest solution is to exclude from Data Optimizer processing all processes that access the data set. If the process involves a single program, use a data policy entry to exclude the program. If the process involves any program accessing a given file or group of files, use a data policy entry to exclude the data set or group of data sets (through a dsname prefix). If the process causing the U2210-7709 abend can read and write to the data sets in question without integrity concerns, you can add a data policy entry that includes the SHAREDWRITE option that tells Data Optimizer to bypass the data integrity check and perform normal optimization. Data Optimizer uses a SYSTEMS level ENQ with a QNAME of DAPOPEN to detect the data integrity exposure. For this process to function correctly, products such as GRS or CA MIM must allow the ENQ to be propagated to all systems.

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*

MainView Batch Optimizer (Advanced and Standard) 2.7