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

配置共用記憶體和信號

在安裝 HADB 之前,必須先配置共用記憶體和信號。該程序視您的作業系統而定。

如果您的主機除了執行 HADB 外還執行其他應用程式,請計算這些應用程式使用的共用記憶體和信號量,將結果增加至 HADB 需要的值。本小節建議的值足以在每台主機上執行多達 6 個 HADB 節點。如果您執行的 HADB 節點超過 6 個,或主機上執行的應用程式需要額外的共用記憶體和信號,只要調高這個值即可。

如果信號的數目過低,可能會導致 HADB 故障並顯示以下錯誤訊息:裝置上無可用空間。此情況可能會在啟動資料庫時或執行階段發生。

Procedure在 Solaris 上配置共用記憶體和信號

由於信號是一種全域性的作業系統資源,因此配置需要顧及主機上執行的所有程序,而不只是 HADB 而已。在 Solaris 上,可以編輯 /etc/system 檔案來配置信號設定。

  1. 以超級使用者身份登入。

  2. 配置共用記憶體。

    • 設定 shminfo_shmmax 以指定主機上單一共用記憶體區段的最大大小。將這個值設定為 HADB 主機電腦上安裝的 RAM 總數,值是以十六進位值表示,不得超過 2 GB。

      例如,以 2 GB 的 RAM 來說,請在 /etc/system 檔案中將值設定如下:


      set shmsys:shminfo_shmmax=0x80000000

      備註 –

      若要確定主機電腦上的記憶體量,請使用以下指令︰


      prtconf | grep Memory

    • 在 Solaris 8 或更低的版本中,請設定 shminfo_shmseg,這是每個程序可以附加的最大共用記憶體區段數。請將這個值設為每台主機節點數的 6 倍。若每台主機的節點數不超過 6 個,請在 /etc/system 檔案中增加以下指令:


      set shmsys:shminfo_shmseg=36

      在 Solaris 9 以及更高版本中,shmsys:shminfo_shmseg 已停用。

    • 設定 shminfo_shmmni,這是全系統的最大共用記憶體區段數。由於每個 HADB 節點都會配置 6 個共用記憶體區段,因此 HADB 需要的記憶體值必須至少是每個主機節點數的 6 倍。在 Solaris 9 中,若每台主機的節點數不超過 6 個,就不需要更改預設值。

  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 中,若每台主機的節點數不超過 6 個,就不需要更改預設值。例如︰


      set semsys:seminfo_semmni=10
    • 設定 seminfo_semmns,這是全系統的最大信號數目。每個 HADB 節點都必須有 8 個信號。在 Solaris 9 中,若每台主機的節點數不超過 6 個,就不需要更改預設值。例如︰


      set semsys:seminfo_semmns=60
    • 設定 seminfo_semmnu,這是系統內還原結構的最大數目。每個連線都需要一個還原結構 (配置變數 NumberOfSessions,預設值 100)。若每台主機的節點數不超過 6 個,將其設為 600:


      set semsys:seminfo_semmnu=600
  4. 重新開機。

Procedure在 Linux 上配置共用記憶體

您必須在 Linux 上配置共用記憶體設定。預設的信號設定則不需要調整。

  1. 以超級使用者身份登入。

  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 的位置。