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

【小説 エンジニアの事故記録】第七話 放置の君

»

 一旦弱まった雨が少し強くなりだした。
 駅が近いのか車の量が多くなってきた。
 幸一郎はスピードを緩め渋滞の列の中ほどを、ノロノロ運転で進んでいた。
 渚沙が降りると言っていた角まで、あと300メートルほどある。

「い......今、何て?」

 幸一郎は先程、渚沙が発した言葉が信じられ無かった。
 一つは自分が嘘つき呼ばわりされているということと、
 もう一つは、もっと重要で、小山と渚沙が付き合っているということである。

「今日、小山君は、はじめっから来ない予定だったんでしょ?」
「え......」
「車に乗ってきたり、花束持ってきたり、告白なんてして来たら、最初から二人きりになろうとしてたのが分かるよ」
「なるほど......」

 と、納得してる場合じゃないなと幸一郎は思った。
 渚沙は小山が来るというから期待して晩餐会に参加したというのに、実際は幸一郎一人だけだったということと、自分が嘘を付かれていたことに腹が立っているのだろうと思った。

「好きになってくれたのはありがたいけど、初めから小細工しないでほしいな」

 その小細工の一部を考えたのが小山だったのだが、新事実を知った今となってはそんなことを言ったところで、どうなるわけでもないと思った。

「嘘ついてたのは、ごめん......」

 ハンドルを握る手に自然と力が入った。
 心を運転に逸らさなければ、惨めさで押し潰されそうになる。
 と言うかどんな状況でも、運転中は運転に集中すべきである。
 だが、気持ちは二人の関係を探ることに引き戻されてしまう。
 小山は渚沙と付き合っているのに、何で自分に渚沙を引き合わせようとしたのだろうか。

「小山君と付き合ってるなんて、知らなかったよ。職場では全然そんな素振りは見せてなかったよね」

 幸一郎は敢えておどけた様子で言った。
 だが、声は震えていた。

「そりゃ、職場ではそんな付き合ってます何て雰囲気出さないでしょ。ふつー。でも、これって付き合ってるのかなって思う時もあるよ」
「え? 一体どういうこと?」

 幸一郎は少しだけ光明が差したような気がした。

「だって、五年間もほっとかれたまんまだよ」
「は?」

 幸一郎は混乱した。
 五年前から付き合っているということは、社会人なりたての頃からだ。
 そして、そんな長期間ほっとかれていて、かつ渚沙はそれでも小山と付き合っていると自負している。
 ただ、その相手の小山は渚沙と付き合っている意識が無いように見える。

「そ......それって付き合ってるって言うの? それとも放置プレイ?」

 ギャグを交えながら、おどけつつ、問い直してみた。
 そうすると、渚沙は真顔でこう答えた。

「だって、キスだってしたことあるんだよ」
「わっ!」

 突然、目の前に猫が飛び出して思わず跳ね飛ばしそうになった。
 急ブレーキをかけて間に合ったが、心臓がドキドキして落ち着かない。
 猫に驚いたのもあるが、それ以上に渚沙の口から発せられた「キス」と言う単語には度肝を抜かれた。

「大丈夫?」

 車を停め、ハンドルを支えに肩で息をする幸一郎を、渚沙は心配そうに見ている。

「だ......大丈夫......」

 後ろの車からクラクションを鳴らされ、煽られるように車を発進させる。
 雨は落ち着いてきて視界は良くなって来てはいるはずだが、なぜか前方が霞んで見える。
 それは、どうやら雨のせいじゃないらしい。
 と、同時に小山への怒りが湧いて来た。

(あいつめ、何の理由か知らんが、僕をからかってそんなに楽しいか!?)

 自然とアクセルを踏む足に力が入った。

(だいたい、あいつの仕事の仕方からして、しつこいし気に食わないところがあったんだ! ×●△※■◇!!)

 と、坊主憎けりゃ袈裟まで憎くなったのか、この場ではあまり関係のない仕事のやり方にまで、心の中でだが悪態を吐いた。
 眉間にしわを寄せ無口になった幸一郎を不安げに見ている渚沙が、こう問い掛けた。

