常駐先で、ORACLEデータベースの管理やってます。ORACLE Platinum10g、データベーススペシャリスト保有してます。データベースの話をメインにしたいです

【小説 データベース道は一日にしてならずだよ!】 痛い目見ろ!編 その5

»

 バッファキャッシュを減らし共有プールを増やしたことで、業務サービスを停止すること無く共有プール不足は解消できた。
 しかし、新たな問題が発生した。
 その問題とは、システム全体のパフォーマンス低下だった。
「まあ、この方法が一番手間が少ないし、再起動しなくていいからね。ちょっとこのやり方に賭けてみたけどダメだったね」
 あっけらかんとした様子で桜子は答えた。
 その表情からは余裕すら感じられる。
(何でこの人は、こんな切羽詰まった事態になっても涼しい顔でいられるんだ......?)
 雄一は桜子の横顔を見ながらそう思った。
「バッファキャッシュのヒット率がどんどん下がってたのは気になってたのよ」
 桜子はアプリケーションサーバからsqlplusでデータベースに接続していた。
「バッファキャッシュを減らす前はキャッシュヒット率が95%だったけど、減らしてからは徐々にヒット率が下がって行って、今じゃ70%台になってる。これじゃシステムが遅くて使い物にならないわね」
 バッファキャッシュヒット率を測定するSQLを定期的に実行し、パフォーマンスが低下していくのを把握していたのだ。
 こうなることは、既に予測済みだったのである。
「キャッシュヒット率が下がっているってことは、その分ディスクI/Oが増えている......だからパフォーマンスが下がっているってことですか?」
 雄一は自分なりに理解したことを桜子に確認してみた。
「その通り」
 バッファキャッシュとは、ユーザの検索結果を一時的にキャッシュしておくORACLEのメモリ領域のことである。
 バッファキャッシュを多く確保しておき、キャッシュ出来るデータを多くすることで、パフォーマンスに影響を与えるディスクI/Oを軽減することが出来る。
 そのバッファキャッシュを2GByteから1GByteに減らせば、その分キャッシュ出来るデータが減り、ディスクI/Oが増えてしまう。
 桜子としては手間と時間を考えて、1GByteでもなんとか行けるのではと、えいやっと見切り発車したがそう上手くはいかなかった。
 変更前の2GByteが適正な値だったかどうかは定かではないが、減らしたことによってパフォーマンス低下を招いたとなれば、この対応は失敗だったと言える。
「最大同時100人のオペレータがシステムを使うんだぞ!今15人くらい使ってこの有様じゃ、動いても使い物にならない!」
 小倉が吐き捨てるように言った。
 所詮お前もこの程度かというような視線を桜子に向けて。
「とりあえず、戻してくれ! 現在処理出来てる分だけでも実行速度を落としたくない」
 小倉の一声で、共有プールとバッファキャッシュの設定は元に戻すことになった。
 結局、振出しに戻っだだけのことだった。だが時間だけは過ぎていた。
「安田、何か方法はないのか?」
 途方に暮れた様子で福島が訊ねる。
「あります」
 みんなの視線が一斉に桜子に集まる。
 雄一は桜子の余裕に満ちた表情を見て思った。
(そうか......安田さんは原因も把握できてて次の策も思い付いてるからこんな事態でも平気でいられるんだ......この短時間でそれだけのことが出来るなんて......。闇雲に試してダメだったら、その場から逃げることばかり考える俺みたいな人間とは大違いだ......)
 雄一は桜子を羨望のまなざしで見つめていた。

(俺もこんな人になりたい!)

 雄一はそう思った。
 それは雄一がこの業界に入って初めて憧れの人を見つけた瞬間だった。
「それは......」
 桜子が口を開くと同時に、居合わせた全員がその答えが何なのかを期待した。
 もうこれで終わりにしてくれというような憐れみを乞うような気持ちも同時に感じられる。
「再起動してメモリを綺麗にします」
「な......何だって!?」
 桜子はそう言うとデータベースサーバのコンソールに向かった。
「結局、データベースを再起動するしかないんだな......。呆れたな、これじゃあ、この男の子と変わらんじゃないか!」
 小倉は雄一を顎でしゃくった。
「データベースサーバを一台ずつ再起動するからサービスは停止しません」
 桜子は落ち着いた様子で答えた。
「どういうことだ!?」
 桜子は、サーバ室の壁に引っ掛けてあるホワイトボードに、マッキー(細の方)でシステム構成図を描いた。
「このデータベースはRAC二台構成。だからデータベースサーバを一台ずつ、正確に言うとインスタンス単位に再起動すれば、データベース的には稼働を続けられます」

1.JPG

「まず、アプリケーションサーバは二台あります。ユーザはクライアント端末から接続すると、どちらのアプリケーションサーバに行くかロードバランサによって振り分けられます」
 桜子は、先ほど中山とアプリケーションサーバについて調べて分かったことを説明した。
