HADB をインストールする前に、共有メモリーとセマフォーを設定する必要があります。この手順は、使用しているオペレーティングシステムによって異なります。
Iホストで HADB 以外のアプリケーションを実行する場合は、アプリケーションが使用する共有メモリーおよびセマフォーを計算し、HADB で必要な値に追加します。各ホストで動作する HADB ノードが最大 6 つの場合は、この節で推奨している値で十分です。6 つを超える HADB ノードを動作させる場合、または追加の共有メモリーおよびセマフォーを必要とするアプリケーションがホストで動作している場合は、値を増やす必要があるだけです。
セマフォーの数が少なすぎる場合、HADB がエラーになって次のエラーメッセージが表示されることがあります。「デバイスに空き容量がありません」。これは、データベースの起動時や実行時に発生する可能性があります。
セマフォーは、グローバルなオペレーティングシステムリソースであるため、設定は、HADB だけでなく、ホストで稼働しているすべてのプロセスに依存します。Solaris では、/etc/system ファイルを編集してセマフォーを設定します。
ルートとしてログインします。
共有メモリーを設定します。
shminfo_shmmax を設定します。この値は、ホスト上の単一共有メモリーセグメントの最大サイズを指定します。16 進数表現で、この値を HADB ホストマシンの RAM の合計サイズ (ただし 2G バイト以下) に設定します。
たとえば、RAM が 2G バイトの場合は、/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 ノード以下の場合は、デフォルト値を変更する必要はありません。
セマフォーを設定します。
/etc/system ファイルを確認して、たとえば次のようなセマフォー設定のエントリがないかどうか調べます。
set semsys:seminfo_semmni=10 set semsys:seminfo_semmns=60 set semsys:seminfo_semmnu=30 |
エントリが存在する場合は、次に示すように値を増やします。
これらのエントリが /etc/system ファイルに含まれていない場合は、ファイルの最後に次のエントリを追加します。
seminfo_semmni (セマフォー識別子の最大数) を設定します。各 HADB ノードにはセマフォー識別子が 1 つ必要です。Solaris 9 では、ホストあたりに 6 ノード以下の場合は、デフォルト値を変更する必要はありません。次に例を示します。
set semsys:seminfo_semmni=10 |
seminfo_semmns (システム全体のセマフォーの最大数) を設定します。各 HADB ノードにはセマフォーが 8 つ必要です。Solaris 9 の場合、またはホストあたりに 6 ノード以下の場合は、デフォルト値を変更する必要はありません。次に例を示します。
set semsys:seminfo_semmns=60 |
seminfo_semmnu (システム中の undo 構造体の最大数) を設定します。各接続 (設定変数 NumberOfSessions、デフォルト値は 100) には undo 構造体が 1 つ必要です。ホストあたりに 6 ノード以下の場合は、600 に設定します。
set semsys:seminfo_semmnu=600 |
マシンを再起動します。
Linux では、共有メモリー設定を設定する必要があります。デフォルトのセマフォー設定を調整する必要はありません。
ルートとしてログインします。
ファイル /etc/sysctl.conf を編集します。
Redhat Linux では、sysctl.conf を変更してカーネルパラメータを設定することもできます。
kernel.shmax および kernel.shmall の値を次のように設定します。
echo MemSize > /proc/sys/shmmax echo MemSize > /proc/sys/shmall |
ここで、MemSize はバイト数です。
kernel.shmax パラメータは、共有メモリーセグメントの最大サイズをバイト単位で定義します。kernel.shmall パラメータは、システムで一度に使用できるページ内の共有メモリーの合計容量を設定します。これらの両方のパラメータの値を、マシンの物理メモリーの総量に設定します。この値は、10 進数のバイト数で指定します。
たとえば、両方の値を 2G バイトに設定するには、次のように指定します。
echo 2147483648 > /proc/sys/kernel/shmmax echo 2147483648 > /proc/sys/kernel/shmall |
次のコマンドを使用してマシンを再起動します。
sync; sync; reboot
Windows では、特別なシステム設定は必要ありません。ただし、既存の J2SE インストールを使用する場合は、JAVA_HOME 環境変数を J2SE がインストールされている場所に設定します。