Sun Java System Application Server 9.1 高可用性管理指南

配置共享内存和信号

安装 HADB 之前,必须配置共享内存和信号。此过程取决于您的操作系统。

如果在主机上运行除 HADB 以外的应用程序,则应计算这些应用程序使用的共享内存和信号量,并将其与 HADB 所需的值相加。本节所建议的值足够用于在每台主机上运行多达六个 HADB 节点。如果运行的 HADB 节点超过六个,或主机运行的应用程序需要更多的共享内存和信号量,则只需要增大这些值。

如果 信号量的数目过低,则 HADB 可能会失败,并显示以下错误消息:No space left on device。在启动数据库时或在运行时可能会出现这种情况。

Procedure在 Solaris 上配置共享内存和信号

因为信号量是全局操作系统资源,所以配置将会与主机上运行的所有进程相关,而不是只与 HADB 相关。在 Solaris 中,通过编辑 /etc/system 文件来配置信号量设置。

  1. 以 root 用户身份登录。

  2. 配置共享内存。

    • 设置 shminfo_shmmax,该参数指定主机上单个共享内存段的最大大小。将此值设置为 HADB 主机上安装的 RAM 的总容量,以十六进制值表示,但不能大于 2 GB。

      例如,对于 2 GB RAM,在 /etc/system 文件中将该值设置如下:


      set shmsys:shminfo_shmmax=0x80000000

      注 –

      要确定主机的内存,请使用以下命令:


      prtconf | grep Memory

    • 在 Solaris 8 或更低版本中,设置 shminfo_shmseg,即一个进程最多可以附加的共享内存段数。将该值设置为每台主机节点数的六倍。对于每台主机最多有六个节点的情况,请向 /etc/system 文件中添加以下内容:


      set shmsys:shminfo_shmseg=36

      在 Solaris 9 和更高版本上,shmsys:shminfo_shmseg 是过时的属性。

    • 设置 shminfo_shmmni,即整个系统中共享内存段的最大数目。因为每个 HADB 节点分配六个共享内存段,所以 HADB 所需的值至少必须为每台主机节点数的六倍。在 Solaris 9 中,对于每台主机最多有六个节点的情况,不需要更改默认值。

  3. 配置信号。

    检查 /etc/system 文件是否包含以下信号量配置条目,例如:


    set semsys:seminfo_semmni=10
    set semsys:seminfo_semmns=60
    set semsys:seminfo_semmnu=30

    如果存在这些条目,请按如下所示增大这些值。

    如果 /etc/system 文件不包含这些条目,请将它们添加到该文件的结尾:

    • 设置 seminfo_semmni,即信号量标识符最大数目。每个 HADB 节点需要一个信号量标识符。在 Solaris 9 中,对于每台主机最多有六个节点的情况,不需要更改默认值。例如:


      set semsys:seminfo_semmni=10
    • 设置 seminfo_semmns, 即整个系统中信号量的最大数目。每个 HADB 节点需要八个信号量。在 Solaris 9 中,对于每台主机最多有六个节点的情况,不需要更改默认值。例如:


      set semsys:seminfo_semmns=60
    • 设置 seminfo_semmnu,即系统中撤消结构的最大数目。每个连接需要一个撤消结构(配置变量 NumberOfSessions,默认值 100)。对于每台主机最多有六个节点的情况,将该值设置为 600:


      set semsys:seminfo_semmnu=600
  4. 重新引导计算机。

Procedure在 Linux 上配置共享内存

在 Linux 中,必须配置共享内存设置。不需要调整默认信号量设置。

  1. 以 root 用户身份登录。

  2. 编辑文件 /etc/sysctl.conf

    在 Redhat Linux 中,您还可以修改 sysctl.conf 以设置内核参数。

  3. 按如下所示,设置 kernel.shmaxkernel.shmall 的值:


    echo MemSize > /proc/sys/shmmax
    echo MemSize > /proc/sys/shmall

    其中,MemSize 为字节数。

    kernel.shmax 参数定义了共享内存段的最大大小(以字节为单位)。kernel.shmall 参数设置了在系统上可以一次使用的共享内存的总数(以页为单位)。将这两个参数的值设为计算机上的物理内存量。请以十进制字节数指定该值。

    例如,要将两个值都设置为 2GB,请使用以下命令:


    echo 2147483648 > /proc/sys/kernel/shmmax
    echo 2147483648 > /proc/sys/kernel/shmall
  4. 使用以下命令重新引导该计算机:

    sync; sync; reboot

适用于 Windows 的过程

Windows 并不需要任何特殊的系统设置。但是,如果要使用现有 J2SE 安装,请将 JAVA_HOME 环境变量设置为安装 J2SE 所在的位置。