2.80.1 pdpfreshの形式と規則
(1) 機能
サーバプロセスをリフレッシュします。リフレッシュとは,稼働中のプロセスを終了させ,代わりに新しいプロセスを起動することをいいます。
リフレッシュ対象となるのは,シングルサーバ,バックエンドサーバ,及びディクショナリサーバです。
(2) 実行者
HiRDB管理者が実行できます。
(3) 形式
pdpfresh 〔-s サーバ名〕 〔{-f|-c}〕
(4) オプション
(a) -s サーバ名 〜<識別子>((1〜8))
リフレッシュをするサーバの名称を指定します。
HiRDB/パラレルサーバの場合は,バックエンドサーバ又はディクショナリサーバ(フロントエンドサーバは指定できません)を指定できます。省略した場合,すべてのサーバ(フロントエンドサーバを除く)を対象とします。
HiRDB/シングルサーバの場合は,-sオプションの指定にかかわらず,シングルサーバを対象とします。
(b) -f
強制的にリフレッシュする場合に指定します。
-fオプションの指定有無によるプロセス終了契機,及びエラー発生有無の違いを次の表に示します。
プロセス |
-fオプションの指定 |
|
---|---|---|
なし |
あり |
|
ユティリティの内部処理中のシングルサーバ,バックエンドサーバ,及びディクショナリサーバのプロセス |
ユティリティ実行中にpdpfreshコマンドを実行した場合,サーバプロセスのリフレッシュはされないで,エラー終了(リターンコード=6)します。この場合,ユティリティの動作に影響はありません。 |
トランザクション終了時点で強制終了します。この場合,ユティリティが異常終了することがあります。 |
AP単位のローカルバッファを使用しているバックエンドサーバのプロセス |
サーバプロセスは強制終了しません。これらのプロセスは,左記の条件を満たさなくなった場合,又は次回のDISCONNECT時に終了します。シングルサーバの場合は,HiRDBクライアントとHiRDBサーバとの間で接続エラーになることがあります。バックエンドサーバの場合はエラーは発生しません。 左記のプロセスがあるかぎり,サーバプロセスのリフレッシュは完了しないため,注意してください。 |
トランザクション終了時点で強制終了します。以降,SQLを実行すると,新たにプロセスに接続して処理を実行します。 |
次のサーバプロセス
|
トランザクション終了時点で強制終了します。以降,SQLを実行すると接続エラーになります。 |
|
バックエンドサーバ接続保持機能を使用しているバックエンドサーバのプロセス |
トランザクション実行中の場合,トランザクション終了後にプロセスがリフレッシュされます。トランザクション中でない場合は,次回のトランザクション終了後にプロセスがリフレッシュされます。 |
トランザクション終了時点で強制終了します。以降,SQLを実行すると,新たにプロセスに接続して処理を実行します。 |
(c) -c
pdpfreshコマンドでプロセス終了要求を受けたプロセスが,すべて終了しているかどうかを調べる場合に指定します。バッチファイルを使用してプロセスのリフレッシュ状態を監視したい場合に指定してください。
結果は,pdpfreshコマンドのリターンコードで分かります(KFPS00730-Iメッセージにも表示されます)。
プロセスごとのリフレッシュ状態を調べたい場合は,pdls -d prc -cコマンドを実行してください。
(5) 規則
-
pdpfreshコマンドは,HiRDBが稼働中のときだけ実行できます。
-
pdpfreshコマンドは,シングルサーバ又はシステムマネジャがあるサーバマシンで実行してください。
-
pdpfreshコマンドは,サーバプロセスのリフレッシュの完了を待たないで終了します。そのため,リフレッシュ中にエラーが発生した場合,pdpfreshコマンドがリターンコード0で終了した後に,エラーメッセージが出力されることがあります。
-
pdpfreshコマンド実行後,プロセスのリフレッシュ完了前に再度pdpfreshコマンドを実行した場合,再実行時の稼働中プロセスがリフレッシュ対象となります。
-
HiRDB/パラレルサーバでフロントエンドサーバの名称を指定した場合,リフレッシュをしないで処理を正常終了します。
-
トランザクション実行中のサーバプロセスは,すぐには終了しないで,トランザクションが完了した時点で終了します。
-
HiRDB/シングルサーバの場合,リフレッシュ実行中にHiRDBクライアントとHiRDBサーバとの間で接続エラーが発生することがあります。これを回避したい場合は,UAPに,接続エラー発生時に接続処理を再実行する処理を追加してください。また,自動再接続機能を使用すると,このエラーがUAPに返却されないで,自動的に再接続がされます。自動再接続機能については,マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。
(6) 注意事項
-
pdpfreshコマンドの実行結果は,pdls -d prcコマンド,及びコマンド実行時のリターンコードで確認できます。コマンド実行時のリターンコードを次に示します。
リターンコード
実行結果
備考
0
-cオプションあり
リフレッシュするプロセスはありません。
−
-cオプションなし
リフレッシュ処理を開始しました。
1
-cオプションあり
リフレッシュ中のプロセスがあります。
-cオプション指定時にだけ出力されます。
-cオプションなし
−
4
警告終了しました(一つ以上のサーバでエラーが発生)。※
HiRDB/パラレルサーバの場合にだけ出力されます。
6
ユティリティ実行中のため,リフレッシュ処理をしないで終了しました。
-fオプションを指定していない場合にだけ出力されます。
8
異常終了
−
(凡例)−:該当しません。
- 注※
-
何らかの要因で一つ以上のサーバから応答がなかった場合,ほかのサーバに対して処理を続行し,リターンコード4で終了します。この場合,エラーが発生したサーバの状態を確認してください。
エラーが発生したサーバが稼働中の場合,そのサーバプロセスがRDエリアにアクセス中のままとなっている可能性があります。エラーが発生したサーバが稼働中の場合は,-sオプションにそのサーバ名を指定して,再度pdpfreshコマンドを実行してください。
-
pdpfreshコマンドは,サーバプロセスのリフレッシュ完了を待たないで終了します。
-
-cオプション指定なしのpdpfreshコマンドがリターンコード0となった後,-cオプション指定ありのpdpfreshコマンドがリターンコード0になれば,リフレッシュ完了です。
-
-cオプション指定ありのpdpfreshコマンドのリターンコード0は,コマンド実行時点でリフレッシュ中のプロセスがないことを意味します(リフレッシュ処理が実行され,それが完了したことを意味するものではありません)。したがって,-cオプション指定なしのpdpfreshコマンドを実行しないで-cオプションありのpdpfreshコマンドを実行すると,リターンコード0となりますが,リフレッシュ処理はされていないので注意してください。
-
pdpfreshコマンドでサーバプロセスをリフレッシュした場合,KFPS01820-E,KFPS04620-I,及びKFPS01819-Iメッセージは出力されません。
-
リフレッシュ中は,常駐プロセス数を一時的に0にします。したがって,リフレッシュ中のサーバに対して,pdchprcコマンドは実行しないでください。実行した場合,リフレッシュが完了しないことがあります。この場合,再度pdpfreshコマンドを実行して,リフレッシュが完了したら,pdchprcコマンドを実行してください。
-
リフレッシュ対象のサーバプロセスの数が多い場合,すべてのプロセスのリフレッシュが完了するまでに時間が掛かることがあります。
-
pdpfreshコマンド(-f及び-cオプション指定なし)とユティリティの実行順序によって,実行結果が異なります。
pdpfreshコマンドとユティリティの実行順序
ユティリティ実行によって割り当てられるプロセス
pdpfreshコマンドの実行結果
ユティリティ実行後にpdpfreshコマンドを実行
−
エラー終了します(リターンコード=6)。
pdpfreshコマンド実行後にユティリティを実行
リフレッシュ対象のプロセス※1
正常終了します(リターンコード=0)。
リフレッシュされたプロセス※2
(凡例)−:該当しません。
- 注※1
-
ユティリティが終了した後にリフレッシュします。リフレッシュが完了するまで,pdpfresh -cコマンドはリターンコード1で終了します。
- 注※2
-
ユティリティはリフレッシュされたプロセスを割り当てて実行するため,pdpfresh -cコマンドはリフレッシュが完了しているプロセスとして扱います。
また,pdpfreshコマンド(-f及び-cオプション指定なし)とユティリティを同時に実行,又は連続して実行すると,実行結果が不定となります。この現象を回避したい場合は,次に示すどちらかの方法を実行してください。
-
pdpfreshコマンド(-f及び-cオプション指定なし)実行した後,pdpfresh -cコマンドでプロセスのリフレッシュが完了するのを確認してからユティリティを実行する
-
ユティリティが終了するのを待って,pdpfreshコマンド(-f及び-cオプション指定なし)を実行する