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

【小説 エンジニアの事故記録】第三十八話 英雄(仮)

»

 月曜日、22時00分。

 データベースのデータはほとんど消えていた。
 正確には、300ある業務テーブルのうち250テーブルは0件になっていた。

 幸一郎はTeraTermを使いデータベースサーバにログインした。
 rootユーザになり、/home/oracleディレクトリに移動した。
 lsコマンドを実行し、DB_restore.shが存在することを確認した。

<......そのシェルを......実行すれば......データセンターにあるバックアップ使ってリストアしてくれる......ただ......>

 そこで石川からの電話は途切れた。
 彼女は電波状態の悪い場所にいるらしく何度掛け直しても、すぐにこうして電話が切れてしまう。
 お互いに会話が聞き取り辛く、そのせいで認識に齟齬があるようだ。
 言っていることが今一噛み合わない。
 幸一郎は石川が教えてくれたDB_restore.shを実行するかどうか迷っていた。
 DB_restore.shの中身をcatコマンドで見ても、よく分からなかった。
 ディスクの機能に詳しくない幸一郎は、そのコマンドの羅列が具体的に何をしているのか分からない。
 石川からはシェルの中身を、ざっくりと以下のように教わってはいる。

  ①バックアップディスクとデータベースが使用しているディスクを同期する。
  ②同期が完了したら二つのディスクを切り離す。

 幸一郎としては、詳細までよく分からないシェルを実行することにためらいがあった。
 加えて、このシェルを実行した後、アーカイブログをあてる必要があると石川は言っていた。
 アーカイブログについては本で勉強したが、言葉と役割を理解しただけで実戦でどう使われているかはよく分からない。
 迷ってばかりで何もしない幸一郎に、周囲は焦りと苛立ちを感じ始めているようだ。
 お客である情シスの富永が腹立たし気にこう問い掛けて来た。

「どれくらいで修復できるの?」
「あ......え、と。い......約一時間くらいです」

 幸一郎は思わず口から出まかせを言ってしまった。
 何か言わなければ、この場が済まないような気がしたからだ。

「『約』とか、『くらい』とか濁されても困るよ。はっきりした時間分からないの? こっちは早急に回復してもらわないと。業務が止まってて迷惑なんだけど」
「い......一時間です......」

 幸一郎は富永に押される形で、自信なさ気にそう答えてしまった。
 吉田課長はそんな幸一郎を見て、確認するかのようにこう訊いて来た。

「データセンターに取ってあるバックアップから戻すことが出来るんだね?」
「は......はい。ただ......」
「ただ、何?」

 先程、石川は電話が切れる直前、何か言おうとしていた。
 それが何なのか気になる。

「ブルルル......」

 その時、スーツのポケットに入れていたスマホが振動したのを感じた。
 石川からの着信だと思った幸一郎は取り逃すまいと急いでポケットに手を突っ込み、それを取り出した。
 焦りと緊張で手の平が汗ばんでいた。
 そのせいで掴んだスマホがスルリと幸一郎の手から逃げるようにして飛び出した。
 幸一郎はそれを掴もうとするが汗で滑って取り逃がしてしまう。
 それを何度も繰り返したことで、さながら鰻の摑み取りをしているような態になった。

「何やってんすかぁ」

 室井が唇を震わせ、笑いをかみ殺している。
 この場で笑うのは不謹慎だとは思っているのだろう。
 しかし、我慢出来ないようだ。

「大竹君」

 床に落ちる寸前のスマホを渚沙が取り上げ、幸一郎に手渡した。
 幸一郎は渚沙に何度も頭を下げ電話に出た。

「もしもし......」
<ごめん、電話切れちゃ......さっき......言お......とし......たのは>
「あの、もしもし」
<そのシェル......本番運用開始してから一度も使用したことが無いの>
「え?」

 運良く肝心なところで電波が綺麗に入った。
 だが、電話はそこで切れた。
 今度は幸一郎から何度も掛け直すが繋がらない。

