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

【小説 愛しのマリナ】第三十七話 SHUTDOWN ABORT

»

 12月23日火曜日、教育環境データメンテナンスの当日。

 昼休み、六階の開発サーバ室で真里菜と森本は、罠の最終調整を行っていた。

「こっちが、教育環境のシステムに接続するアイコン」

kyoiku.png

 森本が教育環境接続用保守端末に置いてあるアイコンをマウスで指示した。

「IPアドレスがZZZ.ZZZ.ZZZ.ZZZのデータベースサーバに接続されるんだよね」

 と、真里菜は確認した。
 森本は無言でうなずいた。
 ZZZ.ZZZ.ZZZ.ZZZは、教育データベースサーバに振られている。
 本来は新本番データベースサーバに振られるべきIPアドレスである。

「新しいアプリケーションサーバにZZ.ZZZ.ZZZ.ZZZへ接続するプログラムを、田中さんと堀井さんにデプロイしてもらいました。後で、お礼を言っといてください」
「分かったわ」
「そして、こっちが、本番環境のシステムに接続するアイコン」

honban.png

 森本が本番環境接続用保守端末に置いてあるアイコンをマウスで指示した。

「IPアドレスがYYY.YYY.YYY.YYYのデータベースサーバに接続されるんだよね」
「はい。こっちはアイコンの画像を、教育環境用から本番環境用に変更するだけで済みました」

 YYY.YYY.YYY.YYYは、新本番データベースサーバに振られている。
 本来は教育環境データベースサーバに振られるべきIPアドレスである。

「それにしても、接続先そのものを変えるってこういう事だったんですね」
「tnsnames.oraが変えたら、久米にバレちゃうじゃない。だから、この方法にしたの。これと、森本君が作ってくれた文書があれば完成ね」


---------------------------------------------------------------

 その日の定時後、久米と真里菜は六階の開発サーバ室にて、会議卓を挟んで向かい合っていた。
 久米は研修から帰って来たばかりで、少し疲れている様子だ。
 昨日、真里菜に殴られた右頬が痛々しい。
 今日一日、終日電話に出れないとのことだったので、この職場が入っているビルで何が起きているかは知らない。

「今日はお客さんが教育用として使ってる教育環境のデータをメンテナンスします。具体的には、開発環境で作り込んだ教育用会員データをインポートします。これが手順書です」

 久米から渡された手順書には、きちんと「接続先を確認する」という手順が記載されていた。

「接続先が教育環境データベースかどうかを確認するんですね」
「ああ、そうだ」
「保守端末は教育環境に接続されるように設定されてるんですよね。やる必要あるんですか?」
「まあ、念のためだよ。荒川はそれをやらなかったから事故を起こしたんだ」

 真里菜は手順書を上からざっと眺めた。
 開発環境で作り込んだであろうダンプファイルをimpコマンドでインポートするようだ。
 作業前にキチンとバックアップを取っている。

「じゃ、時間が来たから始めますか」

 時計の針は午後六時を指していた。
 久米は立ち上がると、部屋の右端にある保守端末があるところへ向かった。


---------------------------------------------------------------

 二人は教育環境接続用保守端末に向かって座った。
 作業者は久米、確認者は真里菜だった。

「select name from v$database;と打ってください」

 久米は真里菜に指示されて、コマンドを打った。
 教育環境データベース名である「endb_kyoiku」が出力される。

「よし」

 久米は頷いた。

「コマンドプロンプトを起動し、expコマンドでテーブルのバックアップを取ってください」

 真里菜がそう指示すると、久米は慣れた手つきで操作を行った。

「コマンドは?」
「exp adm/adm@endb file=adm.dmp log=adm.log owner=adm statistics=none feedback=1000です」
「了解」

 会員データが全て入ったadmスキーマのテーブルを、全て取得するコマンドだ。
 全テーブルが対象になるので取得に三十分近く掛かった。

「10GByteか......この前より大きくなってるな」

 取得したダンプのサイズを見て、久米はそうつぶやいた。
 サイズが大きくなるということは、データ量が増えたということだ。
 それだけシステムの利用者や会員が増えたのだろう。

「sqlplus adm/adm@endbにログインして、admスキーマの全テーブルをtruncateしてください」
「はい」

 久米は「@truncate_all_table.sql」と入力し、実行した。
 事前に用意したtruncate_all_table.sqlには、全テーブルのデータを切り捨てるコマンドが書かれている。

「あらかじめ開発環境で作成したデータをimpでインポートしてください。コマンドは、
imp adm/adm@endb file=adm_kyoiku.dmp log=adm_imp.log fromuser=adm touser=adm feedback=1000 statistics=none ignore=y
です」

 本番環境のデータをもとに、開発環境で教育用に作成したデータをインポートした。
 全テーブルが対象なので、一時間ほど待った。

