Components and Processes

The Adabas Cluster Services components and processes ensure intercommunicability and data integrity among the operating system images and the associated Adabas nuclei in each cluster in a sysplex environment.

The document covers the following topics:


Cluster of Adabas Nuclei

The ADARUN parameter CLUSTER=SYSPLEX identifies a nucleus as a member of an Adabas cluster in a sysplex environment. The NUCID parameter is used to number the Adabas cluster nuclei 1-65000. A NUCID of zero (0) identifies a noncluster nucleus. The NUCID is the only ID table entry for a nucleus.

Each nucleus has its own

  • local buffer pool (LBP) and manager;

  • Work data set, which must have the same device type and physical size for each nucleus in the cluster;

  • (optional) direct-access protection log (PLOG) data sets; and

  • (optional) command log (CLOG) data sets.

Protection logs are optional but if supplied, each nucleus must have its own. The same is true for command logs.

Adabas Sysplex Cluster

Each Adabas sysplex cluster is defined by its

  • database ID;

  • sysplex group name;

  • sysplex cache and lock structure names.

In a sysplex environment, the Adabas nuclei in a cluster can be distributed over multiple operating system images that are synchronized by an IBM Sysplex Timer.

Although more than one Adabas cluster nucleus may be run under an operating system image, several nuclei typically run under different operating system images to minimize the impact on the cluster when an operating system image must be stopped for maintenance or upgrades. The cluster database would continue to be serviced by the cluster nuclei that are active under different operating system images. For more information, read Planning an Outage, in Adabas Cluster Services Operations.

Single Physical Database Per Cluster

Using Adabas Cluster Services, up to 32 Adabas nuclei running under multiple operating system images access a single physical database simultaneously. A "single physical database" is one set of Associator and Data Storage data sets identified by a single database ID number (DBID).

An unlimited number of Adabas clusters can operate in the same sysplex system under the same or different SVCs; that is, an unlimited number of separate databases can be processed, each with its own Adabas cluster of up to 32 nuclei.

Each database has an ID table header (IDTH) prefix element.

Applications see only one database target; that is, no interface changes are required. Applications still communicate with their intended databases and communicate with the Adabas cluster of nuclei without modification.

PLXCB Structures

Adabas Cluster Services uses a "PLXCB" and subordinate data areas (referred to as "PLXCB structures") for maintaining information about active users and the nuclei in the cluster to which they are assigned. The PLXCB structures are identified by the DBID of the related cluster database and the SVC number through which users sends Adabas calls to the nuclei of that database.

For each cluster database, the PLXCB structures are allocated on each operating system image on which a cluster nucleus or an ADACOM initialization task is started. They are allocated by the first ADACOM task to which the SVC/DBID combination is defined or the first cluster nucleus for the DBID that starts on the system.

By default, the PLXCB structures are allocated in 31-bit common storage (ECSA). Such PLXCB structures stay in existence even after the cluster nucleus or ADACOM task that allocated them has ended. They exist for the life of the operating system image or until they are explicitly deleted via ADACOM.

The PLXCB structures can be sizable, depending on the number of users supported - but still less than 1 MB of storage for every 10,000 users configured (NU parameter) -, and an installation may have multiple Cluster Services databases with each one requiring its own PLXCB structures. ECSA is a finite resource shared among all users in the system and may become constrained.

If ADACOM is used to allocate the PLXCB structures for a cluster database, the PLXCB structures may also be placed in a dataspace owned by ADACOM, by specifying LOC=DSP for the SVC/DBID combination given to ADACOM. In this case, ADACOM must be started before the first cluster nucleus starts on the system image and it must stay active as long as a nucleus or users of the database are active, for the dataspace cannot outlive its owner, ADACOM. Placing PLXCB structures in ADACOM dataspaces provides relief from 31-bit ECSA storage constraints.

