HADB データベース生成の失敗

データベース生成は、次のエラーで失敗します。 :

failed to start database : HADB Database creation failed

その問題の原因を見つけ出すには、ログビューワを利用するかあるいは、 install_dir/hadb/4/log ディレクトリを検査します。想定されるいくつかのエラーとしては次のとおりです。 :

  • 共有メモリーに関連する問題
  • セマフォの不足
  • データベースノードに到達できない、あるいは、データベースが有効ではない
  • 管理エージェントがドメインを確立できなかった
  • hadbm create 又は、 hadbm addnodes コマンドがハングアップしている
  • ma ( 管理エージェントプロセス ) が破損している

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

  • 解説
    \この問題は、種々の理由のいずれかに起因して発生します。 :
    • 原因 1*
      \共有メモリーが設定されていない、又は、設定が有効となっていない。
    • 原因 2*
      \物理メモリーが、ノードの要求を満たすほど十分ではない。次のエラーメッセージが表示される。 :\
      HADB-S-05512: Attaching shared memory segment with key <xx\> failed, 
      OS status=12 OS message: Not enough space.
  • 解決方法 2\\\\\上記のように、共有メモリーが設定されていて、設定が有効化されているかを確認してください。\\\\\システム本番環境では、ホスト上のノード数を減らすか又は、物理メモリーを増設してください。
    \システム開発 / テスト環境では、 LogBufferSizeDataBufferPoolSize によって設定されている、共有メモリーの使用量を、デフォルト値の、 48200MB よりも低い値をそれぞれ設定することで、共有メモリーの使用量を減らしてください。それら変数に許容される最小値は、それぞれ 3264 MB です。
    • 原因 3*\\\\\共有メモリーセグメントサイズが、最大値の許容範囲を超えた
      {code}HADB-S-05510: Getting shared memory segment with key <xx\> failed, OS message: Invalid argument.
      * *解決方法 3*\\\\\上記のように、共有メモリーが設定されていて、設定が有効化されているかを確認してください。
      \共有メモリーが正しく設定されていた場合は、システム定義ファイル (Solaris では、 {{/etc/system}} にある {{shmsys:shminfo_shmmax}}) の操作によって設定されているシステム設定上の最大値よりも、共有メモリーセグメントサイズ ({{LogBufferSize}} 又は {{DataBufferPoolSize}}) が大きく指定されていないかチェックしてください。
      
      ** 原因 4*
      \指定した識別子が、既に共有メモリーセグメントを生成していた :\
      HADB-S-05515: Shared memory segment with key <segment_key\> exists already.
       
                 
  • 解決方法 4
    \共有メモリーセグメントを参照し、チェックしてください。UNIX では、 ipcs コマンドで、セグメントの使用状況を参照できます。Windows では、共有メモリーに対して、メモリーマップトファイルを利用します。
    \HADB は、 f_segmentid の様に命名されたそれらファイルが登録されている、システムで定義された一時ディレクトリを取得する、システムコール、 getTempPath を利用します。
    \この識別子で、既に他の動作中データベースまたは、プログラムが、共有メモリーセグメントを使用していないかチェックしてください。もしそうならば、他のポートを使用してデータベースを生成して下さい。もしそうならば、他のポートを使用してデータベースを生成して下さい。もしこのセグメントを利用しているデータベース、あるいはプログラムが存在しなかった場合、 hadbm delete unused_database によってセグメントを開放してください。
    \セグメントが開放されたかどうか、チェックしてください。もしも未だそれらが存在した場合は、取り除いてください。 (UNIX では ipcrm を、 Windows では $TMP/f_* を利用し、そして削除 ) そのファイル名は、プレフィックスの f_ に続いて、 16 進数へ変換された、 segment_key から成り立っています。 たとえば、エラーメッセージが指し示すセグメントキー、 15201 を出力した場合、一時ファイル名は f_3B61 となります。

セマフォの不足

  • 解説\\\\\~UWC_TOKEN_START~1278691907376~UWC_TOKEN_END
    \これは、セマフォの数が少なすぎることが原因となります。セマフォが、オペレーティングシステムによって、グローバルリソースとして供給される為、その設定は、 HADB に限らず、ホスト上で動作している全てのプロセスに依存します。これは、 HADB 起動中もしくは、実行している間の両方で、発生し得ます。
  • 解決方法
    /etc/system ファイルを修正することによって、セマフォの設定を行ってください。使用説明書とガイドラインは、 Sun Java System Application Server インストールガイドの、 HADB セットアップチャプターで用意されている、共有メモリーとセマフォの設定セクションに掲載されています。

データベースノードに到達できない、あるいは、データベースが有効ではない

  • 解決方法
    \ホストを指す IP アドレスを、確定する必要があります。HADB は、データベース生成時に、存在する固定化された IP アドレスを使用します。なので、本番システム環境では、動的 IP アドレス (DHCP) は利用できません。

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

  • 解説
    \HADB 管理システムは、マルチキャストアドレス 228.8.8.8 上の、 UDP マルチキャストメッセージに依存しています。これらメッセージを送信することが出来ない場合は、次のメッセージによって、ドメイン生成コマンドが失敗しています。 :\\\\\~UWC_TOKEN_START~1278691907377~UWC_TOKEN_END
    \想定しうる原因は以下があります。 :\
    • クライアントエージェントが、異なるサブネット上で、それぞれのネットワークインターフェースによって、ホスト上で動作している。
      \
    • マルチキャストメッセージを転送しないネットワーク上のスイッチが存在する。
      \
    • アドレス 228.8.8.8 によって、マルチキャストメッセージをルーティングしない、ネットワークルーターの存在がある。
      \
    • マルチキャストメッセージがオペレーティングシステム上で使用できない。 ( 例 Solaris 10)
  • 解決方法 1
    \ホストが、異なるサブネット各々のネットワークインターフェースを持っていた場合、管理エージェントは、サブネットのうちのひとつを利用するように設定される必要があります。ma.server.mainternal.interfaces 属性を設定してください。
  • 解決方法 2
    \マルチキャストメッセージをサポートする、ネットワーク基盤を更正する必要があります。

hadbm create or hadbm addnodes Command Hangs

  • 解説
    \ホストの一覧にあるいくつかのホストは、 hadbm create 又は、 addnodes へ、多重のネットワークインターフェースを持たせるので、ただひとつでも、ほかのホストが掴んでいると、 hadbm create/addnodes コマンドは、ハングアップします。
  • 解決方法
    \多重のネットワークインターフェースを持っているホストに対して、 hadbm create/addnodes コマンドを発行している時、 hadb に使用させるために、ネットワークインターフェースに点在する IP アドレス ( 例 129.241.111.23) を特定します。もしホスト名が、 IP アドレスの代わりに使用されている場合は、ホストの一番目に登録されたインターフェースが利用され、そのノードが通信可能である保障はありません。

ma ( 管理エージェントプロセス ) の破損

  • 解説
    ma ( 管理エージェントプロセス ) は、さまざまな原因によって破損します。
  • 解決方法
    hadbm listdomain を利用することによって、診断情報が表示されます。 大体は、失敗したエージェントの再起動で改善されます。もしもヘルプがない場合は、全てのエージェントを順々に再起動してください。

Back

日本語翻訳: jack spallaw

英文 (翻訳したバージョン: 49)