【小説 データベース道は一日にしてならずだよ!】 痛い目見ろ!編 その2
真夜中に電車なんかあるわけない。
雄一はタクシーを使って、客先まで行くことにした。
「お客さん、急ぐなら裏道使いましょうか?」
「......いや、いいです......」
雄一は、現場に着きたくなかった。
自分勝手にもこのタクシーが事故に遭って、現場に行けなくなればいいとすら思っていた。
その時、スマホに振動した。
客先のサーバ室にいる福島からだ。
上司である福島から、データベース及び業務システムは、以下のような状態であるということを聞かされた。
・データベースが業務システムからの新規接続を受け付けない
ただし、何度かトライすれば接続できる場合がある
・接続できている場合でも業務処理を行った場合、データベースアクセスで失敗する
これも、何度かトライすればできる場合がある
・そのためコールセンターの処理が進まず、客からの発注を捌けない
「とにかく、データベースが異常なのは間違いない。何とかしてくれ」
「はい......」
雄一は逃げたしたいと思った。
データベース管理者になって一カ月の自分には経験がない、ましてや自分の構築したデータベースじゃない。
そして、障害対応何てしたことない。
だから、現場に到着しところで、自分は何から手を付けていいかわからない。
雄一はそんなことを思うと同時に、いや、それは違うと、後悔し始めていた。
(なんでもっと勉強しとかなかったんだろう)
経験が無いとしても、少しでも勉強して知識を頭に入れて置けば、こんな時はデータベースのここを確認すればいい、対処方法はこうだ、と考え付くことが出来たかもしれない。
そう思うと、雄一は自分の不真面目さにハラワタが煮えくり返った。
雄一は、気が付けばスマホのゲームをして現実逃避していた。
(そういえば、このドラゴンファンタジーのバックエンドで動いてる課金システムのデータベースはORACLEだって何かに書いてあったな......。それを管理してる人が助けに来てくれたらな)
セントライト化粧品のサーバ室には、プロジェクトマネージャーの福島、業務チームで雄一と同期の中山が既にいた。
サーバ室の隣はコールセンターになっていて、隣から数十人規模のざわめきと、それに混じって時折怒号すら聞こえる。
空調が効きすぎている十畳ほどのサーバ室には、所狭しとコールセンターシステムのデータベースサーバ(RAC二台)、アプリケーションサーバ、スイッチやルータなどが置かれている。
「状況は変わりなしですか?」
雄一は恐る恐る訊いてみた。
「ダメだね。やっぱりデータベースが原因みたい。新しい接続が出来たり出来なかったり」
中山がため息をつきながら言った。
客に相当急かされているのだろう、顔が青ざめていて額には汗がうっすらにじんでいる。
その時サーバ室の扉が開き、これまた青ざめた顔の五十代と思しき小太りの男が入って来た。
「あ、小倉さんこの度は申し訳ありません」
福島と、中山が頭を下げる。
それを見て、ワンテンポ遅れた感じで雄一も頭を下げる。
小倉は、セントライト化粧品の情報システム部の部長である。
「困るんだよ! ホント。早く何とかしてくれないと業務サービスが止まって売り上げに影響が出るんだから!」
小倉は隣の部屋のオペレータにも聞こえるくらいの大声でまくし立てた。
「はい、分かっております。有馬よ、来てすぐで申し訳ないがとにかく調査してくれ!」
福島に指示され「......分かりました」と雄一は答えた。
初めての客先で、客とメンバーに周りを囲まれながら初の障害対応である。
データベースサーバのコンソールの前に立ってはみたものの、雄一は、何をやったらいいか分からない。
「ORACLEマニュアルありませんか?」
震えた声で誰を名指しするでもなく問い掛ける。
「マニュアル!? おまえ、何言ってんだよ。こんなとこにあるわけねえだろ。何かあればアラートlog見たらいいんじゃねえのか?」
データベース担当でもない同期の中山にアドバイスされる。
雄一は中山の言い方に腹が立ったが、今は言い返している暇はないとグッとこらえる。
Teratermでデータベースサーバにログインし、cdコマンドで移動を繰り返しそれらしい名前のファイルを探すが見つからない。
雄一の頭にアラートlogがどこにあるかという情報が無いからだ。
「oracleベースディレクトリの下じゃないか?」
またも、中山がスマホで調べてアドバイスする。
雄一がアラートlogをviewコマンドで開いて見ようとすると、中山が急かすように言った。
「ファイルがでかすぎて開くのに時間が掛かるぞ。tailで下千行だけ見ろよ。それで分かるだろ」
「分かってるよ! 横から色々言わないでくれ」
「分かってねえだろ! 様子見てりゃわかるよ」
いつものように言い合が始まる。
「ゴホン!」
福島が大きく咳払いすることで二人を黙らせる。
ログを表示して見ると、そこには大量の「ORA-4031」が......。
これは一体どういう意味だ......雄一は自分のスマホで「ORA-4031」の意味を検索した。
・共有プールが足りない場合に発生するエラー
雄一は訳が分からなかった。
(だから何だ? どうすれば、障害が解消するんだ?)
(そもそも共有プールって何だ!?)
「ちょっと何やってんですが? 迷ってないでササッとやってくださいよ」
小倉が苛立った様子で、福島と中山を怒鳴りつける。
実際に何とかしなければならないのは雄一なのだが、小倉は敢えて福島と中山を急かすことで、雄一に無言のプレッシャーを与えているのだ。
「そうだ、こんな時こそサポートに問い合わせてみるのが早い!」
雄一は自分に言い聞かせるようにつぶやくと、スマホに登録しているサポートセンターの番号に問い合わせる。
「はい、サポートです」
「すいません、ORA-4031が出て、データベースがおかしいです。解消するにはどうしたらいいでしょうか?」
「まずは、ご契約番号をお願いいたします」
「え?」
福島が「これ」と言い、手帳を広げそこに書かれた英数字を指し示す。
「XXXX1234です」
{XXXX1234ですね。確認いたします」
一分ほど待たされる。
「契約番号を確認できました。お使いのデータベース製品のバージョンをお願いいたします」
「えっと......」
手続き上仕方がいなのだが、一刻を争う状況でのこのやり取りは、何とも悠長で場違いな感じを周囲に与えたようだ。
「お客様の状況ですと、データベースの再起動か共有プールのフラッシュですね」
サポートの説明は以下の通りである。
共有プールはSQLの解析結果を格納する場所(メモリ)である。
新種のSQLが発行される度に、解析結果を確保する必要があるため共有プールを必要とする。
確保されている共有プールのサイズでは足りなくなると、ORA-4031というエラーが発生し処理が失敗する。
また、そういう状態でデータベースへの接続を試してもメモリ不足で接続できない場合がある。
対処法としては、共有プールのフラッシュを手動で行うか、データベースを再起動してメモリをクリアする方法などがある。
ちなみに、共有プールのフラッシュは断片化した空いている部分を寄せ集めて、まとまった空き領域を作成するコマンドである。
雄一がサポートからの回答をその場にいる全員に伝えると、福島がこう言った。
「再起動はだめだ。今接続できてるユーザの処理を中断するわけにはいかない。共有プールのフラッシュはどうだ?」
「でも、フラッシュしたら解析結果が消えますよね。そうすると再解析が走ってパフォーマンスが一時的に落ちませんか?」と中山が即、返した。
「それは考えられるな。有馬はデータベース管理者としてどう思う?」
「え......? どうって......」
雄一が回答に窮してどぎまぎしていると、小倉が達観した様子で言った。
「パフォーマンスが落ちると言っても最初の一回だけじゃないの? 解析結果がそれでキャッシュされれば次からは速いんでしょ? 気にするほどではないよ。今の状況で」
客にとっては今停まってる業務サービスを再開させることが優先である。
「よし、フラッシュで行くぞ! 有馬、コマンドを用意しろ! 何かあったら、俺が責任取るから安心してやれ!」
スマホでORACLEのマニュアルを見つけ出し、フラッシュのコマンドを見つける。
「ALTER SYSTEM FLUSH SHARED_POOL;」と入力し、リターンキーを押す。
雄一は成功を心の中で祈った。
三秒後「システムが変更されました」と表示された。
「うまくいきました!」雄一が答えると、
「小倉さん、コールセンターの方で動作確認をお願いします!」と福島が言う。
小倉がサーバ室の隣にあるコールセンターに行き、オペレータに業務画面を使った動作確認を依頼する。
三分後、安堵したような表情で小倉が戻って来た。
「大丈夫! 接続できるし処理も出来てるみたいだ」
雄一は胸をなでおろした。福島、中山も一安心といった表情をしている。
安堵したことで頭がリラックス出来たのか、雄一はそこで一つアイディアを思い付いた。
「フラッシュを実行するシェルを作って、cronに仕掛けて定期的に実行するようにしましょう! そうすれば今回の障害対策になりますよ」と、福島に提案する。
「なるほど、それはいいな。有馬、データベース管理者として一つ成長したな。 すぐにそのシェルを作れ!」
福島が頷いた。
「はい!」
雄一が自分のアイディアに酔いしれながらシェルを作っている横で、中山は緊張が解けたのかボーっとしている。
「おい中山、お前は早く報告書を作れ!」
福島に言われ、中山が我に返る。
「いやー、一時はどうなることかと思ったけど、君の頑張りで何とかなったよ!」小倉に礼を言われた雄一は調子に乗ってこう言った。
「これからも任せてください!」
雄一は初めての障害をそれほど大きな問題にせず解決出来たことで、自分にはデータベース管理の才能があるのではと思い始めていた。
その時、隣室のコールセンターからオペレータが駆け込んできた。
「ダメです。またつながらなくなりました!」
雄一は自分の耳を疑った。
フラッシュをしてから、わずか五分での出来事であった。
つづく
コメント
和
自分はソフトウェアの方ですが、気持ちがよくわかります。。。
納品を前にしてのバグ取り。胃が縮む感じです。
続きを楽しみにしています。
湯二
和さん、コメントありがとうございます。
障害は発生したらすぐ解決しないといけない。
でも、未知のものはどうしても時間が掛かってしまいます。
そんな時は、辛いですね。踏ん張りどころなんですが、やっぱりしんどい。
楽しみにしていただき、ありがとうございます。
なるべく話として面白くするのと、ためになる知識を入れていきたいと思ってます。