社内SEの徒然なる日記

障害対応!...虹が綺麗だなぁ(-。-)y-゜゜゜

■ 夜間バッチが異常終了

一昨日、夜間バッチが異常終了しやがって、監視システムから呼出のメールが到着!
実は、先週も呼出があったので、これで今月2回目です。

運用監視から2年は経つので、そこそこ安定しているシステムなので、短期間に連続とは珍しいです。

...ここ最近、やたらとツキに見放されているんだよなぁ(--;)

放置するわけにもいかないので、眠い目を擦りながら颯爽と自転車で出動します。

■ 障害内容

障害が発生していたのは、DBからデータを抽出してCSVに変換して出力するっていう単純な処理です。

言語はCOBOL。Oracleのテーブルからデータ抽出して、FETCHした所でエラーが発生しているらしく、ログにはこのようなエラーが吐かれています。

ORA-01457: 列の変換により10進数データ型がオーバ


まぁ、これだけで原因は分ったようなものですが、念のためにOracleのエラーメッセージも確認します。

・ORA-01457
  状況 列の変換により10 進数データ型がオーバーフローしました。

・原因
  指定した式の変換書式が、指定した型に対して大きすぎます。COBOL プログラムのPICTURE 句でCOMP-3 を使用する場合にも、このエラーが発生します。この句は Pro*COBOL プリコンパイラおよびCOBOL で受け入れられますが、このエラーとなります。

・処置
  より大きいデータ型を定義するか、データを修正してください。

■ 原因

原因は、抽出元のテーブルの数値を拡張した時に、COBOL側の定義を修正し忘れていた事でした。

という事で、COBOL側を修正して対処完了です。

PIC S9(012) COMP-3.  => PIC S9(015) COMP-3.


■ ちょっと気になる

障害自体はそれで改善したのですが、ちょっとCOBOLの挙動が気になります。

というのも、テーブルの数値を拡張(12 → 15)したのは、3年以上前の話なのです。
んで、過去の内容を見ると、13桁までの数値であれば正常に動作していたようでして、これが不可解です。

COBOL側のホスト変数は、PIC S9(012) COMP-3、と12桁なのに、DB側の13桁の数値を受け入れて、なぜエラーが発生しなかったのか?

謎です...。色々と実験したいところですが、眠いし、忙しいので放置します。

※ 今回は14桁の数値が入力されていました。これは流石にダメだった模様。

■ 虹

どうやら寝ている間に雨が降っていたらしく、出社中の道路に水たまりが出来ていました。
そういう天候だったためか、外に綺麗な虹が掛かっていました。
障害対応と虹

残っていた夜間処理も、何とかサービス開始時間までに終了できたので一安心です。

ふぅ、コーヒー美味しいなぁ(-。-)y-゜゜゜
スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する