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

HADB データベースの作成が失敗する

ここでは、次のようにデータベースの作成が失敗する場合に考えられる理由について説明します。

failed to start database : HADB Database creation failed

問題の原因を識別するには、ログビューアを使用するか、install_dir/hadb/4/log ディレクトリを調べるか、またはその両方を行います。発生する可能性がある主なエラーは、次のとおりです。

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

説明

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

原因 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 になります。

セマフォーが少なすぎる

説明

HADB-E-05521: Operation on semaphore with key "46025" failed, OS status=28 :
No space left on device

このエラーは、セマフォーの数が少なすぎる場合に発生することがあります。セマフォーはオペレーティングシステムからグローバルリソースとして提供されるため、その設定は、HADB だけでなくホスト上で実行されるすべてのプロセスに依存しています。このエラーは、HADB の起動中または実行中に発生する可能性があります。

解決法

/etc/system ファイルを編集して、セマフォーの設定を変更します。手順とガイドラインについては、『 Sun Java System Application Server Installation Guide』の「Preparing for HADB Setup」の章にある「Configuring Shared Memory and Semaphores」のセクションを参照してください。

データベースノードにアクセスできないため、データベースが機能しない

解決法

関係するホストの IP アドレスを固定してください。HADB では、データベース作成時に存在した固定 IP アドレスを使用するため、本稼働システムで動的 IP アドレス (DHCP) は使用できません。

管理エージェントでドメインを確立できなかった

説明

HADB 管理システムは、マルチキャストアドレス 228.8.8.8 上の UDP マルチキャストメッセージに依存しています。これらのメッセージを伝達できない場合、createdomain コマンドが失敗して次のメッセージが表示されます。

The management agents could not establish a domain, please check that the
hosts can communicate with UDP multicast.

考えられる原因は次のとおりです。

解決法 1

ホスト上に、異なるサブネットに接続する複数のネットワークインタフェースがある場合は、それらのサブネットの 1 つを使用するように管理エージェントを設定する必要があります。ma.server.mainternal.interfaces 属性を設定します。

解決法 2

マルチキャストメッセージのサポートに必要なネットワークインフラストラクチャーを構成します。

hadbm create または hadbm addnodes コマンドがハングする

説明

hadbm create または addnodes に指定したホストリストの一部のホストに複数のネットワークインタフェースがあり、ほかのホストにはネットワークインタフェースが 1 つしかない場合、hadbm create/addnodes コマンドがハングします。

解決法

ネットワークインタフェースを複数備えるホストでは、hadbm create/addnodes の実行時に hadb で使用するネットワークインタフェースの IP アドレスをドット区切りで指定します (たとえば、129.241.111.23)。IP アドレスの代わりにホスト名を使用すると、ホストに登録された最初のインタフェースが使用されるため、ノードが通信可能状態になる保証はありません。

ma (管理エージェントプロセス) に障害が発生する

説明

ma (管理エージェントプロセス) には、さまざまな理由で障害が発生します。

解決法

hadbm listdomain を使用して診断情報を表示します。一般に、対処法は障害の発生したエージェントを再起動することです。それで解決しない場合は、すべてのエージェントを順番に再起動します。