Nonstop Database, HiRDB Version 9 System Operation Guide

[Contents][Index][Back][Next]

9.3.1 Overview of dynamic updating of global buffers

You use the pdbufmod command to add, modify, and delete global buffers while HiRDB is running. This is called dynamic updating of global buffers. For example, you can perform global updating of global buffers for the following purposes:

Note that HiRDB Advanced High Availability must be installed in order to perform dynamic updating of global buffers.

Organization of this subsection
(1) Limitations on the validity of dynamic updating of global buffers
(2) Before performing the dynamic update operation
(3) Notes

(1) Limitations on the validity of dynamic updating of global buffers

Global buffers that have been updated dynamically become invalid when HiRDB terminates normally or with a planned termination. Therefore, while HiRDB is stopped, you must use the pdbuffer operand to define any global buffers that were updated dynamically. Note also that when you use the system reconfiguration command (pdchgconf command), you can change values specified in the pdbuffer operand while HiRDB is running. For details about using the system reconfiguration command to change HiRDB system definitions, see 9.2 Modifying HiRDB system definitions while HiRDB is running (system reconfiguration command).

In addition, before terminating HiRDB normally or with a planned termination, you should save the execution results of the pdbufls -k def command (global buffer definition information). You can then refer to this information to update the pdbuffer operand.

(2) Before performing the dynamic update operation

Before updating global buffers dynamically, you must first complete the operations described in the following subsections.

(a) Specify HiRDB system definitions
  1. Specify Y in the pd_dbbuff_modify operand.
  2. If fixed is specified in the pd_dbbuff_attribute operand, the shared memory used by a global buffer that is added or modified by this function is fixed in real memory. Therefore, consider carefully the size of the real memory before adding or modifying global buffers. If there is insufficient real memory, either omit the pd_dbbuff_attribute operand or specify free.
  3. Re-estimate the value specified in the SHMMAX operand.
(b) Perform memory-related preparations
  1. When this function is used, the space needed for the shared memory resources listed below increases. To accommodate this increase, you must re-estimate the shared memory size requirements. For details about estimating shared memory size requirements, see the HiRDB Version 9 Installation and Design Guide.
    [Figure] Shared memory used by global buffers
    [Figure] Shared memory used by a single server
    [Figure] Shared memory used by the dictionary server
    [Figure] Shared memory used by back-end servers
  2. The space required by status files increases. To accommodate this increase, you must re-estimate the status file size requirements. For details about estimating status file size requirements, see the HiRDB Version 9 Installation and Design Guide.
  3. Re-estimate the shmmax, shmmni, and shmseg operating system parameters (on Solaris, the shminfo_shmmax, shminfo_shmmin, and shminfo_shmseg parameters; on Linux, the SHMMAX, SHMMIN, and SHMSEG parameters). For details about estimating operating system parameters, see the HiRDB Version 9 Installation and Design Guide.

(3) Notes

(a) Relationship with other facilities

You cannot perform dynamic updating of global buffers while you are using the rapid system switchover facility or the standby-less system switchover facility. To use these facilities, execute the system reconfiguration command (pdchgconf command) to change the values specified in the pdbuffer operand so that global buffers are assigned. Use of the pdchgconf command enables you to modify HiRDB system definitions while HiRDB is running. However, HiRDB Advanced High Availability must be installed in order to use this command. For details about changing HiRDB system definitions while HiRDB is running, see 9.2 Modifying HiRDB system definitions while HiRDB is running (system reconfiguration command).

(b) Exclusion control

While dynamic updating of global buffers is being performed (while the pdbufmod command is executing), the associated RDAREAs are locked by placing them in exclusion mode (EX). This means that transactions that attempt to access these RDAREAs are placed in wait status.

(c) Maximum number of global buffers

To set the maximum number of global buffers, use the pd_max_add_dbbuff_no and pd_max_add_dbbuff_shm_no operands.

You can determine the number of global buffers by counting the number of global buffers displayed in the execution results of the pdbufls -k def command. For a HiRDB parallel server configuration, count the number of global buffers associated with the server name (header name: SVID).

(d) Maximum number of shared memory segments used for global buffers

When you update a global buffer dynamically (when a global buffer is added or when a global buffer modification increases memory requirements), a new shared memory segment is secured, and the dynamically updated global buffer is assigned to this shared memory segment. To set the shared memory segments, use the pd_max_add_dbbuff_no and pd_max_add_dbbuff_shm_no operands. For a HiRDB parallel server configuration, set the value for each server. You can determine the number of shared memory segments by counting the number of shared memory segments displayed in the execution results of the pdbufls -k mem command. For a HiRDB parallel server configuration, count the number of shared memory segments associated with the server name (header name: SHM-OWNER).

If the number of shared memory segments exceeds the maximum, update the pdbuffer operand with the definition information for the dynamically updated global buffers. Then, starting HiRDB normally will reduce the number of shared memory segments.

Note that if the size of the shared memory used by a dynamically updated global buffer is greater than the value in the SHMMAX operand, the shared memory that is being used by the global buffer will consist of more than one shared memory segment. You can use the following formula to obtain the number of shared memory segments that have been allocated:

[Figure]size-of-shared-memory-used-by-the-dynamically-updated-global-buffer [Figure] value-in-SHMMAX-operand[Figure]

For details about shared memory used by global buffers, see the HiRDB Version 9 Installation and Design Guide.