「どうした?」

 吉田課長がスマホを持ったまま立ち尽くす幸一郎の顔を覗き込んだ。

「一応バックアップは取ってあります。ただ......あの、運用開始後にシェルを使って戻したということは無いそうで......」

 運用開始後にバックアップから戻すというのは大災害でビルごとデータベースが損壊した時か、こういった大きな事故の場合しかない。
 そういう大事が起こること無く一生を終えるシステムは多い。
 それはそれで良いことだが、やはり何かあった時のためにバックアップとその仕組みは必要なのだ。
 本システムは運用して一年経つが、そういったことは今回が初めてだったのだ。
 幸一郎の発言に周囲が緊張で凍り付いた。

「確か運用開始前のシステムテストでは、このシェルでバックアップからのリストアが出来ることを確認したはずだ。運用開始後に実行したことが無いだけで、シェルとしての実績はある。出来るはずだよな。大竹君」

 吉田課長は幸一郎に念を押すように問い掛けた。

「目的としてはデータベースを事故前の状態に戻すこと。もしこの方法に確証が無ければ代替案を考えてくれよ。DBAである君の判断に任せるから」

 吉田課長は丸投げをすることで、まるで全ての責任を幸一郎に押し付けるかのような言い方をした。
 代替案何て考える余裕も時間も無い。
 幸一郎としては、このシェルを実行してみるしかない。
 それを分かっていて吉田課長はそう言っているのだろう。

「大竹君。前だよ」
「え?」
「石川さんも言ってたじゃない。泥臭く前に進むしかないって」

 渚沙にそう言われた幸一郎は我に返った。

「大竹君。君は私に勇気を出して思いを伝えてくれたじゃない。結果はどうあれ......」

 渚沙のその言葉に、周囲が野次馬的な聞き耳を立てたのが分かった。
 こんな状況でもゴシップに興味を持ってしまうのが、人間という者なのだろう。
 ただ、「結果はどうあれ」という言葉は余計だと思った。

「あの勇気をもう一度出して」
「分かりました」

 幸一郎は意を決すると、ディスプレイに向かいDB_restore.shシェルを実行した。
 画面が応答待ち状態になった。
 きっと今、データセンタにあるバックアップがデータベースにリストアされているのだろう。
 これでバックアップ取得時点に戻るはずだ。
 その後、手動でアーカイブログを適応しリカバリをする。
 これで事故発生前の状態に戻るはずだ。
 問題は運用開始前にテストした時のバックアップサイズと、運用開始後、サービスが動き出してからのバックアップサイズが異なることだろう。
 テストした時はテストデータをバックアップし、それをリストアしたに過ぎない。
 はっきり言ってデータ量は大したことは無い。
 反対に運用開始後のデータは一年分はある。
 これをリストアするのはそれなりの時間が掛かるはずだ。
 幸一郎はその場を取り繕うために当てずっぽうで一時間掛かると言ったが、内心それ以上掛かるだろうと思っていた。

「ふう、まあ目途がついたみたいで良かった......」

 富永が眉を下げ、ホッとしたように溜息をついた。
 復旧方法が分かり実際にその対応が行われていることで安心しているのだろう。
 周囲にも安堵というか弛緩した空気が流れ出した。
 このシェルが無事に最後まで走り抜けてくれれば、取りあえずは事故からのリストアは完了するのだ。
 正確にはその後、業務の動作確認はあるのだろうが業務サービスの停止がいつまで続くか分からないという不安だけは無くなった。

「さすが大竹君だ!」

 吉田課長が幸一郎の肩を叩いた。
 小山の力を借りずとも解決の見通しが立ったことが余程嬉しいのだろう。
 幸一郎に缶コーヒーまで差し入れてくれた。
 もちろん周囲の者たちにも配っているが、幸一郎のコーヒーは少し値段が高い150円のプレミアムローストだった。
 吉田課長的には何も出来ないのは心苦しく、少しはリーダーらしいことがしたいのだろう。

