●昨日は2時間で退社
昨日は、私的用事があって、9時に出勤したものの11時に退勤
なので、その事をメールでお客様に伝えました
ただ、今朝出勤すると、昨日の17時頃にトラブルメールが
なんでも、メニューからプログラムを呼び出そうとするとエラーが出て
プログラムが実行できないと・・・
●原因は・・・・私
7月に、不可思議な現象が発生したため、小刻みに不整合チェックを行い
その間、誰がどの端末でどのプログラムを実行したかをロギングすることにしました
事は簡単!
メニューからプログラムを呼び出した時に現在日時を覚えておきます
戻ってきたら、再び現在日時を取得し、メニューからのプログラム呼び出しログに記録
ただ、私の落ち度は、このログファイルのサイズを少なく見積もり過ぎ
サイズ以上にレコードを追加した場合に、OSが紹介メッセージと言う
誰かが答えなければならないメッセージが出され、処理が停止されてしまっています
つまり、メニューから何も呼び出せない状況
●月曜日に発生
丁度月曜日、私が帰ってから、その不具合は発生しました
今朝、早速お客様からのトラブル報告メールを見て
画面のスクショから、これはあれだなと直ぐ分かり
とりあえず一次対策
一次的にサイズ容量を増やし、時間稼ぎ
そして、ものの10分ほどで対応は完了しました
でも、これは一次対応
放置していては、再発します
●恒久的対策
もう、来月以降はトラブルが発生してもなかなか・・・
と、言う事で恒久対策としては
@2ケ月分のログを残して、それより古いレコードは削除する
A削除レコードを再利用するよう設定
こうすることで、2カ月分の容量以上には原理的には増えません
やれやれ、お客様にとんでもない迷惑をかけてしまいました・・・
反省! 反省!
●REUSEDLT(*YES)パラメータ
ログファイルには更新時の年月日・時分秒・μ秒まで持たせています。
しかも、それをキーにしているので、REUSEDLT(*YES)に設定できるわけです
削除レコードの再利用を有効にするには、ユニークキーがあれば全く問題ありません
データベースは、レコードを削除しても容量は減りません
削除レコードが占めていた領域は、削除されたという標識が付くだけだからです
この、削除レコードが占める無駄な領域を無くすには
@物理的に削除レコードを除去する (RGZPFM コマンド)
A削除レコードを再利用する (物理ファイルの属性に REUSEDLT パラメータがあります。これを*YESに節停止ます)
さて、話を元に戻して・・・ユニークキーが無くても、そのファイルに REUSEDLT(*YES)は設定できますが
プログラミングで注意しないと、見かけ上誤動作したようになりますよ
人気ブログランキング
![](https://www15.a8.net/0.gif?a8mat=3BFLXB+BIZ5F6+0K+10YDIP)