業務が止まってしまう可能性も...!?「システム・ジョブ・テーブルが容量に近づいている」
リバイバル:https://www.e-bellnet.com/category/technology/1806/1806-109.html
Question
毎朝の運用で DSPMSG QSYSOPR にエラーが出ていないかを確認しています。
今朝確認したところ以下のメッセージが出ていました。
CPI1468:メッセージ. . : システム・ジョブ・テーブルが容量に近づいている
システム・ジョブ・テーブルというものに馴染みがないのですが、大量のジョブが残ってしまっているのではないかと考えWRKACTJOBとWRKSYSSTSを確認しました。
WRKACTJOBでは、大量のJOBはありませんでしたが、WRKSYSSTSを確認したところシステム中のジョブ数が10万を超えており、また反転していました。
これは、緊急度が高いということでしょうか
CPI1468を解消するためには、どうすれば良いでしょうか。
Answer
IBM i (AS/400)ではジョブを管理するために、システム・ジョブ・テーブルというもので過去のジョブを含めて管理しています。
CPI1468 を放置してジョブ・テーブルの容量が満杯になると、新しいジョブが投入できないなど、最悪の場合にはシステム障害となる恐れがあります。
ジョブ・テーブルの状況は DSPJOBTBL コマンドにて確認できます。
このメッセージが出る多くの場合は、過去のジョブに対してジョブログ(スプール)が紐付いている場合がほとんどです。
本来、ジョブが終了した段階でスプールが出力されていなければ、ジョブ・テーブルを含めてジョブ情報をリサイクルします。
しかし、スプールとジョブが紐づいていると、その処理が行われません。
そのため、先ずできる対処としては、スプールファイルの整理になります。
あくまで一例ですが、ジョブ QEZJOBLOG 内の古いジョブログがずっと残っている場合などは削除して構わないと考えます。
また、クリーンアップが動いていない場合はジョブログが溜まり続けています。
クリーンナップ処理が実行されているかをご確認ください。
-
GO CLEANUP
→「1.終結処置オプションの変更」
→「自動クリーンアップの実行」 が 「Y」 になっているかを確認
-
WRKACTJOB SBS(QCTL)
→サブシステム QCTL 配下でジョブ QSYSSCD が動いているかを確認
1つのジョブで複数のスプールが作成されている場合、1つのスプールを消しても番号自体は解放されませんのでご注意ください。
OUTQ内のスプールファイルを全て削除してもよい場合は、OUTQ単位に CLROUTQ コマンドで消すこともできます。
- CLROUTQ OUTQ(LIB名/OUTQ名)
もし対応(スプールの削除等)に時間が掛かる場合には、システム値 QMAXJOB を変更して一時的にジョブ・テーブルの容量を増やすこともご検討ください。
但し、いきなり上限の970,000まで増やすのは危険です。
再度満杯になった時に回復できる余地を残しておくためにも、50,000など、少しずつ増やしていくようにしましょう。
-
WRKSYSVAL QMAXJOB
→OPT2番(変更)で最大ジョブ数を少しずつ増やします。
※この値は即時に反映されますのでIPLの必要はありません。
by . 槻樹