「大竹君のバッチ、今日初めて動くね」
「あ、ああ、そうですね。大丈夫ですよ。ちゃんと今日確認しましたから」

 不意に渚沙に仕事の話を振られて、幸一郎は我に返った。
 彼女としては話を変えることで、気まずい雰囲気を払拭したかったのだろうか。

 今日の23時に、当日の売上テーブル(URIAGE)と売上明細テーブル(URIAGE_MEISAI)を結合した結果を、売上履歴データテーブル(URIAGE_RIREKI)に格納するバッチが動作する。
 昼間、小山と一緒にちゃんとそのバッチがcronに登録されていることを確認した。
 スクリプトもテーブルも、問題無く作成されていることは確認している。

 カーオーディオのディスプレイに表示されている時間を確認すると、21時30分だ。
 うまく行っていれば今頃、虹の端公園でベンチに座りながら、手を握りつつ夜景を眺めていたことだろう。
 だが、この勝負は初めからうまく行くはずが無かったのだ。
 理由はよく分からないが、小山が何かを仕組んでいて自分を弄んだという疑いが、幸一郎の頭の中でぐるぐる堂々巡りしていた。

(あのやろお、借りを返すだの何だのいい子ぶりやがって、僕が渚沙に振られるのを想像して今頃ほくそえんでやがるのか! それならそれで僕は吉田課長の肩を持つからな。覚悟しとけよ)

 と、吉田課長の威を借りようとしているのは情けないとは思いつつも、再び心の中で口汚く同級生を罵り少しでも溜飲を下げようとした。
 その時、はたと思い当たった。

(もしかして、小山のやつ、靖子と僕のことを知ってて、今仕返しをしているのか......!?)

「靖子......」

 思わず、渚沙が横にいるのに幸一郎は、高校三年生の時に付きあっていた彼女の名前を呟いてしまった。
 幸い余りにに小さいな声で呟いたので、その名前は渚沙の耳には届かなかったようだ。

 靖子は元々は小山の彼女だった。

 だが、高三の夏のある日、ある出来事がきっかけで、靖子は小山を捨て幸一郎と付き合うようになった。
 そのことを二人、小山に隠し通したつもりでいた。
 だから、幸一郎はいつも小山と自分には貸し借りは無いと思っていた。

「表領域......」

 不意に、幸一郎の耳にその言葉が入り込んできた。
 窓の外を眺めている渚沙が、そう言ったのだ。
 仕事話の流れからその単語が出たのだろうが、なにか妙に不自然な印象を与えた。

「ひょうりょういき......がどうしたんですか?」
「いや、この前、高田さんがやらかしたじゃない。あの時も、表領域が原因だったなって」

 開発、保守をしている婦人服通販売上管理システムはORACLE11gというデータベースソフトウエアを使っている。
 表領域とはORACLEの専門用語で、簡単に言うとデータを格納するテーブルの配置先のことである。
 テーブルを作るとき、その配置先である表領域を高田は間違えてしまったのだ。
 
「で、そのテーブルにデータが大量に入って来て、表領域がいっぱいになってシステムが動かなくなったんだよね」
「そ、そうだったね」

 このプロジェクトでは業務用テーブルは、GYOMU_DATAという専用の表領域に作成するルールになっている。
 GYOMU_DATA表領域は、業務データを格納できる十分な容量と、パフォーマンスチューニングが施されている。
 だが、高田が間違えてテーブルを配置した先であるUSERS表領域は、空き容量がほとんどなかった。
 業務データが投入されることを想定してUSERS表領域は設計されていなかったからだ。
 日中に大量のデータがUSERS表領域に配置されたテーブルに投入されたことで、USERS表領域の容量がいっぱいになった。
 遂にはデータをデータベースとして格納できなくなり、システムが動かなくなったのである。
 テーブルを正しい表領域に配置していれば、このようなことは起きなかったのである。

