<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="en-us" xml:lang="en-us"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="security" content="public" /> <meta name="Robots" content="index,follow" /> <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' /> <meta name="DC.Type" content="concept" /> <meta name="DC.Title" content="Commitment control with save-while-active" /> <meta name="DC.Relation" scheme="URI" content="rzaiurzaiu310.htm" /> <meta name="DC.Relation" scheme="URI" content="rzaiurzaiu327.htm" /> <meta name="DC.Relation" scheme="URI" content="rzaiurzaiu334.htm" /> <meta name="copyright" content="(C) Copyright IBM Corporation 2004, 2006" /> <meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2004, 2006" /> <meta name="DC.Format" content="XHTML" /> <meta name="DC.Identifier" content="commitoverview" /> <meta name="DC.Language" content="en-us" /> <!-- All rights reserved. Licensed Materials Property of IBM --> <!-- US Government Users Restricted Rights --> <!-- Use, duplication or disclosure restricted by --> <!-- GSA ADP Schedule Contract with IBM Corp. --> <link rel="stylesheet" type="text/css" href="./ibmdita.css" /> <link rel="stylesheet" type="text/css" href="./ic.css" /> <title>Commitment control with save-while-active</title> </head> <body id="commitoverview"><a name="commitoverview"><!-- --></a> <!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script> <h1 class="topictitle1">Commitment control with save-while-active</h1> <div><p>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.</p> <p>If an object receives updates under commitment control during the checkpoint processing phase of a save-while-active operation, the server saves the object at a commitment boundary. The server saves all objects that reach a checkpoint together at the same common commitment boundary. </p> <p>During the save preprocessing phase of a save-while-active request, the server ensures that it saves the objects commitment boundary as follows:</p> <ul><li>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.</li> <li>If updates are in progress for any objects in a group that are reaching a checkpoint together, the server delays the checkpoint. The checkpoint resumes when all of the transactions reach a commitment boundary. The server 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.</li> <li>The server identifies which jobs have commitment definitions that are not currently at a commitment boundary and are delaying the checkpoint processing. The server waits until uncommitted transactions delay checkpoint processing for a group of objects for approximately 30 seconds. The server 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.</li> <li>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 server allows changes for those objects under commitment control.</li> <li>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.</li> <li>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 server 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.</li> <li>The server temporarily delays a job that has all commitment definitions at a commitment boundary when both of the following are true: <ul><li>When it is likely that an application will change an object that is under commitment control</li> <li>When that object is reaching a checkpoint</li> </ul> The server 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 server delays a job at a commitment boundary, the Work Active Job (WRKACTJOB) command displays <span class="uicontrol">CMTW</span> as the job status.</li> </ul> </div> <div> <div class="familylinks"> <div class="parentlink"><strong>Parent topic:</strong> <a href="rzaiurzaiu310.htm">Save-while-active function</a></div> </div> <div class="relconcepts"><strong>Related concepts</strong><br /> <div><a href="rzaiurzaiu334.htm">Performance considerations for save-while-active</a></div> </div> <div class="reltasks"><strong>Related tasks</strong><br /> <div><a href="rzaiurzaiu327.htm">Checkpoint processing with save-while-active</a></div> </div> </div><div class="nested1" xml:lang="en-us" id="commitmentcontrolwithsave-while-activeandnocomtbdy"><a name="commitmentcontrolwithsave-while-activeandnocomtbdy"><!-- --></a><h2 class="topictitle2">Commitment control with save-while-active and *NOCOMTBDY</h2> <div><p>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.</p> <ul><li>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.</li> <li>If updates other than pending record changes are in progress for any objects in a group that are reaching a checkpoint together, the server delays the checkpoint. The checkpoint resumes when all of the transactions reach a commitment boundary. The server 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.</li> </ul> </div> </div> </body> </html>