「アプリケーションサーバからデータベースサーバへの接続について説明します。tnsnamesを調べるとアプリケーションサーバ#1はデータベースサーバ#1へ優先的に行くようになっています。反対に、アプリケーションサーバ#2はデータベースサーバ#2へ優先的に行くようになっています」
 皆、押し黙ってホワイトボードを凝視している。
 必死で桜子の説明を理解しようとしているようだ。
「アプリケーションサーバ#1に振り分けられたユーザは、データベースサーバ#1に接続して処理してるわけだな。もしも、データベースサーバ#1がダウンしてたら、アプリケーションサーバ#1に振り分けられたユーザはどうなる?」
 福島が訊ねる。
「データベースへの接続が切れます。そして再接続でデータベースサーバ#2へ行くようになっています。反対に、データベースサーバ#2がダウンしたら、アプリケーションサーバ#2に振り分けられたユーザは、データベースサーバ#1へ行くようになっています」
 桜子は構成図の横に、さらに図を描いて説明した。

2.JPG

「では、もう時間がないので、今の説明を頭に入れて私の指示通り皆さん動いてください」
 桜子は手をパンパンと叩いて、作業に取り掛かるように促した。
「ちょっと、待ってくれ、えっと......データベースサーバを一台ずつ再起動するからシステムは停止しないってことか?」
 小倉が不安そうに訊ねる
「いいから、私の指示通りに動いて下さい。やってるうちに分かりますから!」
 桜子の迫力に、小倉は気圧され「はい!」と素直に答えてしまった。
「中山君は、まずアプリケーションサーバ#1にログインしているユーザを調べて!有馬は、データベースをインスタンスごとに落とすコマンドを用意して!」
 有馬だけ呼び捨てのままだった。
 中山はアプリケーションサーバのコンソール画面に向かい、タスクマネージャを起動した。
 ユーザタブを選択し、ログインしているユーザを確認した。
「安田さん、アプリケーションサーバ#1にログインしているユーザは五人いる」
中山が、大声で桜子に伝える。
「つまり、データベースサーバ#1に接続しているユーザは五人いるということだ」
 特に何もすることが無い福島が解説役になって、雄一にお知らせする。
「中山君、そのユーザIDをメモして小倉さんに渡して」
 桜子に指示された中山は、ユーザIDを走り書きしたノートの切れ端を小倉に渡した。
「小倉さん、このユーザに一旦システムを抜けてもらうようお願いしてください!」
「分かった」
 小倉はコールセンター室へ向かった。
 中山はアプリケーションサーバのコンソール画面を注視し、その五人のユーザが抜けるのを、今か今かと待っていた。
「......よし、五人全員抜けました!」
「じゃ、有馬、データベース#1を停止して!」
 雄一の頭に、桜子がやろうとしている事のイメージが湧いてきた。
(そうか、こういうことか!)

3.JPG

(①データベースサーバ#1を停止している間、データベースサーバ#2だけでシステムを稼働し続ける。
②データベースサーバ#1を起動したら、データベースサーバ#2を停止する。
データベースサーバ#2を停止している間、データベースサーバ#1だけでシステムを稼働し続ける。
③最後にデータベースサーバ#2を起動する。
二台のデータベースサーバを順繰りに再起動させることで、片輪走行でもいいから常にデータベースの起動状態を維持しようとしているんだ。
これなら、ユーザの処理は一時中断するけれど、データベース停止時間はゼロで済む)
 RACの特性を生かしたやり方だった。
「行ける......これなら行けるぞ!」
 雄一は確信を持ってつぶやいた。
 雄一は、データベース#1のインスタンスを停止するコマンド「srvctl stop instance -d cent -i cent1」を入力し、リターンキーを押した。
 30秒経った......画面からは何も応答が無い。
 更に、30秒経っても落ちない。
(何でだ......)
 雄一の額からじっとりと汗が吹き出し、それが頬を伝って滴り落ちる。
 アラートlogには相変わらず大量のORA-4031が出続けている。
 データベースが停止しなければ、次の作業に進めない。
「有馬、どうした?」
 データベースサーバのコンソールの前で立ち尽くしている雄一を見て、中山が心配そうに声をかけた。
「データベースが落ちないんだ......」
「えっ!?落ちないって?普通そんなことあるか?逆ならわかるけど......」
 中山の頭の中では落とすよりも、立ち上げる時に何かあると思っていたようだ。
「安田さん......どうすればいいですか?」
 画面を見つめたまま、震える声で雄一は問いかけたが、桜子から返事がない。

バタッ!

 突然、雄一の背後で人が倒れる音がした。
「おい!安田!大丈夫か!?」
 福島の大声を聞いて、雄一は振り返った。

 雄一の三歩先くらいのところで、桜子はうつ伏せになって倒れていた。


つづく

Comment(0)

コメント

コメントを投稿する