【解決手段】ジョブ実行サーバ10は、ジョブを構成するプロセスを実行するプロセス実行部102と、プロセス実行部によって生成されプロセス実行部を監視するプロセス監視部103と、外部からジョブ実行コマンドを受信するコマンド受信部101と、プロセスの処理結果を外部に対して送信する処理結果送信部104とを有し、プロセス実行部は、プロセス毎にログファイル105にログを記録し、プロセス監視部は、ログファイルのログを所定の時間ごとに参照して、プロセス実行部のプロセスが所定の時間内に処理を終えていないと判断した場合には、処理中のプロセスを停止し、プロセス監視部の実行結果をプロセス実行部の処理結果として処理結果送信部を介して外部に送信する。
前記プロセス監視部は、前記ログファイルのログを所定の時間ごとに参照し、前回参照したログの内容から変化していない場合には、前記プロセスが処理中であると判断すること
を特徴とする請求項2に記載の監視システム。
前記プロセス監視部は、前記所定の時間内に処理を終えていないと判断した場合に、前記プロセス監視部の実行結果を前記プロセスの処理結果として前記処理結果送信部を介して前記外部に送信する、
請求項2に記載の監視システム。
前記プロセス監視部が前記所定の時間内に処理を終えていないと判断した場合に、前記ジョブ管理サーバが前記ジョブの進行状況に応じたリカバリ処理を行う実行コマンドを前記ジョブ実行サーバに送信する、
請求項11に記載の監視システム。
前記プロセス監視部が前記所定の時間内に処理を終えていないと判断した場合に、前記ジョブ管理サーバが前記ジョブの進行状況に応じたリターンコードを前記ジョブ実行サーバに送信し、前記ジョブ実行サーバは前記リターンコードに対応したリカバリ処理を行う、
請求項11に記載の監視システム。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、タイムアウト値は数十分ないし数時間という比較的長時間に設定されるため、タイムアウトが発生しジョブ実行サーバに異常が発生したと判断された場合に、ジョブ実行サーバのリカバリ処理の開始が、少なくともタイムアウト設定時間の分だけ遅くなる。
【0006】
なお、仮にタイムアウト時間を短く設定した場合には、ジョブ実行サーバの処理の遅延や、ジョブ管理サーバとジョブ実行サーバ間の通信ネットワークに一時的で回復可能な障害等が発生した場合でも、異常発生と判断してしまうので、異常発生の頻度が増加するという問題がある。
【0007】
また、ジョブ実行コマンドは通常複数のプロセスから構成されるが、タイムアウト処理の場合には、どのプロセスで障害が発生したのかを適時に検知することができない。すなわち、どのプロセスで障害が発生したかに関係なく、同じリカバリ処理を行うことしかできない。
【0008】
また、障害発生の内容や発生箇所に応じたきめ細かなリカバリ処理を行おうとしても、どのプロセスで障害が発生したのかを検知することができないので、大部分のリカバリ処理を手動で行わなければならない。
【0009】
また、ジョブ管理サーバが、ジョブ実行サーバにコマンドを送信した後に、一定間隔でpingコマンドをジョブ実行サーバに送信するという方法をとった場合も、やはりどのプロセスで障害が発生したのかを知ることができない。
【0010】
そこで、本発明は、ハングアップ状態等の異常発生をより早く適時に検知することによって、異常発生時に迅速かつプロセス単位の柔軟なリカバリ処理を可能とし、従来技術では一括して異常発生として処理されていた状況を事前に回避することが可能なプロセス処理システムを提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の一実施形態に係るジョブ実行サーバによって処理されるプロセスの監視システムは、ジョブを構成するプロセスを実行するプロセス実行部と、プロセス実行部によって生成されるプロセス監視部とを有し、プロセス実行部は、プロセス毎にログファイルにログを記録し、プロセス監視部は、プロセス実行部を監視する。
【0012】
また、本発明の一実施形態に係るプロセスの監視システムでは、プロセス監視部がプロセス実行部を監視することは、プロセス監視部が所定の時間ごとにプロセス実行部が存在しているか否かを確認し、プロセス実行部が存在していない場合には所定の時間内に処理を終えたと判断し、プロセス実行部が存在している場合には所定の時間内に処理を終えていないと判断することを含んでもよい。
【0013】
また、本発明の一実施形態に係るプロセスの監視システムは、プロセス監視部が、ログファイルのログを所定の時間ごとに参照し、参照したログの内容から変化していない場合には、プロセスが処理中であると判断することを含んでもよい。
【0014】
また、本発明の一実施形態に係るプロセスの監視システムは、プロセス監視部が所定の時間内に処理を終えていないと判断した場合に、プロセス監視部は処理中のプロセスを停止してもよい。
【0015】
また、本発明の一実施形態に係るプロセスの監視システムは、プロセス監視部が所定の時間内に処理を終えたと判断した場合には、プロセス監視部が消滅してもよい。
【0016】
また、本発明の一実施形態に係るプロセスの監視システムは、ジョブ実行サーバが、外部からジョブに対応するジョブ実行コマンドを受信するコマンド受信部と、プロセスの処理結果を前記外部に対して送信する処理結果送信部とを有してもよい。
【0017】
また、本発明の一実施形態に係るプロセスの監視システムは、プロセス監視部が、所定の時間内に処理を終えていないと判断した場合に、プロセス監視部の実行結果をプロセスの処理結果として処理結果送信部を介して外部に送信してもよい。
【0018】
また、本発明の一実施形態に係るプロセスの監視システムは、プロセス実行部が、所定の時間内に処理を終えたとき、プロセスの処理結果を処理結果送信部を介して外部に送信してもよい。
【0019】
また、本発明の一実施形態に係るプロセスの監視システムは、プロセス実行部が、プロセスの起動に対応して生成されてもよい。
【0020】
また、本発明の一実施形態に係るプロセスの監視システムは、プロセス実行部が、ジョブの実行が終了すると消滅してもよい。
【0021】
また、本発明の一実施形態に係るプロセスの監視システムは、ジョブ管理サーバをさらに含み、ジョブ管理サーバは、ジョブ実行サーバにジョブ実行コマンドを送信し、ジョブ実行サーバからプロセスの処理結果を受信してもよい。
【0022】
また、本発明の一実施形態に係るプロセスの監視システムは、プロセス監視部が所定の時間内に処理を終えていないと判断した場合に、ジョブ管理サーバがジョブの進行状況に応じたリカバリ処理を行う実行コマンドをジョブ実行サーバに送信してもよい。
【0023】
また、本発明の一実施形態に係るプロセスの監視システムは、リカバリ処理がリトライ処理を行うことを含んでもよい。
【0024】
また、本発明の一実施形態に係るプロセスの監視システムは、ジョブ実行コマンドが、ジョブ実行サーバのサーバリブートを行うことをその内容としてもよい。
【0025】
また、本発明の一実施形態に係るプロセスの監視システムは、ジョブ実行コマンドが、ジョブ実行サーバのデータベース再編を行うことをその内容としてもよい。
【発明の効果】
【0026】
本発明により、プロセスのハングアップ状態等の異常発生をより早く適時に検知することができるとともに、異常発生時に迅速かつプロセス単位の柔軟なリカバリ処理を実行することが可能とし、従来技術では一括して異常発生として処理されていた状況を事前に回避することができる。
【発明を実施するための形態】
【0028】
以下、本発明の実施形態について図面等を参照しながら説明する。ただし、本発明は多くの異なる態様で実施することが可能であり、以下に例示する実施形態の記載内容に限定して解釈されるものではない。
【0029】
なお、以下に説明する発明の内容については、同一部分又は同様な機能を有する部分については同一の符号を異なる図面間で共通して用い、その場合において特段の事情がない限り繰り返しの説明は省略する。
【0030】
<プロセスの実行システムの全体構成について>
図1は、本発明の一実施形態に係るプロセスの実行システムの概要図である。
【0031】
図1を参照すると、本発明の一実施形態に係るプロセスの実行システムは、ジョブ実行サーバ10と、ジョブ管理サーバ20とを有する。ジョブ実行サーバとジョブ管理サーバとは、LAN又はWAN等の通信ネットワーク40を介して接続される。
【0032】
また、本発明の一実施形態に係るプロセスの実行システムは、クライアント30を含んでも良い。クライアントは、パーソナルコンピュータ、タブレットコンピュータ、携帯電話、スマートフォン、あるいはテレビ装置等の通信ネットワークに接続可能な電子機器によって構成される。クライアント30とジョブ管理サーバ20は通信ネットワーク40を介して接続されており、クライアント30はHTTP等に基づいてジョブ管理サーバ20と通信する機能を有する。
【0033】
ジョブ管理サーバ20は、クライアント30等の指示に基づき、所定のプロセスを実行するためのジョブ実行コマンドをジョブ実行サーバ10に送信する。ジョブ実行サーバ10は、受信した実行コマンドに基づき処理を行い、処理結果をジョブ管理サーバ20に送信する。ジョブ管理サーバ20は、処理結果に基づいたメッセージ等をクライアント30に送信する。
【0034】
<ジョブ実行サーバについて>
図2は、本発明の一実施形態に係るジョブ管理サーバ10の機能を説明するブロック図である。
【0035】
図2を参照すると、本発明の一実施形態に係るジョブ管理サーバ10は、コマンド受信部101、プロセス実行部102、プロセス監視部103及び処理結果送信部104で構成される。
【0036】
コマンド受信部101は、ジョブ実行サーバ10の外部から、ジョブ実行コマンドを受信する。典型的には、ジョブ管理サーバ20が送信するジョブ実行コマンドを受信する。コマンド受信部101は、受信したジョブ実行コマンドに対応したプロセス実行部102を生成する。
【0037】
プロセス実行部102は、ジョブ実行コマンドに対応したプロセス処理を実行する。通常、一つのジョブ実行コマンドには、複数のプロセス処理が対応しており、プロセス実行部102は対応するプロセス処理を順次実行し、それぞれのプロセス処理ごとに、ログファイル105にログを記録する。
【0038】
ログファイル105は、プロセス実行部102及びプロセス監視部103がアクセス可能な記録領域又はファイルに設定される。ログファイル105には、例えば処理しようとするプロセス名、発行しようとするシェルコマンド、引数、コマンド送信時刻等を記録する。また、ログファイル105には、発行したコマンドに対する戻り値等を記録してもよい。ログファイル105は、プロセス実行部102が生成したプロセス監視部103が参照可能なように、ファイル保存位置、ファイル名、アクセス権限、プロセスIDとの関連付け等がなされる。
【0039】
プロセス実行部102は、プロセス監視部103を生成する。プロセス監視部103の機能については、後述する。プロセス実行部102は、プロセス実行部102が生成されてから最初のプロセスを処理するまでの間に、プロセス監視部103を生成するが、プロセス監視部がプロセス実行部を適切に監視できるのであれば、生成時期はこれに限られない。
【0040】
プロセス実行部102は、生成したプロセス監視部103がプロセス実行部102のプロセスIDを認識できるようにする。例えば、プロセス監視部103を生成する際の引数として自らのプロセスIDを含ませたり、プロセス監視部103を生成した後にメッセージを送信して、自らのプロセスIDを知らせたりする。
【0041】
プロセス実行部102は、全てのプロセスが終了すると、処理結果を処理結果送信部104に送信する。この処理結果には、実行したプロセスが異常終了をリターンした場合等も含まれる。プロセス実行部102は、処理結果を送信し終わると、自らのプロセスを終了させ消滅する。
【0042】
プロセス監視部103は、プロセス実行部102によって生成された後、所定の時間が経過すると、当該プロセス監視部103を生成したプロセス実行部102が存在するか否かを確認する。具体的には、例えばプロセス実行部のプロセスIDを取得するコマンドを用いて、プロセス実行部102が存在しているか否かを確認する。プロセス実行部102が存在しない場合は、プロセス実行部102が処理結果を処理結果送信部104に送信し、自らプロセスを終了したことを意味する。この場合は、プロセス監視部103は自らのプロセスを終了させ消滅する。
【0043】
プロセス実行部102が存在する場合は、プロセス監視部103はログファイル105を参照して、現在実行中のプロセスを確認する。例えば、ログファイル105へのログの記録方法が、プロセス実行部102が各プロセスを実行する直前に当該プロセス実行コマンド(シェル)をログファイル105へ記録する方法がとられている場合には、プロセス監視部103は、ログファイルを参照し、最後に記録されているプロセス実行コマンドに対応するプロセスが現在処理中のプロセス(無応答のプロセス)であると判断する。
【0044】
プロセス監視部103は、プロセス実行部102を終了させ、処理結果を処理結果送信部104に送信して、自らのプロセスも終了させる。処理結果送信部104に送信する処理結果には、現在処理中のプロセスが認識可能なように、現在処理中のプロセスに関する情報を含ませてもよい。
【0045】
プロセス監視部は、無応答のプロセスを検知した場合に、リカバリ処理を行ってもよい。具体的な処理の例は、後述する。
【0046】
プロセス監視部が現在処理中のプロセスを判別する他の方法としては、プロセス監視部103が一定時間ごとにログファイル105を参照して、ログファイルに記録された最後のプロセスを確認し、前回確認した最後のプロセスから変化が無い場合に、当該プロセスが処理中であると判断することもできる。この場合、最初にログファイルを確認するときは、当該ログファイルに記録された最後のプロセスを確認し、プロセス監視部103の使用可能な記録領域又はファイルに記載し、二回目以降はログファイルに記録された最後のプロセスと、前回確認して使用可能な記録領域又はファイルに記載されたプロセスとを比較し、同じプロセスが処理中であるか否かを判断してもよい。
【0047】
プロセス監視部103がログファイル105に記録された最後のプロセスを確認する間隔は、実行中のプロセスに応じて適宜変更してもよい。また、プロセスのグループ分けを行い、グループ単位で参照時間を設定してもよい。
【0048】
一つの実施例としては、ジョブ管理サーバ20から送信されるジョブ実行コマンドに、各プロセスの参照時間等の情報を含ませておき、プロセス監視部103が参照時間等の情報に基づき参照時間を設定することができる。
【0049】
また、他の実施例としては、あらかじめ各プロセスの参照時間情報のテーブルをジョブ実行サーバ10が保持しておき、プロセス監視部103は実行中のプロセスに対応する参照時間を、参照時間情報のテーブルに基づいて設定してもよい。
【0050】
このように、上記二つの実施例によると、プロセス又はプロセスのグループ毎の、標準的な処理時間やエラー発生の頻度等の性質に対応させて、プロセス監視部103がエラーログ105を参照する間隔を設定することができる。
【0051】
処理結果送信部104は、プロセス実行部102又はプロセス監視部103から処理結果を受信し、ジョブ実行コマンドを発行したジョブ管理サーバ20等に対して、処理結果を送信する。
【0052】
<正常時の処理について>
図3は、本発明の一実施形態に係るジョブ実行サーバの正常処理時における処理の流れを示したものである。
【0053】
図3を参照すると、まず、コマンド受信部101が、ジョブ実行サーバ10の外部から、ジョブ実行コマンドを受信する(S1)。
【0054】
ジョブ実行コマンドを受信したコマンド受信部101は、当該ジョブ実行コマンドに対応したプロセス実行部102を生成する(S2)。
【0055】
プロセス実行部102は、プロセス監視部103を生成する(S3)。その後、プロセス実行部102は、必要なプロセスをログファイル105にログを記録しながら実行する。プロセスが終了したら、処理結果を処理結果送信部104に送信し(S4)、自らのプロセスを終了させる。
【0056】
処理結果送信部104は、プロセス実行部102から処理結果を受信すると、ジョブ実行コマンドを送信した外部に対して、処理結果を送信する(S5)。
【0057】
プロセス監視部103は、一定時間経過後、プロセス実行部102が存在しているか否かを確認する(S6)。
図3では、プロセス実行部102が消滅しているので、自らのプロセスを終了させる。
【0058】
以上まとめると、正常時の処理においては、ジョブ実行コマンドに対応してプロセス実行部102及びプロセス監視部103が生成され、プロセス実行部102はプロセス処理を実行した後に自ら消滅し、プロセス監視部102はプロセス実行部102の監視を終えると、自らのプロセスを終了させ消滅する。
【0059】
<異常時の処理について>
次に、異常処理時の処理について
図4を参照して説明する。
図4のS1、S2及びS3は、上述の正常処理時の処理と同様である。
【0060】
プロセス監視部103は、プロセス実行部102が存在するか否かを確認する(S7)。
図4では、プロセス実行部102が存在しているので、プロセス監視部103は、ログファイル105(図示せず)を参照して、処理中のプロセスを確認する(S8)。そして、プロセス監視部103は、プロセス実行部102を終了させ(S9)、処理結果送信部104に処理結果を送信し(S10)、自らのプロセスを終了させる。
【0061】
処理結果送信部104は、プロセス監視部103から受信した処理結果を、ジョブ実行コマンドを送信した外部に対して送信する(S11)。
【0062】
以上まとめると、異常時の処理においては、ジョブ実行コマンドに対応してプロセス実行部102及びプロセス監視部103が生成され、プロセス監視部103は無応答のプロセスを検知し、プロセス実行部を終了させ、自らのプロセスを終了させ消滅する。
【0063】
<サーバリブート処理の異常処理時における処理フロー>
(第1実施形態)
図5は、本発明の一実施形態に係る、サーバリブート処理の異常処理時における処理概要を示したものである。
【0064】
サーバリブート処理では、まず、サーバのミドルウェアの通常停止処理を行う(S21)。ここではミドルウェアA、B、Cがあるものとし、ミドルウェアの通常停止処理とは、ミドルウェアA、B、Cに対して、順次停止処理を実行することを意味する。全てのミドルウェアの停止処理が正常終了すると、OSを停止しサーバを再起動する(S22)。
【0065】
ミドルウェアの通常停止処理を実行した場合、ミドルウェアを停止するコマンドに対して比較的短時間で異常終了がリターンされる場合がある。この場合は、ミドルウェアを強制終了させ(S23)、OSを停止しサーバを再起動する(S24)。
【0066】
このように、ミドルウェアの停止処理が正常終了するか、又は異常終了がリターンされた場合には、直ちに通常処理(S22)又は異常終了時の処理(S23、S24)が行われる。
【0067】
これに対し、ミドルウェアの停止処理を実行しても、無応答状態になる場合がある。ここでは、ミドルウェアBの停止処理中に、無応答状態になったものとする。
【0068】
本発明の実施形態によると、上述したように、無応答状態になったミドルウェアBを検知することが可能である。すなわち、ジョブ実行サーバのプロセス監視部が無応答状態のミドルウェアBを検知し、リカバリ処理を行うことが可能である。
【0069】
リカバリ処理は、プロセス監視部で行わず、外部からの指示に基づいて実施することもできる。例えば、プロセス監視部は処理結果送信部を介して、処理結果をジョブ管理サーバに送信する。処理結果には、ミドルウェアBの停止処理時に無応答となったこと等の情報が含まれる。ジョブ管理サーバは、ジョブ実行サーバから受信した処理結果に基づき、リカバリ処理を実行するためのジョブ実行コマンドをジョブ実行サーバに送信する。
【0070】
プロセス監視部は、リカバリ処理として、ミドルウェアBの強制停止処理を実行し(S25)、ミドルウェアCの通常停止処理を実行し(S26)、OSを停止しサーバを再起動する(S27)。リカバリ処理をジョブ実行サーバの外部からの指示に基づいて実行する場合は、ジョブ実行サーバは受信したジョブ実行コマンドに基づき、上記リカバリ処理が行われる。
【0071】
本発明の実施形態によると、無応答となった処理中のプロセス(本例ではミドルウェアBの停止処理)を検知し判別することができる。これによって、
図5の点線で囲んだ部分の処理のように、正常に処理が終了したミドルウェアAの停止処理に関しては何も行わず、無応答となったミドルウェアBの停止処理に対しては強制終了を行い、処理が行われていないミドルウェアCに対しては通常の停止処理を行うという、処理結果に応じたきめ細かいリカバリ処理を実行することが可能となる。
【0072】
また、上記リカバリ処理では、無応答となったミドルウェアBの停止処理に対しては強制終了を行ったが、ミドルウェアBに対して通常の停止処理を行うこと、すなわち無応答となった処理中のプロセスを再び実行すること(リトライ)を、リカバリ処理の内容としてもよい。
【0073】
さらに、リカバリ処理の内容としては、本来予定していたジョブの処理(上述のミドルウェアBに対する通常の停止処理)や、これに準じる処理(上述のミドルウェアBに対する強制終了)を含まなくてもよく、リカバリ処理として、本来予定していたジョブに対応する別のジョブを実行してもよい。
【0074】
このように、本発明の実施形態によると、ジョブを構成するプロセス毎に対応する各リカバリ処理を事前に準備することができる。さらに、各リカバリ処理の内容も、状況に応じた複数の処理を準備することができる。処理結果に応じた複数のリカバリ処理を事前に準備することによって、自動リカバリ処理を実現することも可能となる。
【0075】
さらに、本発明の実施形態によると、通常数十分ないし数時間に設定されるタイムアウトよりも早く異常(ミドルウェアBの停止処理の無応答)を検知することが可能となるので、上記リカバリ処理を短時間で実行することができる。
【0076】
(第2実施形態)
第2実施形態は、第1実施形態と同様に、サーバリブート処理では、サーバのミドルウェアA、B、Cに対して順次停止処理を実行し、OSを停止してサーバを再起動するものとする。第1実施形態では、リカバリ処理をするためのジョブ実行コマンドをジョブ実行サーバが受信してリカバリ処理が行われたが、第2実施形態では、ジョブ実行サーバがリターンコードを受信してリカバリ処理を行う点に特徴がある。以下、
図6を参照しながら詳述する。
【0077】
ミドルウェアAの停止処理時に無応答となった場合、リカバリ処理としてS41、S42、S43及びS44の処理(
図6枠線内の一番上のルートA)が実行される。ここで、S41はミドルウェアAの強制停止処理、S42はミドルウェアBの通常停止処理、S43はミドルウェアCの通常停止処理、S44はOS停止とサーバ再起動の処理である。
【0078】
ミドルウェアBの停止処理時に無応答となった場合、リカバリ処理としてS45、S43及びS44の処理(
図6枠線内の中央のルートB)が実行される。ここで、S45はミドルウェアBの強制停止処理である。なお、ルートBにおける処理は、
図5の枠線内に示した処理に対応しており、S25とS45、S26とS43、S27とS44が、それぞれ対応する。
【0079】
ミドルウェアCの停止処理時に無応答となった場合、リカバリ処理としてS46及びS44の処理(
図6枠線内の一番下のルートC)が実行される。ここで、S46はミドルウェアCの強制停止処理である。
【0080】
ルートA、B、Cの各処理内容をみると、OS停止とサーバ再起動の処理S44はルートA、B及びCに含まれ、ミドルウェアCの通常終了S43はルートA及びBに含まれる。このように、サーバリカバリ処理における各ルートの処理は、個々の処理内容が重複している場合がある。
【0081】
実施例2では、ジョブ管理サーバは、リカバリ処理を実行するためのリターンコードを、ジョブ実行サーバに送信する。ジョブ実行サーバは、受信したリターンコードに応じたリカバリ処理を実行する。例えば、リターンコード1はルートAの処理に対応し、S41、S42、S43、S44の各処理を順次実行する。また、リターンコード2はルートBの処理に対応し、S45、S43、S44の各処理を順次実行する。この場合、ジョブ実行サーバは、リターンコードとそれに対応する処理内容及が記載されたテーブルを持ってもよい。
【0082】
以上のように、実施例2では、ある処理に不具合が発見され修正を要する場合には、当該処理のみを修正すればよく、当該処理を含む各ルートの処理を個別に修正する必要が無いので、メンテナンス性に優れる。例えば、OS停止とサーバ再起動の処理S44に不具合が発見された場合には、当該S44のみを修正すればよい。
【0083】
また、実施例2においては、個々の処理の組み合わせを変更したり、新たな処理を追加したりする等の設計変更に、柔軟に対応することができる。
【0084】
<データベース再編処理の異常処理時における処理フロー>
(実施例3)
図7は、本発明の一実施形態に係る、データベース再編処理の異常処理時における処理概要を示したものである。なお、データベース再編処理とは、データベースへのデータの追加、削除、更新が繰り返されることによって、データベースの格納効率が低下したときに行われるものであり、データベースの配置の乱れを修正し適切に配置する処理をいう。
【0085】
データベース再編処理では、まず、再編処理の対象となる各テーブルのエクスポート処理を行う(S31)。エクスポート処理は、後に実行されるデータベース再編処理で何らかのエラーが発生した場合に備えて、バックアップをとることに相当する。
【0086】
エクスポート処理が完了すると、データベース再編処理を行う(S32)。データベース再編処理は例えばテーブル単位で行われ、複数のテーブルが再編処理の対象となり、処理はテーブル毎に順次行われることが一般的である。ここでは簡単のため、テーブルD、E、Fの再編処理を行うこととする。
【0087】
テーブルD、E、Fの再編処理が正常終了すると、データ件数の確認処理が行われる(S33)。データベース再編処理を開始した後に、データベースを再編する処理を実行するコマンドに対して、比較的短時間で異常終了がリターンされる場合がある。この場合は、エクスポートしたテーブルに対しテーブルインポート処理を行い(S34)、インポートしたデータの件数を確認する(S35)。
【0088】
以上のように、データベース再編処理が正常終了するか、又は異常終了がリターンされた場合には、直ちに通常処理(S33)又は異常終了時の処理(S34、S35)が行われる。
【0089】
これに対し、データベースの停止処理を実行しても、無応答になる場合がある。ここでは、テーブルEの再編処理中に、無応答状態になったものとする。
【0090】
上述のように、本発明の実施形態によると、プロセス監視部によって無応答状態になったテーブルEを検知し、リカバリ処理を行うことが可能である。
【0091】
なお、上述のサーバリブート処理の異常処理時における処理フローで説明したのと同様の方法によって、リカバリ処理をジョブ実行サーバの外部からの指示に基づいて実行することも可能である。この場合、ジョブ実行サーバは、処理結果(テーブルEの再編処理時に無応答)をジョブ管理サーバに送信する。
【0092】
プロセス監視部は、リカバリ処理として、テーブルEの再編処理プロセスを停止し(S36)、テーブルE及びFのインポート処理(S37)を行った後に、データ件数を確認する(S38)。リカバリ処理をジョブ実行サーバの外部からの指示に基づいて実行する場合は、ジョブ実行サーバは受信したジョブ実行コマンドに基づき、上記リカバリ処理が行われる。
【0093】
このように、本発明の実施形態によると、無応答となった処理中のプロセス(本例ではテーブルEの再編処理)を検知し判別することができるので、
図7の点線で囲んだ部分の処理のように、正常に処理が終了したテーブルDの停止処理に関しては何も行わず、無応答になったテーブルE及び停止処理を行っていないテーブルFのみインポート処理を行うという、処理結果に応じたきめ細かいリカバリ処理を短時間で実行することが可能となる。
【0094】
また、本発明の実施形態によると、通常数十分ないし数時間に設定されるタイムアウトよりも早く異常(テーブルEの再編処理の無応答)を検知することが可能となるので、上記リカバリ処理を短時間で実行することができる。
【0095】
(実施例4)
実施例4においても、実施例2と同様に、ジョブ実行サーバはジョブ管理サーバから受信したリターンコード基づいて、リカバリ処理を行う点に特徴がある。