Commitment control with save-while-active
This information applies if you are using commitment control and save-while-active to eliminate your save-outage time. This information applies only if you are not specifiying *NOCMTBDY for handling pending record changes on the SAVACTWAIT parameter.
If an object receives updates under commitment control during the checkpoint processing phase of a save-while-active operation, the system saves the object at a commitment boundary. The system saves all objects that reach a checkpoint together at the same common commitment boundary.
During the save preprocessing phase of a save-while-active request, the system ensures that it saves the objects commitment boundary as follows:
- If the job performing the save-while-active request is not currently at a commitment boundary, the save request ends without saving any objects. This processing is the same for any save request.
- If updates are in progress for any objects in a group that are reaching a checkpoint together, the system delays the checkpoint. The checkpoint resumes when all of the transactions reach a commitment boundary. The system waits the amount of time specified on the second element of SAVACTWAIT parameter for these transactions to reach a commitment boundary. If uncommitted transactions still exist when the specified time expires, the save request ends.
- The system identifies which jobs have commitment definitions that are not currently at a commitment boundary and are delaying the checkpoint processing. The system waits until uncommitted transactions delay checkpoint processing for a group of objects for approximately 30 seconds. The system then sends a CPI8365 message to the QSYSOPR message queue for each job that is delaying the save-while-active request. After you receive these messages, you can then take the appropriate actions to bring all commitment definitions for those jobs to a commitment boundary.
- When no more commitment definitions are delaying the save-while-active job, the save-while-active job completes the checkpoint processing for the objects. After the checkpoint processing ends, the system allows changes for those objects under commitment control.
- If a commitment definition has uncommitted changes, it could possibly delay a save-while-active request. The uncommitted changes could delay the save-while-active request even though the changes are not for any database files. This situation can occur if you are journaling any of the database files to the same journal as the commitment definition is using for unrelated, uncommitted changes and if you specify a value greater than 0 for the second element of the SAVACTWAIT parameter.
- If an application is performing a read-for-update operation but no changes have been made, the application is considered to have started a commit cycle. The system allows a checkpoint to be established in the middle of a commit cycle as long as no changes have been made. Checkpoint processing does not stop if the application is performing only a read-for-update operation.
- The system temporarily delays a job that has all commitment definitions at a commitment boundary when both of the following are true:
The system holds that job until the objects reach a checkpoint, or the checkpoint processing for the object exceeds the time specified on the SAVACTWAIT parameter. During the time the system delays a job at a commitment boundary, the Work Active Job (WRKACTJOB) command displays CMTW as the job status.
- When it is likely that an application will change an object that is under commitment control
- When that object is reaching a checkpoint
Parent topic:
Save-while-active functionRelated concepts
Performance considerations for save-while-activeRelated tasks
Checkpoint processing with save-while-active
Commitment control with save-while-active and *NOCMTBDY
This information applies if you are using commitment control and save-while-active to eliminate your save-outage time. This information applies only if you specified *NOCMTBDY for handling pending record changes on the SAVACTWAIT parameter.
- If the job performing the save-while-active request is not currently at a commitment boundary, the save continues and objects are saved with partial transactions.
- If updates other than pending record changes are in progress for any objects in a group that are reaching a checkpoint together, the system delays the checkpoint. The checkpoint resumes when all of the transactions reach a commitment boundary. The system waits the amount of time specified on the third element of SAVACTWAIT parameter for these transactions to reach a commitment boundary. If uncommitted transactions still exist when the specified time expires, the save request ends.