Note that ADACOM creates the dataspace for the PLXCB structures of each cluster database as a common storage dataspace (SCOPE=COMMON). The number of common storage dataspaces in a system is limited by the MAXCAD parameter in SYS1.MACLIB(IEASYSxx), which can range from 10 through 250 and has a default value of 50. This limits the number of cluster databases on one operating system image that can have their PLXCB structures allocated with LOC=DSP.

ADACOM

The ADACOM initialization module or a cluster nucleus, whichever is the first to start, sets up the Adabas sysplex cluster environment on an operating system image. See the section Getting Started. The PLXCB structures are allocated for maintaining information about active users and the nuclei to which they are assigned. Using the ADACLU module and Entire Net-Work, any changes are sent to all peer ADACOMs or cluster nuclei on other systems.

The ADACOM initialization task:

  • must be run at least once per IPL on any operating system image that has cluster users but no cluster nuclei to set up the environment.

  • can optionally be used to monitor and control the nuclei of one or more sysplex clusters.

Parameters specify the SVC/DBID combinations (sets) that the ADACOM task is to manage. The DBID identifies the external physical database shared by a particular cluster of nuclei and known to the application. The same SVC may be used for different clusters.

The first nucleus or ADACOM started governs the value for NU: different values set for subsequent nuclei or ADACOMs are ignored. The NU (maximum number of parallel users) parameter in each ADACOM and each cluster nucleus should be large enough for all possible parallel local users and locally assigned remote users, so that the user table in the PLXCB structures and the user queue in each cluster nucleus are big enough to continue providing service in case only one nucleus remains active in the cluster. If NU is set to zero, ADACOM deallocates the PLXCB structure. If no value is set for NU, it defaults to 200.

After initialization, ADACOM can either be shut down or maintained in operation as an internucleus command manager to monitor and control cluster nuclei running under specified SVC/DBID sets and to dynamically create or terminate SVC/DBID sets. ADACOM cannot be shut down if it owns PLCXB structures established with LOC=DSP. ADACOM commands are available to:

  • exercise some control over the assignment of users to nuclei;

  • display the number of commands and user assignments for each active nucleus on the local image only or on every image known to the local image; and

  • dynamically create or terminate SVC/DBID combinations (sets).

Software AG recommends that you execute and maintain the ADACOM module in each operating system image that participates in the sysplex so that the internucleus commands are available.

For operating system images that have users but no nuclei, Software AG recommends that you keep ADACOM in operation so that it is available not only as a command manager but also to reset the environment if Entire Net-Work goes down for any reason and comes back up.

Although a single ADACOM job can run all SVC/DBID sets in a sysplex environment, it is possible to run multiple ADACOM tasks simultaneously with the same, mixed, or completely different SVC/DBID sets. Each ADACOM on the same system with the same SVC/DBID pair will attach a subtask for operator commands and other functions. Only the first ADACOM for that pair will attach a second subtask to own any dataspaces.

The COMPRINT data set prints global messages that apply to all SVC/DBID sets defined to an ADACOM task. In addition, two SYSOUT data sets are dynamically allocated for command output to each SVC/DBID set. The format of these file names are "Pssddddd" and "Dssddddd" where ss is the last two digits of the SVC and ddddd is the DBID.

ADASVC Component SVCCLU

The Adabas SVC contains the cluster SVC component SVCCLU that routes commands to local and, using Entire Net-Work, to remote nuclei. To make routing decisions, it uses the PLXCB structures, which are updated based on nucleus or ADACOM information. When a user is moved to another system by CICSplex, for example, the ADASVC containing the SVCCLU on that system knows where to route the user's command.

An unlimited number of Adabas clusters each servicing a separate database can run under a single ADASVC.

Cache Structure

Each Adabas cluster in a sysplex environment uses a cache structure to hold ASSO and DATA blocks that have been updated during the session. Caching only the updated blocks improves the efficiency of information transfer and reduces the overall size of the required cache area. The cache structure synchronizes the nuclei, users, and operating system images and ensures data integrity.

