先日あったトラブル対応の振り返りでござんす。
<内容>
先週稼働のバッチJOBが
単純にスケジュールされてなくて動かなかったとのご連絡。
今日の夜中に稼働させたいんだけど、
処理基準日を参照している処理があるから、どうしましょうか
とのことでした。
(処理基準日はDBで管理してる)
<考えられる対応策として>
①処理基準日を一瞬だけ本来稼働されていた状態に戻す
②各PGM、JOB(実体はshell)の、処理基準日を取得して格納している変数に日付をハードコーディング
①のが楽そうな気がしました。
だって、処理の直前にUPDATE文1発でいいんだもん。
※夜中対応だったから、次の日明け休とれそうだしwww
だから、①を提案したところ・・・
「処理基準日を変えて本当に問題ないか全PGMを調査してほしい」
と言われてしまい、
泣く泣く②で何とかならないか調査を始めましたとさ。
<調査>
- 観点1:動かなかった処理はなんだ?
- JOBの管理資料から、対象のNETに含まれるJOBの洗い出し。
- そのJOB内で実行しているPGMの洗い出し。
- 観点2:処理基準日を参照している資材はどれだ?
- 全PGMから、処理基準日を参照してるPGMを洗い出す
- JOB(実体はshell)にて直に処理基準日を参照している
- 観点3:動かなかった処理で処理基準日を参照している資材はどれだ?
- 観点1の結果で、観点2にも登場するものをExcelで突き合わせ。
<な、なんと・・・>
shell3本修正だけでなんとかなりました。
素晴らしい設計!
<修正&テスト>
修正はちょろだったのですが、
テストがちょっとかかりました。。
まさか、年齢算出の処理で月日を使ってないなんて・・・
<そして、大団円>
結局、検証は翌営でってことになり
明け休ももらえなかったけど、、、
処理も問題なく動き、大丈夫でした!
やったったぜ!
<反省点>
調査観点1-1で、JOB資料から見ちゃったのはちょっと時間ロスでした。。
結局「JOB資料=実行資材だよね?」っていう確認が必要になってしまいました。
<次へ生かせそうなこと>
上記の作業を、最初の方に洗い出して
それを確認してもらったっていうのが一人でできたことは、
ちょっぴり自信につながりました。
落ち着いて対処する&わかんないことは聞いて、周りの人を巻き込んじゃう
これが大事だなぁと思いました。
では、そんな感じで〜
お疲れ様でした。