2012年1月6日金曜日

あけましてOracleトラブル

本ブログを御覧の皆様、あけましておめでとうございます。

本年も、きっとトラブルの多き年となるかと思いますが、
何とか乗り越えていきたいと思います。

私の勤めている社長が、

「トラブルをトラブルと捉えるか、糧と捉えるかで大きく違う。
問題を克服することで、大きく成長しよう。」

と、年初の挨拶があったので、今年も、大いにトラブルを解決していこうと思います。
(本当は、トラブルの芽を摘んでいきたい・・・けど、、、)


さて、今年1発目のトラブルは、素敵なOracleのトラブルです。

Oracleの古いバージョンを使い続けなければならないジレンマを抱えている場合、
すでに解決済みにも関わらず、運用の良し悪しで大変な目に合うことが、
多々あることは、言わずもがなといったところでしょう。

ある運用しているサーバー(W2k3 + Ora9iR2)で、あるビューが
突然読めなくなったという問い合わせがありました。
通常の運用には、影響が出ていないのですが、最近拡張したビューがよろしくないとのこと。


サーバーのログを漁ったら、以下のようなエラーが発生してました。

ORA-01114: ファイル201(ブロック番号XXXXXX)への書込みI/Oエラーが発生しました。
ORA-27069: skgfdisp: ファイルの範囲外でI/O処理を試みました。
OSD-04026: 無効なパラメータが渡されました。 (OS 523989)
ORA-01114: ファイル201(ブロック番号XXXXXX)への書込みI/Oエラーが発生しました。
ORA-27069: skgfdisp: ファイルの範囲外でI/O処理を試みました。
OSD-04026: 無効なパラメータが渡されました。 (OS 523989)

ブロック番号云々というエラーから、表領域に何か異常があるのではないかと推測。
ただ、メインの表領域がおかしくなっている場合は、インスタンスがAbortされるはずなので、
テンポラリ表領域が怪しいと考えました。

ひとまず、テンポラリ表領域を追加して様子を見たところ、状況は改善せず。
再起動の許可が降りた段階で、Oracleを再起動しました。

稼働が確認できたので、ゆっくり状況を確認していくと、
テンポラリ表領域が4GBを超えて、作成されていました。
そんなに激しいソートでもかましているのかと邪推しつつ、テンポラリ表領域を作り直し、
自動拡張をOFFにして様子を見ることにしました。


自動拡張が悪いとは、あまり言いたくないのですが、初期構築の前提条件を
根本から見なおす必要があるような気がした、新年の幕開けでした。

ちなみに、4GBを超える表領域を作成すると、表領域が壊れることがあるのは、
Oracle 9i(9.2.0.1.0?)のバグらしいです。
バグとはいえ、自動拡張を安易に信じるのは、やめようと思いました。

0 件のコメント:

コメントを投稿