部長の心配
システムの「心臓」こと、Oracle Databaseに日々携わるたろーちゃん。
ある日、たろーちゃんの席に部長がやってきました。何かあったのでしょうか?
部長「たろーちゃん、いつも御苦労様。」
たろー「あ、部長!お疲れ様です。」
部長「今、H課長の所で某プロジェクトが進んでいるのだが、データベースの設計構築は新人のTさんが担当しているらしいんだ。ちょっと心配だから、色々とレビューしてやってくれないかな。」
たろー「はい、分かりました。」
部長の指示を受けたたろーちゃんは、早速H課長の元に向かいました。
たろー「H課長、お疲れ様です。」
H課長「ああ、たろーさんか。」
たろー「部長から、今H課長が進めているプロジェクトのデータベース部分のレビューをするよう、言われまして。」
H課長「・・・。いや、大丈夫だよ。」
たろー「え?でも部長から『新人のTさんが担当している』とお聞きして・・・。」
H課長「Tさんは優秀だ。データベースなら私も分かるし、レビュアーは間に合ってるよ。」
たろー「え、でも部長から・・・。」
H課長「いいんだ。わざわざ、ありがとう。間に合ってるから。」
そう言って、H課長は半ば強引に会話を打ち切り、パソコンに向かい始めました。
たろーちゃんは、奥歯の間に物が挟まったような感覚で、自席に戻りました。
なんなのだろう?
H課長の態度に何か違和感を覚えたたろーちゃん。
そんな所に、隣の部署の先輩Dさんが通りかかりました。
Dさん「どうしたの、たろーちゃん。浮かない顔して。」
たろー「あ、先輩。」
Dさん「何かあったのかい?」
たろー「それが・・・。」
たろーちゃんはDさんに、事の成り行きを説明しました。
Dさん「ああー、H課長か・・・。なるほどね。」
たろー「先輩、何か知ってるんですか?」
Dさん「昔、一緒に仕事したことあるんだけど、あの時は、やりにくかったなぁ・・・。」
たろー「と、いうと?」
Dさん「自分以外の部署に対しては物凄く排他的な所があってさ。
全て『自分色』に染めないと気に入らない性格みたいなんだ。」
たろー「なんですか、それ??」
Dさん「なんて言ったらいいのかな?
『権力闘争』っていうか『領空侵犯』っていうか・・・。
まぁ、直球しか投げれないたろーちゃんには理解できないかもね。」
たろー「???」
Dさん「まぁ『触らぬ神に祟りなし』だ。
関わらないほうが、たろーちゃんの身のためだよ。気にすんな。」
たろーちゃんにはDさんが言ってることがサッパリ分かりませんでした。
心配になったたろーちゃんは、新人Tさんと直接会話することにしました。
たろー「Tさん、今データベースの設計構築を担当してるんだって?」
新人T「あ、たろーさん!」
たろー「何か困ってることない?」
新人T「(たろーさん、ちょっとこっちへ・・・)」
Tさんはたろーちゃんを人目に付かないよう、執務スペースから連れ出しました。
たろー「どうしたの?」
新人T「実はH課長から『たろーさんとは話しをするな』って言われてまして…。」
たろー「なんだって?どうして?」
新人T「分からないです。……ありがたいのですが、これ以上は勘弁して下さい…。」
そう言うとTさんは自席に戻ってしまいました。
たろーちゃんは状況が理解できませんでした。
『話をするな』って、凄い徹底ぶりだな・・・。
私は知らないうちにH課長に嫌われていたのかもしれない。
よくわからないけど、これ以上、首を突っ込むとTさんにも迷惑が掛かりそうだ。
もうそっとしておこう。
たろーちゃんは、この件から手を引くことにしました。
その後、H課長のプロジェクトは無事カットオーバーを迎えました。
しかし・・・。
障害発生
ある日のこと、先日カットオーバーしたH課長のシステムでデータベース障害が発生しました。
大規模なシステムなので、部長命令で急遽たろーちゃんも召集されました。
部長「全員集まったね。それではH課長、状況を説明して下さい。」
H課長「はい。先ほど、ストレージ障害が発生して、Oracle Database が停止しました。現在、ディスクの交換作業中です。ディスク交換が済み次第、バックアップからの リストア を行います。」
部長「バックアップがあるなら、ひとまず安心か。」
H課長「はい、大丈夫です。・・・全く、ストレージチームは何をやってるんですかね?
そんな簡単に壊れるようなストレージを使ってもらっちゃ、困るんですけど。こっちはいい迷惑ですよ。」
たろー「・・・。」
部長「では、リストア作業は念のため、たろーちゃんにやってもらおうか?」
H課長「いいえ、部長。Tさんもいるし、大丈夫です。」
部長「しかし・・・。」
H課長「たろーさんは、このシステムの構成を知らないです。よく知っている私とTさんで対応したほうが早いです。」
部長「・・・分かった。」
新人T「H課長、ディスク交換が完了したらしいです。」
H課長「わかった。すぐに復旧作業に取り掛かろう。」
復旧作業
たろー(大丈夫かな・・・。)
たろーちゃんは妙な胸騒ぎがしていました。
すると、血相を変えた部長がたろーちゃんの所へ。
部長「たろーちゃん、すぐ来てくれ。復旧作業がうまくいかないらしい!」
嫌な予感が的中しました。
たろーちゃんは部長と共に、Tさんの元へ向かいました。
部長「Tさん、たろーちゃんに状況を説明して。」
新人T「はい。ストレージの スナップショット 機能でディスクの内容を戻したのですが、データベースがOPEN出来ないんです。」
たろー「落ち着いて、Tさん。それだけじゃ分からないよ。
H課長、お手数ですがバックアップ構成を教えて頂けますか?」
すると、H課長は渋々といった感じでバックアップ構成を説明し始めました。
● Oracle Database のバージョンは11gR2。Standard Edition Oneシングルインスタンス構成。
● アーカイブログモードで運用しており、障害発生時までのリカバリが出来るようオンラインバックアップを取得している。
● バックアップは RMAN を使用しておらず、ストレージの スナップショット 機能で取得している。
● バックアップ構成は図1のとおり。
図1
H課長「そして、Oracle Database で使用しているデータ領域のディスクが壊れた。」
図2
H課長「データ領域には、SYSTEM表領域やUSERS表領域といった全データファイルが格納されているので、当然 Oracle Database が停止する。そこで、バックアップ領域から逆 スナップショット で リストア を行った。」
図3
H課長「そして、アーカイブログを適用して障害発生時までリカバリしようとしたんだが、エラーが発生して、リカバリが出来ない状態なんだ。」
図4
新人T「完全リカバリは諦めて、不完全リカバリも試みたんですが、OPEN出来ないんです。」
たろー「 RMAN を使ってないのか。」
H課長「 RMAN なんて、遅くて使い物にならないよ。ストレージの スナップショット 機能を使ったほうが断然早いさ。」
たろー「・・・。」
たろー「まぁいいや。Tさん、アラートログを見せてくれる?」
新人T「はい、これです。」
ALTER DATABASE RECOVER CONTINUE DEFAULT
Media Recovery Log /opt/app/oracle/oradata/orcl/arch1_4_990531250.dbf
Errors with log /opt/app/oracle/oradata/orcl/arch1_4_990531250.dbf
Errors in file /opt/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_pr00_5452.trc:
ORA-00308: アーカイブ・ログ/opt/app/oracle/oradata/orcl/arch1_4_990531250.dbfをオープンできません。
ORA-27037: ファイル・ステータスを取得できません。
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
ORA-308 signalled during: ALTER DATABASE RECOVER CONTINUE DEFAULT ...
たろー「必要なアーカイブログが無いって言われてるな。H課長、バックアップはどういう手順で取得してますか?」
H課長はスクリプトを見せながら、バックアップ手順を説明し始めました。
● スナップショット を取得するため、alter database begin backup を実行する。
● データ領域の スナップショット を取得する。
● アーカイブログ領域の スナップショット を取得する。
● スナップショット 取得後、alter database end backup を実行する。
● alter system archive log current を実行する。
● 領域確保のため、アーカイブログファイルを全削除する。
たろー「・・・。」
H課長「どうだ?完璧だろう?」
たろー「・・・H課長。この手順じゃ、リカバリ出来ないですよ。」
H課長「なんだと?!」
たろー「これ、ちゃんと リストア &リカバリ試験をやってないでしょう?」
H課長「!」
今回はここまで。
はたして、アーカイブログの無い状況から、復旧出来るのでしょうか?