Sun Java System Application Server Enterprise Edition 8.2 トラブルシューティングガイド

共有メモリーに関連する問題

説明

この問題は、次のいずれかの理由で発生する可能性があります。

原因 1

共有メモリーが設定されていないか、その設定が機能していない。

解決法 1

Sun Java System Application Server 8.2 Installation Guide』で説明されている手順に従います。共有メモリーの設定後、システムをリブートしてください。

原因 2

物理メモリーの容量がノードの要件を満たしていない。次のエラーメッセージが表示される場合があります。

HADB-S-05512: Attaching shared memory segment with key <xx\> failed, 
OS status=12 OS message: Not enough space.

解決法 2

前述のように、共有メモリーが設定されており、その設定が機能していることを確認します。

本稼働システムでは、ホスト上のノード数を減らすか、ホスト上の物理メモリーを増設します。

テストおよび開発システムでは、LogBufferSize および DataBufferPoolSize を設定して共有メモリー使用量を減らし、それぞれデフォルト値の 48 および 200MB よりも小さい値にします。これらの変数に設定可能な最小値は、それぞれ 32 および 64MB です。

原因 3

共有メモリーセグメントのサイズが、許容される最大サイズを超えている。

HADB-S-05510: Getting shared memory segment with key <xx\> failed, 
OS status=22. OS message: Invalid argument.

解決法 3

前述のように、共有メモリーが設定されており、その設定が機能していることを確認します。

共有メモリーが正しく設定されている場合は、いずれかの共有メモリーセグメントサイズ (LogBufferSize または DataBufferPoolSize) を、オペレーティングシステムの設定ファイルで設定されているシステム設定済みの最大値 (Solaris では /etc/systemshmsys:shminfo_shmmax) より大きく設定していないかどうかチェックします。

原因 4

指定した識別子で共有メモリーセグメントがすでに作成されている。

HADB-S-05515: Shared memory segment with key <segment_key\> exists already.

解決法 4

共有メモリーセグメントの一覧を表示してチェックします。UNIX では、ipcs を使用してセグメントのリストを表示できます。Windows では、メモリーがマップされたファイルを使用して共有メモリーを実現しています。HADB では、getTempPath システムコールを使用して、f_segmentid という名前を持つこれらのファイルが格納されているシステム定義の一時ディレクトリを取得します。

稼働中の別のデータベースやその他のプログラムが、この識別子の共有メモリーセグメントをすでに使用していないかどうかチェックします。使用している場合は、別のポートベースでデータベースを作成します。このセグメントを使用している稼働中のデータベースやその他のプログラムがない場合は、hadbm delete unused_database でセグメントを解放します。

セグメントが解放されているかどうかチェックします。セグメントがまだある場合は、それらを削除します (UNIX では ipcrm を使用、Windows では $TMP/f_* を削除)。ファイル名は、f_ プレフィックスのあとに、16 進に変換された segment_key が続く形式になっています。たとえば、エラーメッセージにセグメントキー 15201 がまだ残っていると表示された場合、その一時ファイルの名前は f_3B61 になります。