hadbm コマンドとその多数のサブコマンドおよびオプションを使用して、高可用性データベース (HADB) を管理することができます。hadbm コマンドは、install_dir/SUNWhadb/4/bin ディレクトリにあります。
このコマンドの詳細な説明については、『Sun Java System Application Server 管理ガイド』の「Configuring the High Availability Database」の章を参照してください。各 hadbm サブコマンドの詳細については、hadbm のマニュアルページを参照してください。
ここでは、次の問題について説明しています。
コマンドが次のエラーで失敗します。
The agents <url\> could not be reached.
URL のホストにアクセスできなかった可能性があります。原因は、ホストがダウンしている、通信経路が確立されていない、URL のポート番号が違う、管理エージェントがダウンしている、のいずれかです。
URL が正しいかどうか確認します。URL が正しい場合は、ホストが稼動しておりすぐに通信できる状態にあることを確認します。次に例を示します。
ping hostname1ping hostname2...
hadbm コマンドはカレントディレクトリから実行できます。検索 PATH を設定してどこからでも hadb コマンドを使用できるようにすれば、一層便利です。「hadbm: Command not found」というエラーは、これらの条件のいずれにも当てはまらなかったことを示します。
hadbm コマンドを含むディレクトリに cd で移動し、そこから実行します。
cd install_dir/SUNWhadb/4/bin/ ./hadbm
hadbm コマンドのフルパスを指定して呼び出します。
install_dir/SUNWhadb/4/bin/hadbm
PATH 変数を設定すると、どこからでも hadbm コマンドを使用できます。PATH 変数の設定手順については、『Sun Java System Application Server 8.2 Installation Guide』の「Preparing for HADB Setup」の章を参照してください。
PATH の設定が正しいかどうか確認するには、次のコマンドを実行します。
which asadmin which hadbm
ユーティリティーに返されるパスを確認してください。
「hadbm: <path\>: Invalid Java home location」というメッセージは、JAVA_HOME 環境変数が適切に設定されていないことを示します。
システムに複数のバージョンの Java がインストールされている場合は、JAVA_HOME 環境変数に正しいバージョンの Java (Enterprise Edition では 1.4.1_03 以上) が設定されているかどうか確認します。
PATH 変数の設定手順については、『Sun Java System Application Server 8.2 Installation Guide』の「Preparing for HADB Setup」の章を参照してください。
ネットワークインタフェースが複数あるホスト上で HADB 管理エージェントを実行する場合、それらのネットワークインタフェースがすべて同一サブネット上にないと、createdomain コマンドが次のように失敗することがあります。
hadbm:Error 22020: The management agents could not establish a domain, please check that the hosts can communicate with UDP multicast.
管理エージェントのデフォルトでは、UDP マルチキャスト用に「最初の」(java.net.NetworkInterface.getNetworkInterfaces() で返される「最初の」) インタフェースが使用されます。
最善の解決法は、設定ファイルで ma.server.mainternal.interfaces を設定して、使用するサブネットを管理エージェントに通知することです。次に例を示します。
ma.server.mainternal.interfaces=10.11.100.0
サブネット間のルーターで、マルチキャストパケットを経路指定するように設定する方法もあります。デフォルトでは、管理エージェントで使用するマルチキャストアドレスは、228.8.8.8 です。
hadbm create コマンドの実行後、コンソールに次のようなエラーが表示されます。
./hadbm create ... ... hadbm: Error 22022: Path path does not exist on host host
このエラーメッセージは、マシン上に存在しないパスを指定して新しいノードを追加した場合にも表示されることがあります。
ホストにログインし、HADB デバイスおよび HADB 履歴ファイルのパスを作成します。hadbm create を実行し、作成したパスを --devicepath および --historypath オプションで指定します。ホスト上で管理エージェントを実行するユーザーに、これらのディレクトリに対する読み取りおよび書き込みアクセス権があることも確認してください。
HADB の実行可能ファイルを複数の異なるホスト上の異なるパスにインストールすることはできません。
create または start コマンドが失敗し、次のコンソールエラーメッセージが表示されます。
hadbm: Error 22095: Database could not be started...
次の点を考慮してください。
ノードの停止後に、そのノードに割り当てられたリソース (共有メモリー、ディスク領域) がほかのプロセスに占有されていると、起動が失敗することがあります。
この問題を解決する方法については、「共有メモリーに関連する問題」を参照してください。
問題がなくならない場合は、HADB 履歴ファイルを調べます。見つかる可能性が高い主なエラーメッセージは、次のとおりです。
Could not verify node address
このメッセージは、HADB サーバーが処理しようとしたポートを別のプロセスが使用している場合に出力されます。次のような状況が考えられます。
portBase が、このホストマシン上で実行されている別のプロセスで使用されている。
次のコマンドを使用して、PortBase 属性を別の値に設定します。
hadbm set portbase=value
保守のために HADB ノードを停止しようとしたが失敗した。
hadbm コマンドを使用して、ノードの停止を再試行します。これが失敗する場合は、このノードの OS プロセス clu_nsup_srv を -9 オプションを指定せずに kill します。これで、nsup プロセスの hadb 子プロセスが停止します。親プロセスの nsup が存在しない場合は、kill -9 で、すべての子プロセスを kill します。
保守のために HADB ノードを停止したが、起動予定時刻より前に inetd プロセスによって HADB ノードが再起動された。
予定より前に inetd によって HADB ノードが起動されないように注意してください。
hadbm command fails with internal error:"The database could not be started”
次のことをチェックします。
HADB 設定内のすべてのマシン上の共有メモリが正常であること。
マシン上でほかの HADB データベースが稼働していないこと。同じポート番号を使用する可能性のあるほかのプロセスも実行されていないこと。
必要なディレクトリがすべて存在し、それらに対する書き込み権があること。
デバイスの書き込み先となるディレクトリに十分な容量があること。
前述の項目のいずれにも問題が発生していないことを確認したら、次の救済策を順番に試してください。
データベースを削除して再試行します。
データベースを削除し、リブートして再試行します。
データベースを削除し、HADB ソフトウェアを再インストールして再試行します。
詳しくは、『Error Message Reference』を参照してください。
clear コマンドでは、ディスク上に存在するデータベースデバイスファイルを再初期化します。このコマンドは、ディスクまたはディスクアクセスの問題が原因で失敗することがあります。このことを示す hadbm からのエラーメッセージがないかどうかチェックします。もしないなら、ma.log ファイル内を検索して、devinit から出力されたエラーメッセージがないかどうかチェックします。
asadmin create-session-store コマンドは、次のいずれかの理由で失敗することがあります。
このエラーは、create-session-store コマンドに指定した --dbsystempassword が、データベース作成時に指定したパスワードと異なる場合に発生します。
正しいパスワードを指定してコマンドを再試行します。
dbsystem パスワードを忘れた場合は、hadbm clear でデータベースをクリアーし、新しい dbsystem システムパスワードを指定する必要があります。
create-session-store から次のエラーが出力されます: SessionStoreException: java.sql.SQLException: No suitable driver。
asadmin で、Application Server config ディレクトリの asenv.conf で定義した AS_HADB パスから hadbjdbc4.jar を見つけられない場合に、このエラーが発生することがあります。
解決法は、HADB のインストール場所を指すように AS_HADB を変更することです。
次に、asenv.conf ファイルから AS_HADB エントリの例を示します。
AS_HADB=/export/home0/hercules/0815/SUNWhadb/4.4.0-8
このエラーは、--storeUrl に間違った値を指定した場合にも発生することがあります。この問題を解決するには、hadbm get jdbcURL を使用して正しい URL を取得します。
hadbm との間で通信する管理エージェントが、操作が完了する前に停止すると、hadbm プロセスがハングすることがあります。すべてのエージェントが稼働しているかどうかチェックしてください。
二重ノード障害が起きると、HADB 再起動は機能しません。HADB を再起動するには、付加的な回復アクションが必要です。
二重ノード障害の主な症状は、次のとおりです。
hadbm status で、HADB が作動不能状態であることが示される。
node status で、ノードが Starting または Recovering 状態であることが示される。各ノードを停止し再起動したあとでも、ノードは Starting 状態のままです。最終的に、ノード状態は Stopped に変わります。
この問題は、停電後などにミラー HADB ホストマシンで障害が発生したりリブートが行われたりした場合、単一マシンインストールで HADB を先に停止することなくマシンがリブートされる場合、または両方のデータ冗長ユニット (DRU) からミラーマシンのペアがリブートされる場合に発生します。
HADB は、このような「二重障害」の状況から自動的に自己回復できません。ペアーノード上に存在したデータの一部が失われるからです。このような場合、hadbm start コマンドは失敗し、hadbm status コマンドにより HADB が作動不能状態であることが示されます。
DRU と HADB の詳細な説明については、『管理ガイド』の「Administering the High Availability Database」、および『配備計画ガイド』を参照してください。
HADB が異常な動作 (たとえば、定常的にタイムアウトする) を示している場合、再起動でその問題が解決するかどうかを調べるには、hadbm restart コマンドを使用します。
この方法で HADB が再起動するなら、HADB のサービスを引き続き利用できます。これとは異なり、HADB の起動と停止を hadbm stop および hadbm start を使用して別個の操作で行う場合は、HADB の停止中は HADB サービスを利用できません。
ノードの状態が Starting か Recovering を示すことを確認してから、データベースをリセットします。『管理ガイド』の「Administering the High Availability Database」の章にある「Recovering from Session Data Corruption」の手順に従います。