「よし、終わった」

 久米がホッとしたように言った。
 やはりこの男でも、お客の環境をメンテナンスするのは緊張するようだ。

「さあ、画面から確認して見ましょう」

 久米は kyoiku.png をクリックし、教育環境のシステムに接続した。

「は......?」

 教育環境のデータはインポートしたデータになっていなかった。
 久米の顔が青ざめて行った。
 真里菜はその横ですました顔をしていた。

「どういうことだ?」

 慌てながら、honban.png をクリックし、本番環境のシステムにも接続する。
 そこには先程インポートした教育用データが表示された。

「マジか......」

 久米の額から脂汗がじっとりとあふれ出て来た。
 次に急いで教育環境接続用保守端末のtnsnames.oraを開き、HOST句とSID句の部分を確認する。

  <<tnsnames.ora>>

  ENDB=
  (DESCRIPTION =
  
(ADDRESS_LIST =
  
(ADDRESS = (PROTOCOL = TCP)(HOST = YYY.YYY.YYY.YYY)(PORT = 1521))
  
)
  
(CONNECT_DATA =
  
(SID = ENDB_KYOIKU)
  
)
  
)

「どういうことだ......tnsnames.oraは教育環境に向くようになっている......」

 HOST句に書かれているIPアドレスは、教育環境(YYY.YYY.YYY.YYY)のもので、
 SID句に書かれているインスタンス名も、教育環境(ENDB_KYOIKU)のものだった。
 tnsnames.oraは改ざんされていなかった。
 久米は訳が分からないようで、慌てていた。
 自分の頭では説明できない事態が起きていて、その謎を解く術が分からない。

「ち......違う。これは本番環境じゃない。教育環境だ。その証拠にtnsnames.oraは変えられていないんだ。だけど......何故、本番環境のデータが置き換わっているんだ?」
「へえ......なんでそんなにtnsnames.oraにこだわるんですか? もっと別の違いだってあるかもしれないじゃないですか」

 涼しい表情の真里菜はスマホをいじりながら、意地悪く言った。
 すると、突然、

「くそっ......誰かが何かを変えたんだ! そうとしか思えない。おれが事故を起こすように誰かが何かを仕掛けたんだ!」
「自分が荒川さんに、したように?」
「は......?」
「早く何とかしないと、上にバレちゃいますよ」

 真里菜にそう言われた久米は、冷静さを取り戻したかのようにこう言った。

「お前、何か知っているな。僕が事故を起こすように何か仕込んだだろ......」
「いいえ」
「今のうちに素直に、白状したらどうだ。今なら悪いようにはしない。だがこのまま黙っていれば、お前が何かを仕込んだことを上に報告するからな」
「どうぞ。だけど何を変えたか分からないのに、どう報告するんですか?」
「くっ......」
「どうなってるんでしょうね~。作業責任者としてちゃんとして頂かないと困りますよ」

 そこで、丁度よく森本が開発サーバ室に入って来た。
 と言うか、真里菜との打ち合わせ通り、LINEで合図が来たので入って来たのだった。

「森本さん!」

 久米はすがるような目で森本を見た。
 こいつなら何か解決してくれるかもしれないという期待を持っているようだ。

「久米さん、もう作業始めてしまいましたか? 大事なことを話さないといけないと思って来たのですが......」

 森本は、一枚のA4用紙を見せた。
 そこにはこう書かれていた。

「データベースの入れ替えについて

 12月23日火曜日、お客様の要望により以下の作業を行う。

 教育環境データベースサーバと本番環境データベースサーバの入れ替えを行う。
 具体的には、この二環境のデータを入れ替える。
 従って、12月23日火曜日から、
 教育環境データベースサーバは本番環境データベースサーバとして、
 本番環境データベースサーバは教育環境データベースサーバとして稼働する。

 以下、構成。

 <<12月22日(月)まで>>
  ・本番環境データベースサーバ
   IPアドレス  :XXX.XXX.XXX.XXX
   ホスト名   :HONBAN01DB
   データベース名:ENDB_HONBAN

  ・教育環境データベースサーバ
   IPアドレス  :YYY.YYY.YYY.YYY
   ホスト名   :KYOIKU01DB
   データベース名:ENDB_KYOIKU

 <<12月23日(火)から>>
  ・本番環境データベースサーバ
   IPアドレス  :YYY.YYY.YYY.YYY
   ホスト名   :KYOIKU01DB
   データベース名:ENDB_KYOIKU

  ・教育環境データベースサーバ
   IPアドレス  :XXX.XXX.XXX.XXX
   ホスト名   :HONBAN01DB
   データベース名:ENDB_HONBAN

 ■スケジュール
  ・12月23日火曜日
   10:00-12:00
    教育環境データベースサーバと本番環境データベースサーバのデータを入れ替える
   13:00-17:30
    動作検証
  
 この構成で、来年3月末まで運用を行う。

 グローバルソフト興業 第一システム部 部長 宮川」