「事故を起こした時はどうしようかと思ったけど、大竹君が来てくれて助かった」

 事故を起こした張本人の福井が目を潤ませながら、幸一郎に握手を求めて来た。
 その事故を誘発させた、悪の張本人・赤江課長の手先である毛利がスマホ片手に戻って来た。
 皆から数歩離れた場所に立ち、この状況を静観している。
 幸一郎はその毛利に対して「やったぜ」と言わんばかりにフッと笑い掛けた。
 毛利は特に表情も変えず、その辺の椅子を引き寄せ音もたてずに座った。
 幸一郎は福井と握手した時、ふと胸に熱いものが込み上げて来るのを感じた。
 皆からの賞賛。
 ギリギリの状態から生還したという安堵感と幸福感。
 それらが一体になり、幸一郎の身体を快感となって駆け巡った。

(障害から復旧させると、英雄になれる!)

 幸一郎の頭に、悟りが舞い降りた。
 それは開発担当者として作業している時では、味わえなかった気持ちだった。
 アドレナリンが出まくった錯乱した頭の中で、ふっと思い浮かんだ。

(僕のやりたかったことはこれか!)

 就職して五年目だ。
 幸一郎はプログラマと言う仕事を辛いとは思いながらも楽しんでやっている。
 だが、それが本当にやりたいことかというと、本当にそうなのかいつも疑問を持っていた。
 将来を考えて転職サイトも覗いたが、余計に自分のやりたいことが分からなくなった。
 いつしか、皆もきっとそうなんだと思い、そう思うことで自分の気持ちを偽るようになっていた。

「大竹君! シェルが終わったみたいだよ!」
「はい!」

 渚沙の声を聴き、幸一郎は端末の方に戻った。
 幸一郎が周囲の賞賛に応えている間、渚沙は冷静にじっとディスプレイを注視していたのだ。
 画面には「Restore Completed!」というメッセージが出力されている。
 何と予想に反してリストアは10分で完了した。

「やけに早すぎない?」
「え、ええ......」
「だって、本番データって一年分でしょ。それを戻すのに10分って......」

 渚沙の疑問に多少の不安を感じはしたが、幸一郎はこの結果を信じるしかなかった。
 幸一郎は吉田課長にリストアが完了したことを伝えた。
 それを聴いた吉田課長が小さくゆっくり拍手すると、周囲もつられてパラパラと拍手しだした。
 幸一郎は鳥肌が立った。
 この場の主役は自分で、その自分は今まさに英雄になろうとしていたのだ。

(気持ちいい~)

 幸一郎は恍惚の表情を浮かべた。

 『石川は、どうしてデータベースを好きになったのだろう?』

 という疑問はこれで解消された。
 恐らく彼女も、幸一郎と同じような経験をしたのだろう。
 死地からの生還はデータベース道の醍醐味だった。
 これと似た気持ちを感じたことがある。
 幸一郎は高校二年の頃、県大会の個人形の部で優勝した。
 決勝戦の時は、負けたら自分の人生は終わりだという気持ちで臨んだ。
 それだけ緊張していたし、後戻り出来ないと思っていた。
 大山先生の期待も裏切れない。
 空手の個人形競技は紅白に分かれて、二名ずつ行われる。
 幸一郎は黒帯の上に紅い帯を締め演武した。
 演武が完了した後、審判員四人が全て紅い旗を上げたことで、幸一郎の優勝が決まった。
 同時にインターハイ出場が決定した。
 その時は、嬉しいというよりも、生き残ったという安堵感の方が強かった。
 場外で観戦していた大山先生の元に駆け寄り、礼をする。
 そこで先生と他の部員や応援に来てくれた生徒からの賞賛を受けた時、幸一郎はまさに今と同じような気持ちになっていた。

「皆さん、まだ完了では無いです。これからリカバリ処理を行います」

 幸一郎は歓喜に沸き立つメンバーとお客を制するようにそう言った。

