The parallel participant table (PPT) located in a database's Associator tracks all active Adabas nuclei in the cluster.
The document covers the following topics:
Before you can run an existing Adabas database with Adabas Cluster Services, you must run ADACNV to convert it to the version of Adabas that underlies Adabas Cluster Services. ADACNV accesses the free space table (FST) to acquire 32 contiguous blocks from the Associator and reserve them for the PPT.
ADACNV acquires 32 contiguous blocks in the Associator for each existing database and ADADEF acquires 32 contiguous blocks in the Associator for each new database. The location of the 32 contiguous blocks of Associator space is written to the general control block (GCB).
PPT blocks exist for both cluster nuclei and a single noncluster nucleus, eliminating the need to run the conversion process if switching from an Adabas cluster session to an Adabas noncluster session.
During session initialization as each Adabas cluster nucleus becomes active, it registers in the PPT based on the setting of its ADARUN NUCID parameter. The nucleus chooses the first of the 32 PPT blocks that is not yet assigned to another NUCID. If this is not the first run of this nucleus, the nucleus reuses its previously used PPT block. The relative block number of the chosen PPT block within the PPT (a number between 1 and 32) is called the 'internal nucleus ID'.
Note:
A noncluster nucleus always occupies the first block of the PPT and
its NUCID is always zero.
Each active nucleus writes information to the Work, protection log (PLOG), and command log (CLOG) data sets that it is using for that session. The internal nucleus ID is also written to the PLOG records.
As each Work, PLOG, and CLOG data set becomes active, it is registered in the PPT. Information about these data sets is logged in the PPT entry of its nucleus.
When the PLOG or CLOG is merged, its PPT entry is updated with the information. ADARES and the cluster nuclei synchronize their PPT updates against one another to ensure that only one modification occurs at a time.
Work data set, protection log, and command log information remains in the PPT, even when CLOGs or PLOGs are merged or the session terminates.
If the nucleus terminates normally, the PPT entry is retained and marked as inactive.
If a nucleus terminates abnormally, its entry in the PPT remains unchanged until the recovery process is complete.
The information about each Adabas nucleus maintained in the PPT is used when ADARES PLCOPY is copying and merging all active protection logs in the cluster.
It is also used during nucleus initialization to ensure that the data set information required for autorestart and PLOG merge is available:
If the previously used Work data set and PLOG data sets are already in use by another nucleus, the nucleus will not start.
If a different Work data set is provided and the previously used Work data set contains autorestart information, the nucleus will start but a warning will be printed.
If different PLOGs or no PLOGs are provided and the previous session had PLOGs still to be copied, the nucleus will not start until those PLOGs have been copied/merged if PLOGRQ=FORCE is specified. If PLOGRQ=FORCE is not specified, the nucleus will start but a warning will be printed.
In the case where the PPT becomes unavailable for some reason, the new parameter NOPPT is added to the ADARES PLCOPY function for emergency use. It specifies that the PPT is to be ignored and that the PLOG data sets of all cluster nuclei are to be taken from the JCL.
If you need to merge CLOGs while the PPT is unavailable, run a normal CLCOPY and then use the CLOG MERGE function to merge the sequential data sets.
The parameter SBLKNUM for the ADARES PLCOPY NOPPT function can be used in an emergency case when a last set of PLOGs must be copied and merged after the parallel participant table (PPT) in the Associator has been destroyed. In this case the ADARES utility does not know the last serial block number of the sequential PLOGs produced so far. By default, it starts numbering the blocks at 1 on the next sequential PLOG data set. If this sequential PLOG is concatenated to its predecessor in a REGENERATE function, ADARES would report an error in the PLOG block number sequence. The SBLKNUM parameter can be used to specify the correct starting block number for the sequential PLOG produced by the PLCOPY NOPPT function.
There are two ways to copy and merge the PLOGs when the PPT has been destroyed:
Without using the SBLKNUM parameter:
Run ADARES PLCOPY NOPPT, specifying all direct-access PLOG data sets of all cluster nuclei as DD/PLOGnn data sets for the ADARES utility. ADARES copies and merges the relevant PLOGs and produces a sequential PLOG data set starting with PLOG block number 1.
In case the database or individual files need to be restored and regenerated, run the regenerate in two (or more) job steps. The first REGENERATE should cover all sequential PLOGs produced by PLCOPY functions without the NOPPT parameter; these PLOGs may be concatenated into one sequential input. If the REGENERATE is performed with ET logic (REGENERATE database or with CONTINUE parameter), specify the NOAUTOBACKOUT parameter. The second REGENERATE should cover the sequential PLOG produced by the PLCOPY with NOPPT.
With using the SBLKNUM parameter:
Determine the highest PLOG block number written so far by the regular PLOG merge processes. This number can be determined from an up-to-date checkpoint listing, from an ADARAI LIST protocol, or from the job protocol of the most recent PLCOPY execution.
Run ADARES PLCOPY NOPPT, specifying all direct-access PLOG data sets of all cluster nuclei as DD/PLOGnn data sets for the ADARES utility. Specify the SBLKNUM parameter with value n+1, where n is the highest PLOG block number written so far, as determined in the previous step. ADARES copies and merges the relevant PLOGs and produces a sequential PLOG data set starting with the specified PLOG block number.
In case the database or individual files need to be restored and regenerated, no special arrangements need to be made to run the REGENERATE in separate job steps.