「初歩的なミスですよね......」

 脳みそが仕事のことに向いたため、少しは気が落ち着いて来た。
 嫌なことを忘れたい時は仕事にのめり込むのもありかな、と幸一郎は思った。

 高田が作ったCREATE TABLE文にはTABLESPACE句が無かった。
 CREATE TABLE文のTABLESPACE句には配置先である表領域名を記載するのだが、それがTABLESPACE句ごと無かった。
 TABLESPACE句の記載が無い場合、テーブルを作成したユーザに設定されているデフォルト表領域が、その配置先になる。
 テーブルを作成したadmユーザのデフォルト表領域はUSERS表領域だった。
 そのため、高田の作成したテーブルはUSERS表領域に配置されたのである。

<<CREATE TABLE文にTABLESPACE句の記載がある場合>>

表領域とテーブル1.jpg

<<CREATE TABLE文にTABLESPACE句の記載がない場合>>

表領域とテーブル2.jpg

 と、思い至った時、幸一郎は自分の作成したテーブルのことが心配になった。
 cron、バッチの中身、テーブルまでは確認したが、テーブルの配置先である表領域まで確認はしていなかった。
 そう思うと、CREATE TABLE文のTABLESPACE句に自分が意図した表領域を記載したかどうか、自分の記憶が曖昧なことに気付いた。

(高田さんのCREATE TABLE文をコピーして作ったっけ......)

 しかも確か、高田ののしくじったCREATE TABLE文をコピーして作成した記憶がある。
 そして、TABLESPACE句を意識していなかったのも覚えている。
 記憶が確かなら幸一郎が作成した売上履歴データテーブル(URIAGE_RIREKI)は、USERS表領域に作成されていることになる。
 DBAなら表領域まで意識で来ていたかもしれないが、プログラマである自分にはそこまで意識が回っていなかった。
 そして、一緒に確認した小山も気付かなかった。
 ダブルチェックの工数を掛けてまで入念に確認をしていながら。

「やばい......」
「どうしたの?」

 高田の二の舞になると思った幸一郎は、小山への怒りも、渚沙に振られた悲しさも、靖子のことも忘れ、売上履歴データテーブル(URIAGE_RIREKI)が指定の表領域に作られていることを確認したいという衝動に駆られていた。

「バッチが大丈夫なら良かった。君のバッチで登録したデータを、私のバッチが参照するからさ」

 渚沙はほっとしたような顔をした。
 それは気まずい雰囲気をうまく仕事の話にすり替えることで払拭出来た、ということに対する安堵感から来たものかもしれない。
 だが幸一郎は、そんな渚沙とは反対に表領域のことで頭の中がいっぱいになり、動揺しきっていた。

(僕は、ちゃんと正しい表領域にテーブルを配置したのだろうか)

 USERS表領域は容量が100MByteしか取っていない。
 対してGYOMU_DATA表領域は、全ての業務データを格納できることを想定して5,000GByte取ってある。
 これは前に、DBAの石川に聞いたから確実な情報だ。
 そして、幸一郎が間違えてUSERS表領域に作成した売上履歴データテーブル(URIAGE_RIREKI)には、23:00に流れるバッチで、少なくとも100MByte以上のデータは入って来る予定だ。
 と言うことは、このまま手をこまねいていれば予定通りバッチが実行され、100MByte以上のデータがUSERS領域を圧迫し挙句の果てには容量不足で、バッチがこけてしまう。
 そうなると、お客が前日分の売上データを参照出来ない。
 またも事故と言うことで、吉田課長がお客からお叱りを受けることになり、ひいては幸一郎も叱責を受けることになる。
 
 もはや、運転も、渚沙のことは上の空になっていた。

「あ! 前!」

 渚沙が前方を指さしながら、大きな口を開けて叫んだ。

「え!?」

 渚沙の声に弾かれ我に返った幸一郎は、ブレーキを思いっきり踏んだ。
 しかし、間に合わなかった。

つづく

Comment(0)

コメント

コメントを投稿する