「むう、さすが。この短期間でDBAらしくなってきたな」

 吉田課長は顎に手を当て感心したように言った。
 富永はスマホで電話を掛けている。

「あ、部長。そろそろ復旧出来そうです。はい。トップ画面の方は復旧したら解放させます」

 その声が幸一郎の耳にも届いた。
 リカバリが無事に完了すれば後はもう業務の仕事だ。
 幸一郎はこの勢いでリカバリ作業も上手く行くと思った。

「ブルルル......」

 振動するスマホを取り上げた。
 丁度良く石川から電話が掛かって来た。

<大丈夫?>
「はい。リストアまで上手く行きました」
<そう。良かった。次はリカバリね。方法は......>

 石川はSQLコマンドによるリカバリ方法を幸一郎に伝えた。
 幸一郎はそれを一字一句漏らすまいと、書き殴る様にプリント用紙にメモした。

「なんか、随分電波状況が良くなりましたね」
<うん。研修所からちょっと離れたところに移動したからね>

 石川が滞在している研修所は九州の山奥にある。
 ブロンズ情報システムが保有する保養施設で行われている。
 その周囲には電波塔が立っておらず、スマホのディスプレイにはほとんどアンテナが表示され無いのだそうだ。
 石川は一体どんな研修を受けているのだろうか。
 電話の向こう側では荒々しい掛け声のようなものが聴こえてくる。
 精神鍛錬的なことを課す研修なのだろうか。
 教官らしき者の怒鳴り声も聴こえてくる。
 小山に言わせると「もう二度と受けたくない研修」とのことだが、石川はそんな所から一時的とはいえ抜け出して大丈夫なのか心配になった。
 そう思っていたら、石川との交信が途切れた。

 リカバリは以下のコマンドをデータベースサーバで実行すれば完了する。
  ①sqlplus / as sysdba
   sysユーザでsqlplus接続する。
  ②startup mount
   マウント状態でデータベースを起動する。
  ③recover automatic database
   リストアしたデータベースにアーカイブログを適応する。
   これで事故直前の状態まで戻る。
  ④alter database open;
   データベースをオープン状態で起動する。

 幸一郎は①から順にコマンドを実行した。
 渚沙が横で打ち間違いが無いか監視してくれた。
 リストアして『バックアップ取得時点』にまで戻ったデータベースに③でアーカイブログを適応する。
 これで事故直前の状態まで持って行く。

「はやっ!」

 ③の処理が数秒で終わった。
 アーカイブログをあてるということはデータ処理を行うということなのだから、それなりに時間が掛かると思われたがこれもさっきのリストア同様あっさりと終った。

「う~ん」

 渚沙はディスプレイを見つめたまま考え込んだ。

「きっと、あてるアーカイブログが少なかったんですよ」

 幸一郎は渚沙にそう言うことで、自分にも大丈夫だと言い聞かせていた。
 ふと不安がよぎった。
 それだけこの異常な時間の短さが気になるのだった。
 先程までの英雄気分はどこかに消えつつあった。
 周囲のメンバーは、終わりが見えたことで和やかムードに包まれていた。

「さあ、大竹君。あと一歩だ。データベースを起動しよう」
「は......はい」

 吉田課長に急かされた幸一郎は、④を実行した。
「データベースが変更されました。」というメッセージが表示され、周囲に歓声が上がった。

「大竹君。本当に戻ったかデータを確認してみようよ」

 浮かれた周囲を無視するように渚沙がそう提案した。
 幸一郎は頷くと、業務ユーザでsqlplusに接続し直した。
 そして、select文を実行した。

「select count(*) from uriage_rireki;」

 もしもデータベースが完全に復旧したなら、この売上履歴テーブルには数十万件のデータが格納されているはずだ。

「0」

 出力された結果を見た幸一郎は、呟いた。

「戻ってない」

つづく

Comment(0)

コメント

コメントを投稿する