Hitachi

ノンストップデータベース HiRDB Version 10 システム運用ガイド(UNIX(R)用)


付録A.6 HiRDBの開始に関する質問

〈この項の構成〉

(1) HiRDBの開始が遅いのですが

質問

ユニットの開始に時間が掛かるのはなぜですか?

1時間〜2時間ぐらいしたら開始しました。pdstartコマンドを実行したときにKFPS05078-Iメッセージが出力されました。

お答えします

次に示すことを確認してください。

  1. KFPS00608-Wメッセージ(-314)が複数出力されている場合は,全ユニットのpdunit及びpdstartオペランドで指定したホスト名がすべて一致しているか,正しいホスト名(存在するホスト)を指定しているかを確認してください。

  2. HiRDBが使用するホスト及びネットワークがすべて起動しているかを確認してください。

(2) pdstartコマンドがエラーになります(reason code= TIMEOUT)

質問

pdstartコマンドがKFPS01861-Eメッセージ(reason code=TIMEOUT)を出力してエラーリターンします。なぜですか?

お答えします
原因

次に示す原因が考えられます。

  1. ユニットの開始に予想以上の時間が掛かりました。

  2. サーバ共通定義又は各サーバ定義の指定に誤りがあります。

対策

次に示す対策をしてください。

  1. pd_start_time_outオペランドの指定値を大きくしてから,再度pdstartコマンドを実行してください。

  2. syslogfileに出力されているHiRDBのメッセージを見て,間違いがある定義を修正してください。その後,pdsetup -dコマンド(KFPS00036-Q応答メッセージにyを応答)でHiRDBをOSから削除した後,再度pdsetupコマンドを実行してください。

(3) pdstartコマンドがエラーになります(RETURN_CODE=28)

質問

pdstartコマンドがsemctl,semopなどセマフォ関連の関数にRETURN_CODE=28を返してエラーリターンします。原因は何ですか?

お答えします

資源不足です。OSのオペレーティングシステムパラメタの値をHiRDBが必要としている値に変更してください。特に,オペレーティングシステムパラメタの省略値は,HiRDBが必要としている値より小さいため注意してください。

なお,pdstartコマンドでTIMEOUTエラーになる場合は,セマフォ又は共用メモリ不足が考えられます。HiRDBが必要としているオペレーティングシステムパラメタの値については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

オペレーティングシステムパラメタの値が妥当な場合は,pd_start_time_outオペランドの指定値を大きくしてから,再度pdstartコマンドを実行してください。

(4) pdstartコマンドがエラーになります(reason code=SETUP)

質問

pdstartコマンドがKFPS01801-Eメッセージ(reason code=SETUP)を出力してエラーリターンします。なぜですか?

お答えします
原因

次に示す原因が考えられます。

  1. 環境変数PDDIRに設定したHiRDB運用ディレクトリをpdsetupコマンドでOSに登録していません。

  2. カーネルのセマフォ不足によってプロセスサーバプロセスが起動できません。

対策

次に示す対策をしてください。

  1. HiRDB運用ディレクトリをpdsetupコマンドで,OSに登録してください。

  2. システムで定義するセマフォの使用数を大きくしてください。OSをリブートしないとその値は有効にならないため注意してください。

    参考

    この現象は,OSブート直後やinittabに登録されているほかのプログラムが応答待ちになっている場合にも発生することがあります。

(5) pdstartコマンドが無効になります

質問

pdstartコマンドが無効になります。なぜですか?

お答えします

何らかの障害のためHiRDBのサーバプロセスが起動できなかった可能性があります。

メッセージログ($PDDIR/spool/pdlog1又はpdlog2)を見て障害原因を調査し対策してください。メッセージログの内容で原因が分からない場合は,syslogfileに出力されているHiRDBのメッセージで詳細を確認して対策してください。

(6) pdstartコマンドでユニットが開始できません

質問

pdstartコマンドを実行しましたが,セマフォ操作(semop,semctl)に失敗した旨のKFPS01815-Eメッセージ(errno=11,13,22)が出力されてユニットが開始されません。なぜですか?

お答えします
原因

次に示す原因が考えられます。

  1. HiRDBをそのサーバマシンにインストールしていません。

  2. pdsetupコマンドでHiRDBをOSに登録していません。

  3. インストールディレクトリを共用ディスク上にリンクしています。

対策

次に示す対策をしてください。

  1. サーバマシンをリブートした後にpdsetup -dコマンドを実行し,OSからHiRDBの登録を削除した後,再度pdsetupコマンドを実行してください。

  2. HiRDBをサーバマシンにインストールしている場合は,pdsetupコマンドを実行してください。

  3. インストールディレクトリは,自サーバマシンのローカルディスクに作成してください。

(7) pdstartコマンドの応答がありません

質問

pdstartコマンドの応答が返ってきません。なぜですか?

お答えします
  1. フロントエンドサーバがSUSPEND状態ですか?

    SUSPEND状態でない場合はこれが原因ではありません。ほかの原因を調査してください。SUSPEND状態の場合はフロントエンドサーバが開始したサーバマシンで「ps -ef|grep fesact」を実行してください。マルチフロントエンドサーバの場合はすべてのホストで実行してください。

  2. fesactプロセスが1個以上ありますか?

    ない場合はこれが原因ではありません。ほかの原因を調査してください。

    ある場合はネットワークに障害が発生していると思われます。HiRDBをpdstop -fコマンドで強制終了してください。

    ネットワーク管理者に障害の回復を依頼してください。

