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

【小説 エンジニアの事故記録】第十話 僕はインカコーラで

»

 職場が入っているビルの五階にあるサーバ室まで、幸一郎は一気に駆け上がった。
 さすがに辿り着いたときは息が少し上がっていた。
 昔、空手で鳴らした自分がそんなことでゼー、ゼー言ってることに苦笑いした。
 サーバ室の扉の前に辿り着き、スマホを取り出す。
 小山に電話を掛けると、彼はすぐに出た。

<おう、今開けるからな>

 サーバ室のドアがガチャリと開き、中から小山が出て来た。
 手には幸一郎のパスカードを持っている。
 それをふんだくる様に幸一郎は奪い取ると、そのパスカードを読み取り装置にピッとあてて、小山を押しのけるようにして部屋に突入した。

「おいおい、穏やかじゃねえなあ。まさか......」

 ヘラヘラ笑っている小山は、ちょっとからかおうとしただけなのだろうが、その態度に腹が立った幸一郎は、おっかぶせるように憎しみを込めてこう言った。
「その、まさか、だよ!」
「あらま......」

 声を荒げてそう伝えて来る幸一郎を見た小山は何かを悟ったようだ。

「大丈夫だよ。女は星の数ほどいるから」

 と、慰めにもならない慰めの言葉を掛けて来た。
 その薄味の慰みを耳にした幸一郎は、キレそうになった。

「お前には後で問い詰めたいことが、山ほどある!」
「は?」

 すっとぼけた様子の小山に余計に腹が立った。

(その見え透いた演技も、僕への仕返しか!?)

 小山にはその顔面に正拳突きをお見舞いしたかったが、先程脳内に思い出したばかりの大山先生の残像がこう言った。

---------------------------------------------------------------
「血気の勇を戒めること」
---------------------------------------------------------------

 そうだ、血気に逸ってはいけない。
 そう思いとどまった幸一郎は、気持ちを静める事に努めた。

(元はと言えば、お前がこんな計略を仕組まなければ、
 車も事故を起こさなかったし、
 パスカードも紛失しなかったし、
 渚沙にも振られなかったんだ!)

 と心の中で小山を呪詛することで気持ちを静めようとしたが、今はそれどころでは無いと、はたと気付いた。
 
(まずは売上履歴データテーブルが、GYOMU_DATA表領域に存在するかを確認しなければ!)

 幸一郎は急いで本番データベースに接続可能な端末に飛びついた。
 端末のスイッチを入れ、ID、パスワードを入力しログインする。
 デスクトップ画面が表示されTeraTermのショートカットをダブルクリックする。
 接続画面が表示され、本番データベースサーバのIPアドレスを入力し、SSH接続する。
 oracleユーザでログインした。そして、

「sqlplus adm/adm」

 と入力し、売上履歴データテーブル(URIAGE_RIREKI)の所有者であるadmユーザで、sqlplusを使いデータベースに接続した。

「おい、振られたからって、そんなにすぐに仕事に没頭するなんてよっぽどショックだったんだな!」

 同情してるんだか面白がってるんだが陽気な感じで小山が、「ポン」と、幸一郎の肩を叩いた。
 ヘラヘラと言い寄って来る小山の態度にイラついた幸一郎は、苛立ちを伝えるために強めにその手を払った。

「ごめん、ごめん」

 普段、割とおとなしい幸一郎が荒れているのを感じ取った小山は、気まずそうな顔をして自分の席に着いた。

「ところで、あれか? 23時にバッチが実行されるかどうか確認しに来たのか?」
「あ......ああ」
「真面目だな。いいことだ」

 幸一郎としては、鬱陶しいというよりもこれから行う作業を小山に見られたくなかった。
 もしも自分の作成したテーブルが意図した場所に作成されていなかった場合、何らかの対策を講じないといけない。

 そういった動きを見られたくない。
 隠れてやることじゃないということは分かっているが、プロジェクトが事故続きの中で自分までやらかしたことがバレたら、どんなお叱りを受けるか分からない。

 本来なら、幸一郎が作った売上履歴データテーブル(URIAGE_RIREKI)は、GYOMU_DATA表領域に置く必要がある。
 まず、設定がそうなっているかどうかを確認しなければならない。

(どうやって確認するんだろう......?)

 小山に訊くわけには行かない。
 ORACLEに詳しくない幸一郎はスマホで調べることにした。

「ORACLE 表領域 テーブル」

 と、google先生に検索ワードを投入して問い掛けた。
 すると、USER_TABLESテーブルのTABLESPACE_NAME列にテーブルが配置されている表領域が記載されているのが分かった。
 ネットに書いてあることを理解すると、売上履歴データテーブル(URIAGE_RIREKI)がどの表領域に置かれているかを確認するSQLを実行した。

「SELECT TABLESPACE_NAME FROM USER_TABLES WHERE TABLE_NAME='URIAGE_RIREKI';」

 そして、結果は無情にもこう出力された。

「USERS」

 結果が自分の思った通りでは無いことに唖然とし、同時に泣き出しそうになった。

「嘘だぁ......」

 だがこれが現実であり、全てはCREATE TABLE文のTABLESPACE句にGYOMU_DATAと記載せずテーブル作成をした幸一郎のせいであった。
 恐らく高田が作ったCREATE TABLE文をコピーしてDDLを作った際、TABLESPACE句を付けなかったのが原因だろう。
 高田の二の舞を演じてしまった自分を呪った。
 立ち止まってはいられない幸一郎は、先ほど渚沙に言われた通り、自分を落ち着かせるために深呼吸をすると、まずは時計を見た。
 22時55分。

