The following section describes configuration of the operating system.
If the number of semaphores is too low, HADB can fail and display this error message:
No space left on device
This can occur either while starting the database, or during run time. Since the semaphores are provided as a global resource by the operating system, the configuration depends on all processes running on the host, and not the HADB alone. In Solaris, configure the semaphore settings by editing the /etc/system file.
To run the nodes, NNODES (the number of nodes submitted implicitly by --hosts option to the HADB) and NCONNS connections (HADB configuration parameter NumberOfSessions, default value being 100) per host, use the following semaphore settings:
set semsys:seminfo_semmap = <default=10> + NNODES set semsys:seminfo_semmni = <default=10> + NNODES set semsys:seminfo_semmns = <default=60> + (NNODES * 8) set semsys:seminfo_semmnu = <default=30> + NNODES + NCONNS
If you plan to run multiple nodes per host, make sure semmap = NNODES. Use the sysinfo and sysdef commands to inspect the settings.
Set the maximum shared memory size to the total amount of physical RAM. Additionally, set the maximum number of shared memory segments per process to six or more to accommodate the HADB processes. Set the number of system-wide, shared memory identifiers based on the number of nodes running on the host.
In Solaris 9, because of the kernel changes, the hmsys:shminfo_shmseg variable is obsolete. In Solaris 8, add the following settings to the /etc/system file:
set shmsys:shminfo_shmmax = 0xffffffff set shmsys:shminfo_shmseg = <default=6> set shmsys:shminfo_shmmni = <default=100> + (6 * NNODES)
Default values are for Solaris 8. Add HADB resource requirements to the previous value of the variables regardless of whether they are the default values.
You must reboot the host after changing these settings.
To increase the shared memory to 512 MB, run the following commands:
echo 536870912 > /proc/sys/kernel/shmmax echo 536870912 > /proc/sys/kernel/shmall
Where the file shmmax contains the maximum size of a single shared memory segment, and shmall contains the total shared memory to be made available.
This value is large enough for a standard HADB node that uses default values. If the default values are changed, consider changing these values, as well.
To make these changes permanent, add those lines to /etc/rc.local on your Linux machine. With Redhat Linux, you can also modify sysctl.conf to set the kernel parameters.