Session by Shinnosuke Akita
2016.09.12
35 歳で Oracle DBA になった私が
データベースを壊して学んだこと
Self Introduction
秋田 進之助 (Shinnosuke Akita)
株式会社バルテック所属  4 年目
 ‐データベースの構築・トラブルシューティングな
ど
・ Oracle DBA をやっています
・最近は PostgreSQL も触り始め
・休日はランニングと家族サービス
・大衆酒場巡礼もしています
BLOG
sake-and-database.blogspot.com
DBA にどうやってなりましたか?
みなさんはどうやって DBA になりましたか?
アプリ開発からの転向?
最初から運用系のエンジニアだった?
いろいろな方がいらっしゃると思います。
DBA になってから(なるまでに)どんな勉強をしてます
か?
Oracle Master で資格の勉強したけれど、
そう何度もインストールをするようなことがあるわけでも
なく、手順どおりに操作をするだけでは、動くことはわ
かってもどうもしっくりきませんでした。
DBA として仕事をするために
どんな勉強をしていますか?
…業務経験豊富な人 どこだって欲しいだろう
…資格を持っている人 ではだめ??
Oracle Master は勉強したけれど、
「資格だけだと意味がない」なんてことを言われることも
あります。
業務経験は業務しないと得られないが、ではどうやって経
験すればよいのだろうか?
どんな人ならば DBA として迎え入れてくれ
るだろう?
某品川のデータベースを少し触っていたものの、
OracleDBA の経験はほとんどなし
・ OracleMaster の取得
・自宅 PC(Windows) で Oracle を触ってみた
   - インストールしてみた
   - テーブルやインデックスを作成してみた
未経験の場合で案件に入る場合は、
「自宅で触っているか」が問われた。
私の場合
私の場合
なかなかデータベースの仕事に就けなかった私は、
こんな気持ちでした。
データベースの勉強をして準備をしていたつもりでしたが
、仕事をするにはあまりに心もとなかった。
・ Linux のコマンドをあまり覚えていない
 ご存じの通り、 Oracle は Linux や Unix 環境での導入が
 かなりの数があり、ある程度はコマンドを調べずとも
 ファイル操作できるようにする必要がある。
・あやふやな知識
 バックアップ作業の手順など、試験対策の丸暗記
 だけで、知識として定着していなかった。
そして仕事をはじめた
同じサーバに2つのデータベースがある環境で、
データベース A のリカバリをしようとしたが、正常稼働
しているデータベース B にアーカイブを当ててしまっ
た!
原因は制御ファイル記述誤り。
試験環境だから良かったものの、データベース B の復旧
に相当時間がかかってしまった。
事件は起きた
同じ現場で前にいた人が、自宅に環境構築をしているとい
う話を聞いて、作ってみることにした。
まずは、この3点を考えてみる。
サーバはどうするか?
OS はどれを使うか?
DB はどのように構築するか?
自由に使える環境が必要だ!
まずは環境を考えてみよう。
主に3パターン考えられる。
・あまっている PC などを使う
・サーバやクラウド環境をレンタルする
・手持ち PC の中に仮想環境をつくる
検証環境用に新たに物理 PC を用意したり、サーバを借り
たりするには費用がかかり、お小遣い制の身では厳しい。
→ 仮想環境を採用!
まずは環境を整えることから
仮想環境として、 VirtualBox をサイトからダウンロードし
、インストールする。
VirtualBox で検索をすればソースは比較的見つけやすいは
ずだ。
仮想環境の用意
Virtual Box をインストールが完了したら、
次は仮想マシンの設定が必要。
仮想マシンで使用する OS とメモリやハードドライブの設
定を行う。
業務では、 Windows 版でのインストールはほぼないはず
なので、 Linux か Unix の導入が必要だ。
OracleLinux などを入手できるのであればベスト。
できなければ、無料で手に入る OS …を使用
次に仮想環境用の OS を準備
それから、仮想環境の OS のインストールを行う。
仮想マシンの CD/DVD ドライブとして適当なフォルダを
設定し、そのフォルダにダウンロードしてきた OS のイ
メージファイル (iso 形式のもの ) を格納し、仮想マシンを
起動すると OS のインストールが始まる。
次に仮想環境用の OS を準備
ようやく、データベースのインストールを開始。
Oracle Database のソースをダウンロードし、インストー
ルを開始する。
とはいえ、資格試験のようにすべて整った状態で、起動し
て終わりとはいかない。
・ X Windows ( GUI 表示ができる)がインストールされ
ていない
・関連パッケージのインストール
など、躓いては調べて解決してを繰り返していく。
まだまだ準備が必要だった。
ようやくデータベースのインストールだ!
検証環境は整った!
バックアップを取ってから、データベースを壊して復旧で
きるかを試してみよう♪
データベースを壊す
何を壊すか考えてみた
・データファイル(★現場でやってしまった)
・オンライン REDO ログファイル
・制御ファイル
・初期化パラメータファイル
ファイルを消してみて変化を見てみた。
何を壊すか?
DB が起動している状態でデータファイルを移動してみた
。
アラートファイルには特にメッセージなし。
rman を起動してみて様子を見てみる。
データファイルを移動してみた
$ mv rman01.dbf rman01.dbf.bk
$ rman
RMAN> connect target /
RMAN> connect catalog rman/XXXXX;
connected to recovery catalog database
ORACLE error from recovery catalog database: ORA-01116 :
error in opening database file 5
ORA-01110: data file 5 :
‘/u01/app/oracle/oradata/balloon/rman01.dbf’
ORA-27041 : unable to open file
Linux error : 2 : No such file or directory
Additional information : 3
エラーは出たものの、他にアラートはでてこない。
System 表領域も移動してみても事象変わらず。
一旦 DB を落として上げ直してみることにした。
DB が落ちなかったので、 shutdown abort して落としてから
、再度起動してみる。
データファイルに触らない限り大丈夫?
SQL> shutdown immediate;
ORA-01116: error in opening database file 1;
ORA-01110: data file 5 :
‘/u01/app/oracle/oradata/balloon/system01.dbf’
ORA-27041 : unable to open file
Linux error : 2 : No such file or directory
Additional information : 3
DB 起動時に MOUNT 状態で停止。
ファイル移動後の REDO ログは残っていたため、データ
ファイルを元に戻し、
alter database recover datafile 1;
でリカバリ後、データベースオープンできた。
このように、ファイルの動きを手軽に確認できるのが
手持ち環境の魅力だ。
DB が起動できない・・・
ORA-01157 : cannot identify/lock data file 1 - see DBWR trace
file
DB エンジニアとして仕事をしていくためには、
資格などで得た知識ももちろん役に立つのだが、
資格取得自体が目的となり暗記に走りがちである。
実際に業務に就く際に求められるのは、知識のほかに経験
である。経験は業務に就かないことには得られずらいのだ
が、業務に近い形での「手持ち環境での検証」を行うこと
で、代わりとすることはある程度は可能ではないか。
ネット上にも検証ネタはたくさん見つけることができるは
ず。気になることは触って試して、楽しい検証ライフを過
ごしましょう!
まとめ

35歳でDBAになった私がデータベースを壊して学んだこと