The sysplex cache structure resides in the coupling facility in accordance with IBM's definition of coupling facility cache operations; it is thus accessible to all nuclei. The name and size of the cache structure is defined in the coupling facility resource management (CFRM) policy. The cache structure name for an Adabas cluster in a sysplex environment is specified for each cluster nucleus using the ADARUN parameter CLUCACHENAME. The same name must be provided to each nucleus in the cluster, and the same structure name may not be used outside the cluster.

Every nucleus in an Adabas cluster has a local buffer pool and manager. The buffer pool manager (BPM) oversees all nucleus requests for database blocks.

For each block in its local buffer pool, the BPM

  • registers its interest in the block with the coupling facility;

  • checks the coupling facility for the status of the registered block to ensure that its nucleus always has the most current copy of the block; and

  • writes changed blocks to the coupling facility cache structure.

Whenever an updated block is written to the cache structure, the coupling facility notifies all nuclei that have "registered" an interest in that particular block that their local copy has become invalid.

Buffer Flush

From the cache structure, modified blocks are "cast out" to the flush I/O pool (FIOP) buffer before they are written to disk. The FIOP buffer is sized using the ADARUN LFIOP parameter, and the frequency of buffer flushing depends on the limit set. Until such blocks are written to the database, the cache structure holds more current information than the database.

The coupling facility handles the deletion of blocks in the cache structure when it becomes necessary to overwrite them.

Lock Structure

Each Adabas cluster in a sysplex environment uses a lock structure to manage the setting, status, and release of various locks imposed during multiple update nucleus processing. The lock structure synchronizes the nuclei, users, operating system images, and transaction processing to ensure data integrity.

The sysplex lock structure resides in the sysplex coupling facility in accordance with IBM's definition of coupling facility lock operations; it is thus accessible to all nuclei. The name and size of the lock structure is defined in the sysplex coupling facility resource management (CFRM) policy. The lock structure name for an Adabas cluster in a sysplex environment is specified for each cluster nucleus using the ADARUN parameter CLULOCKNAME. The same name must be provided to each nucleus in the cluster, and the same structure name may not be used outside the cluster.

Adabas Cluster Services uses the lock structure name when initializing its lock manager. The lock manager

  • connects to and disconnects from the lock structure;

  • obtains (conditional or unconditional), releases, and alters ownership (shared or exclusive) of resource locks; and

  • reads recovery information about a failed lock.

Lock manager calls may be asynchronous, meaning that the nucleus may continue processing in other threads before a call has completed.

If a lock request is conditional, it is rejected if the lock is not free; if the lock request is unconditional, the nucleus thread waits until the requested lock is free before continuing.

In general, locks are used to prevent two cluster nuclei from using the same resource at the same time. Such resources include

  • data records, which are protected by hold queue element (HQE) locks;

  • unique descriptor values, which are protected by unique descriptor element (UQDE) locks;

  • end-transaction IDs, which are protected by the ETID lock; and

  • various other single-instance resources.

XCF Group

Each Adabas cluster in a sysplex environment uses a cross-system coupling facility (XCF) group to control communication among the cluster nuclei. XCF automatically creates an XCF group for a cluster when the first-starting cluster nucleus attempts to join the group.

When the sysplex COUPLExx data sets are first formatted, the maximum number of XCF groups to be used for the entire sysplex environment is defined. However, XCF group names are not predefined in the CFRM policy.

A name for a cluster's XCF group must be provided to each cluster nucleus using the ADARUN parameter CLUGROUPNAME. The same name must be provided to each nucleus in the cluster and the name may not be used outside the cluster.

Messaging Services

The messaging services component is essential to communication among the active nuclei of an Adabas sysplex cluster. For example, messages need to be sent between nuclei when:

  • the general control block (GCB) has been modified

  • a global parameter has been modified

  • a buffer flush occurred

  • a PLOG is switching

Adabas cluster messaging service statistics are produced during normal nucleus termination and in response to the DXMSG operator command.