(あと、5分しかないじゃないか!)

 小山とのやり取りや、調査ごとに時間を取られ過ぎていた。

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

(避けなければ、それだけは......)

 幸一郎は自分の小銭入れから小銭をひっつかむと、それを小山に無理やり握らせてこう言った。

「ちょっと、ジュース買って来てくれ!」
「え?」

 自分の作業をやっていた小山は、突然の幸一郎の依頼にあっけにとられた顔をした。

「自分で買って来いよ~」

 小山は不機嫌な顔で凄むように願い出る幸一郎に気圧されたのか、椅子ごと後ずさった。
 先程のことを許してくれと言わんばかりの媚びたようなニヤリとした顔をして許しを請うが、幸一郎はそれを無視してこう注文した。

「僕のおごりだから。あと、僕はインカコーラで」

 と、コンビニでは容易に扱ってい無さそうなドリンクを注文した。

「わかった、わかった」

 小山は仕方無さそうに言うと、ゆっくりと席を立ち買い物に行ってくれた。
 その隙に、幸一郎は売上履歴データテーブル(URIAGE_RIREKI)をUSERS表領域からGYOMU_DATA表領域にどうやったら移動できるか考えていた。
 ORACLEにそれほど詳しくはない幸一郎は、正攻法と言うか割とスタンダードなやり方を思い付いた。 
 具体的には、以下の方法で出来そうだと頭の中で考えた。

 1.売上履歴データテーブル(URIAGE_RIREKI)を、USERS表領域から削除する。
 2.TABLESPACE句にGYOMU_DATA表領域を指定したCREATE TABLE文で、売上履歴データテーブル(URIAGE_RIREKI)を、GYOMU_DATA表領域に再作成する。

「CREATE TABLE文が必要だな」

 テーブルを作り直すにあたりCREATE TABLE文が必要と思い、それが記載されたテキストファイルを探すことにした。
 データベースサーバのどこかに保存したであろうそれを、cdコマンドであちこち移動まくり、そして探しまくった。

「どこだ? どこだ?」

 額から汗が流れ落ち、顎を伝ってキーボードを叩く指先に落ちた。
 腕時計をチラと、見る。
 タイムリミットまであと10秒を切っていた。

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

 幸一郎は慌ててどうにかしようと思ったが、今からCREATE TABLE文を編集して、作り直すというのは10秒では時間が足りない。
 そうして、何かしたくても何もできずに手をこまねいているうちに時計の針は23時を指した。

「遂に動いた......」

 どうすることも出来ず、ただ溜息を吐くように呟いた。
 とうとう、バッチが動作する時間を迎えてしまった。
 幸一郎はスマホを手に取ると急いで、google先生に検索ワードを伝えた。

「ORACLE テーブル 容量」

 結果、USERS_SEGMENTSのBYTES列にテーブルの容量がByte単位で記載されているということが分かった。
 GYOMU_DATA表領域は100MByteである。
 それに対して、売上履歴データテーブル(URIAGE_RIREKI)にどれくらいのデータが今現在入ってきているか知りたかった。
 そんなことを知ったところで、どうすることも出来ないのだが、何もしないでバッチが無事に終わるかコケて終わるかを待つのはどうにも気持ちが落ち着かなかった。
 幸一郎は今日のデータが100MByte未満であることに賭けた。
 google先生が教えてくれたテーブルの容量を確認するSQLを実行し、今現在の売上履歴データテーブル(URIAGE_RIREKI)の容量を確認した。

「SELECT BYTES/1024/1024 FROM USER_SEGMENTS WHERE SEGMENT_NAME = 'URIAGE_RIREKI';」

 と入力し、リターンキーを押した。

「80」

 と表示された。
 BYTES列で表示される結果を1024で二回割り算している結果なので、MByte表示される。
 と言うことは、80MByteだ。
 つまり、売上履歴データテーブル(URIAGE_RIREKI)には、現在80MByteのデータが入って来ている。
 USERS表領域は100MByteだ。
 あと、20MByteちょいであふれてしまう。
 もう一度、容量確認SQLを実行して確認してみると、

「90」

 と表示され、ますます焦る。
 全身の毛穴がパカっと開き、汗が一斉にドット出た。

(お願いです。100MByteにならないで......)

 幸一郎はもう一度、祈るように確認SQLを実行した。

「99」

 誰もいないサーバ室。無機質な空調の音が鳴り響く。その中で、生身の幸一郎の叫び声も鳴り響いた。

「うおおおお~」

つづく

Comment(6)

コメント

atlan

インカコーラなんて、夜にどこに探しに行けばいいんだ? ドンキか?

湯二

atlanさん。
コメントありがとうございます。

私はインカコーラをカルディで見掛けては良く買っていますね。
ドンキはあまり行かないんで、今度行ってみてあるか確認して見ます。

atlan

カルディだと営業時間考えると多分アウトなんで、やはり深夜でも開いてるドンキでしたね

湯二

atlanさん。

コメントありがとうございます。
情報ありがとうございます。

ありましたよ。ドンキに。
久々に行きました。爆買いの人たちが多かったですね。

atlan

先ほどカルディで一缶購入、ドンキも徒歩で行ける範囲には有るんだけど一本だけならカルディの方が楽

湯二

atlanさん。

連続コメントありがとうございます。

カルディはサービスのコーヒーが飲めるから、私もつい行ってしまいますね。
ドンキは道幅が狭くてどうも。。。
インカコーラは孤独のグルメって漫画で知ってから、自分の中ではブームです。

コメントを投稿する