「な......なんじゃこりゃ!?」

 12月23日火曜日。今日だ。

 この文書が本当なら現在、本番データベースサーバと教育データベースサーバは、データベースのデータが入れ替わった状態で存在することになる。
 つまり、教育データベースサーバで作業しているつもりが、実は本番環境データベースサーバに接続して作業していることになる。
 それは、本番環境データベースのデータを書き替えてしまったことを意味した。

「し......知らん! こんなことは!? 何で......いつ......こんなことが決まったんだ!?」
「今日突然です。久米さんが、研修でいない間です。グローバルソフト興業とお客さんとの間で何か政治的なことがあったんじゃないですか?」
 
 こういった作業が、突然その日に決まってその日に実行されることは、まずあり得なかった。
 だが、パニック状態になった久米にはそのあり得ない事態も本当のことのように思えるようで、酷くバタついている。
 目の前の事故を自分で解決できないかという方向に、頭が行ってしまって戻ってこないようだ。
 普段の冷静な久米なら、この文書のことを顧客や上長に確認するだろう。

「バカな! 僕には何も相談も、連絡が無かったぞ!」
「だって、研修に行ってて、電話取れないって言ってたから連絡しませんでしたよ」

 森本は無表情でそう言った。

「くっ......こんな大事なことを! 上田さん、さっきの手順書の読み合わせの時になんで、指摘してくれないんだ!?」
「私もこのことを今知りました。今日は、夕方出社だったから知らなかったんです」

 真里菜は口から出まかせを言った。

「くっ......」

 頭を抱え込んで呻いた。
 作業責任者でありチームリーダーの久米としては、いつまでもこうしているわけには行かなかった。
 作業時間は今日の午後九時までと決められている。
 それまでに本番データを戻し、教育環境のデータメンテナンスを終わらせる必要がある。

「おいっ......データは戻せるのか?」

 久米は真里菜に問い掛けた。

「いいんですか? 上に報告せずにリカバリ作業して? バレたら、荒川さんや、うちの大沢みたいに処分されますよ」
「今のうちにやってしまえば、分からん! さっさとやれ!」
「さっき手順書の中で作業前にエクスポートしたデータはありますが、あれだと......ちょっと」
「あれだと......なんだ?」
「本番環境は、今この作業中にもお客様が使用されていたはずです。三十分以上前に取得したバックアップで戻していいものかどうか」

 既に事故が起きてから今までのやり取りだけで、三十分も経過していた。

「え......」
「この三十分の間で本番システムが使われたことによって、増えたデータを破棄するわけには行きませんよね」
「うう......」

 手順書で取得したexpによるダンプは使えないのである。
 そのダンプだと、事故前の状態にしか戻らない。
 こうやって、うだうだしてる間に増えたデータが戻らないのである。
 このダンプを取るという作業は、形骸化した作業だった。
 つまり、無くてもいい作業だったのである。

「まあ、本番データを元に戻せないことは、無いです。」
「な......何だ? それは」

 久米はうなだれた。真里菜に助けを求めるような視線で、問い掛けた。

「本番データを戻してあげますよ。ただし、条件があります」
「やはり......そうだよな......」

 真里菜が何を言おうとしているか、分かっているようだ。

「罪を認め、荒川さんと、弊社の大沢に謝罪してください」
「うう......」
「早く決めないと、本番環境を使用しているお客さんが異変に気付きますよ」

 久米は観念したという風に、天井を見上げた。

「ああ......わかった」

 真里菜は教育環境用の保守端末からTeraTermを起動し、IPアドレスの入力項目に「YYY.YYY.YYY.YYY」と入力した。

「本番データベースサーバに接続しました。今から作業します」

 そう言うと、sqlplusでsysユーザで接続するし、次のように入力した。

「SHUTDOWN ABORT」

 と入力した。
 それを見た久米は

「な......何するんだ!?」
「リカバリするにはデータベースを止める必要があります」
「バ......バカ! 止めるにしても勝手に......」
「上に報告したらバレるんでしょ?」

 真里菜は久米が止めようとするのを無視して、リターンキーを押した。

「う......うわああ」

 久米が驚きの声を上げているうちに応答メッセージが返って来た。

「instance shutdown.」

 これで本番環境データベースは強制停止された......少なくとも久米にはそう見えたはずだ。
 データまで破壊し、システムまで停止させた。大損害であり大事故である。
 訴訟ものだ。

「な......なんてことを」
「大丈夫です」

 真里菜はからっとした明るい声で言った。

「ご安心を。今まで現行本番環境だと思って触ってたのは、新本番環境データベースですよ」

つづく

Comment(0)

コメント

コメントを投稿する