(8) HiRDB/パラレルサーバが開始できません

質問

システムマネジャのユニットが異常終了しました。システムマネジャのユニットだけを再開始しましたが,HiRDBが開始完了になりません。

お答えします

システムマネジャのユニットの異常終了によって,システムマネジャ以外のユニットも異常終了している可能性があります。pdlsコマンドで開始していないユニットを確認してください。

(9) システムマネジャ以外のユニットが開始しません

質問

pdstartコマンドを実行しましたが,システムマネジャ以外のユニットが開始しないのはなぜですか?

システムマネジャ以外のユニットでps -efコマンドを実行すると,pdprcdしかいません。HiRDBのほかのプロセスが起動されていません。

お答えします

開始できなかったユニットのシステム共通定義の内容を確認してください。pdunit又はpdstartオペランドの指定値が,システムマネジャがあるサーバマシンのシステム共通定義の内容と一致していない可能性があります。

開始できなかったユニットのシステム共通定義を修正して,pdstart -uコマンドでユニットを再度開始してください。

(10) フロントエンドサーバがSUSPEND状態です

質問

フロントエンドサーバのユニットの単独開始,又はフロントエンドサーバの単独開始をしたら,フロントエンドサーバのステータスがSUSPEND状態になりました。ACTIVE状態にするにはどうしたらよいですか?

お答えします

ディクショナリサーバが停止しているときに,フロントエンドサーバのユニット又はフロントエンドサーバを開始すると,ステータスがSUSPEND状態になります。この場合,ディクショナリサーバを開始した後に,「pdstart -a -s フロントエンドサーバ名」を実行してください。

(11) HiRDBを自動開始できますか?

質問
  1. OSの開始,終了に合わせてHiRDBを開始,終了するにはどうしたらよいですか?

  2. OSの開始と同時にHiRDBを開始させようとして/etc/localrcにpdstartを記述したが,うまくいかないのはなぜですか?

  3. 同じように/etc/localshutrcにpdstopを記述したが,うまくいかないのはなぜですか?

お答えします
  1. OSの開始に合わせてHiRDBを開始するには,pd_mode_confオペランドにAUTOを指定してください。

  2. OSの終了に合わせてHiRDBを終了する手段は今のところありません。pdstopコマンドを実行してHiRDBが正常終了したのを確認してからOSを終了してください。

  3. OSの環境ファイル/etc/localrcや/etc/localshutrcにはpdstart及びpdstopコマンドは記述できません。OSの開始で/etc/localrcが起動されるのは/etc/rcフェーズですが,そのときはまだHiRDBのプロセスサーバプロセス(_prc)が起動されていないため,pdstartコマンドの受付可能状態になっていません。/etc/localrcにpdstartコマンドを記述した場合,pdstartコマンドは異常終了します。OSの開始に合わせてHiRDBを開始したい場合はpd_mode_confオペランドにAUTOを指定してください。また,shutdownコマンドの延長で/etc/localshutrcが起動されるのはOSの実行レベルが0の状態であり,HiRDBのプロセスサーバプロセスは既に消えています。もし/etc/localshutrcにpdstopコマンドを記述した場合,pdstopコマンドはエラーリターンし,HiRDBの次回の開始は再開始となります。

(12) /etc/localrcにpdstartコマンドを記述したが,pdstartコマンドがエラーとなりました

質問
  • /etc/localrcにpdstartコマンドを記述しましたが,pdstartコマンドがエラーとなりました。

  • HAモニタのインタフェースを使用してpdstartコマンドを実行しましたが,pdstartコマンドがエラーとなりました。

  • OSブート直後にリモートログインして,すぐにpdstartコマンドを実行するとpdstartコマンドがエラーとなりました。

お答えします

OSのブート時にHiRDBが動作可能になるのは,ブート動作の最後の方です。このため,/etc/localrcなどにpdstartコマンドを記述してもHiRDBを開始できません。pdstartコマンドを実行するタイミングは,プロセスサーバプロセスの開始後である必要があります。

対策1

OSのブート直後にpdstartコマンドを実行しないでください。例えば,次に示す手順でpdstartコマンドを実行してください。

〈手順〉

  1. pdprcdが起動されていることを確認してください。

    ps -ef|grep $PDDIR/lib/servers/pdprcd

  2. 数秒待ちます(プロセスサーバプロセスの起動完了を待ちます)。

  3. pdstartコマンドを実行します。

対策2

HiRDBを自動開始するようにしてください。HiRDBを自動開始するには,pd_mode_conf = AUTOを指定してください。この指定をすると,OSのブート後,自動的にHiRDBを開始します(pdstartコマンドを実行する必要がなくなります)。

(13) pdstartコマンドを入力したウィンドウを閉じたら,HiRDBが異常終了しました

質問

pdstartコマンドを実行したがなかなか応答が返らないため,pdstartコマンドを入力したウィンドウを閉じました。この直後にHiRDBが異常終了しました。なぜですか?

お答えします

pdstartコマンドを強制停止すると,共用資源の整合性が保てなくなるため,HiRDBは異常終了します。同様にpdstartコマンドの応答待ちの状態でウィンドウを閉じると,HiRDBは異常終了します。

pdstartコマンドを入力したウィンドウはpdstartコマンドが終了するまで閉じないでください。そのほかのコマンド及びユティリティについても,応答待ち状態や実行中にウィンドウを閉じないでください。